Skip to main content

Poker chip CSS only checkbox

For this Sunday Funday project, I decided to make a poker chip checkbox out of pure CSS.

DEMO



The idea is that it will flip on its right edge like when people flip chips between their fingers. This can be improved by using images to get a correct dashed edge or make it more lifelike but this is CSS only.


Tutorial

1. The markup
We need a container to set the background and the size and width, we need the label to be clickable anywhere, input for the checkbox, top and bottom of the chip.

<div class="container">
 <label for="chip-checkbox"></label>
 <input type="checkbox" name="chip" value="1" id="chip-checkbox">
 <div class="bottom-side"></div>
 <div class="top-side"></div>
</div>
2. Hide the input

input {
 visibility: hidden;
}
3. Set the width and height of the background/container

.container {
 width: 80px;
 height: 40px;
 border-radius: 50px;
 background-color: #18894B;
 position: relative;
        box-shadow: -3px 3px 1px 0px #3e3b3b6b;
}
4. Make the label fit the container
*we also need the z-index so we pick up all the clicks if you remove this you cannot click on the chips


label {
 z-index: 1;
 width: 80px;
 height: 40px;
 border-radius: 50px;
 position: absolute;
 left: 0px;
}
5. Create the chips
The chips will sit on top of each other so that when we animate it they will flip correctly.
Turns into this (blue is behind)



.bottom-side, .top-side {
 width: 22px;
 height: 22px;
 border-radius: 100%;
 position: absolute;
 top: 3px;
 left: 4px;
 display: block;
 margin: 0;
}
.bottom-side {
 background-color: white;
 border: 6px dashed #0D0088;
}
.top-side {
 background-color: white;
 border: 6px dashed #880000;
 backface-visibility: hidden;
}
6. Animation
The first thing we need to do is add some perspective to the container, this allows the CSS to animate in 3d.

.conatiner {
 perspective: 800px;
}
Then we need to add the transition properties to the chips. This sets the speed, the start (origin) point of the animation and tell it we are using 3d.
.bottom-side, .top-side {
 transition: all 1s ease;
 transform-origin: right;
 transform-style: preserve-3d;
}
Then we need to animate it when the input is checked. We move it to the position on the right using left 7px and rotate it to get the flip. Once its un-checked it will go back to the start position.
* the ~ selects all the divs next to the input.
.container input[type=checkbox]:checked ~ div {
 left: 7px;
 transform: rotateY( -180deg );
}
7. Final touches Once the animation is all set we just need to add the words to the chips these can be anything.
.top-side:after {
 content: "Out";
 position: absolute;
 top: 3px;
 left: 0px;
}
.bottom-side:after {
 content: "In";
   position: absolute;
 top: 3px;
 left: 5px;
 transform: rotateY( 180deg );
}
DEMO 
Thanks for reading folks!
 If you liked it feel free to leave a comment or a share, I would be most grateful.

Comments

Popular posts from this blog

Ionic RSS feed using Feednami

Tutorial of how to make a RSS feed using Feednami which is an alternative to google api which no longer works. This is a basic example and can be improved. First go ahead and make a new ionic project $ npm install -g cordova ionic $ ionic start exampleProject blank Now find index.html and insert... <script src="https://storage.googleapis.com/feednami-static /js/feednami-client-v1.0.1.js"></script> Into the header, then in <ion-content> below Ionic Blank Starter insert a new div <div id ="feed" ng-controller="feedCtrl"> </div> Open app.js, now we are going to make the controller from Feednami that will get our rss feed. .controller('feedCntl', function(){ var url = 'http://daringfireball.net/feeds/articles' feednami.load(url,function(result){ if(result.error){ console.log(result.error) } else{ var entries = result.feed.entries for(var i = 0; i < entri...

Sunday funday project - LightReact

Sunday fun day project - LightReact Update every week So I'm in my third year (finally!) and decided to do more things this year (2017)  1. To increase my skills and 2. To have fun! This year we are having our end of year show at The University of Winchester and I wanted to make a VR game for Google cardboard. The winner at the end of the day would get a £10 steam gift voucher. Below is my WIP for this mini project. Week 1 - inspiration and 3d modelling  I wanted to make a very simple game for VR, no not a horror game. LightReact is based on a game you would typically play at an arcade where you have a bunch of lights and you have to switch them off as fast as possible. However, instead of switching them off with your hands you use your eyes. The example in the video below. So you get the point you look at them they switch off. The person to do it in quickest time wins.  The wonderful world of blender  I am primarily a dev...

Signing apk from ionic

This post will show you how to sign your apk manually, from ionic framework for release. Recently I signed my first apk from ionic and ran into some issues that will be ironed out in this blog. 1. You will need to have the sdk and jdk / jdr tools installed. 2. Have a ionic project with the Android platform installed. LETS START You need to build your app using below in the cmd line then move that project-release.apk file into this directory   ionic build android --release exampleApp\platforms\android MAKING THE KEYSTORE You then need to make the key store in that file and write in all the info. Do not lose the key file and keep a record of the information. keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 SIGN THE APK Now we have to sign the apk jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name no...