[CSS]対応ブラウザはWebkit系だけだけど、美しいエフェクトを備えたラジオボタン
Post on:2012年8月24日
見た目だけでもCSS3で美しくスタイルされたラジオボタン、クリックすると更に美しいアニメーションのエフェクトが仕込まれています。
デモはWebkit系ブラウザ(Chrome, Safari)でご覧ください。
まずは、アクティブ時の拡大から。
ラジオボタンのアクティブで拡大
別のラジオボタンのクリック時が、更に素晴らしいです。
光点がアニメーションで移動
ラジオボタンの選択が移動するのは、分かりやすいですね。
実装は下記のようになっています。
HTML
<input type="radio" name="name" checked /> <input type="radio" name="name" /> <input type="radio" name="name" /> <input type="radio" name="name" /> <input type="radio" name="name" />
CSS
body {
padding: 50px;
background-color: hsl(0,0%,20%);
}
input {
-webkit-appearance: none; /* remove default */
display: block;
margin: 10px;
width: 24px;
height: 24px;
border-radius: 12px;
cursor: pointer;
vertical-align: middle;
box-shadow: hsla(0,0%,100%,.15) 0 1px 1px, inset hsla(0,0%,0%,.5) 0 0 0 1px;
background-color: hsla(0,0%,0%,.2);
background-image: -webkit-radial-gradient( hsla(200,100%,90%,1) 0%, hsla(200,100%,70%,1) 15%, hsla(200,100%,60%,.3) 28%, hsla(200,100%,30%,0) 70% );
background-repeat: no-repeat;
-webkit-transition: background-position .15s cubic-bezier(.8, 0, 1, 1),
-webkit-transform .25s cubic-bezier(.8, 0, 1, 1);
}
input:checked {
-webkit-transition: background-position .2s .15s cubic-bezier(0, 0, .2, 1),
-webkit-transform .25s cubic-bezier(0, 0, .2, 1);
}
input:active {
-webkit-transform: scale(1.5);
-webkit-transition: -webkit-transform .1s cubic-bezier(0, 0, .2, 1);
}
/* The up/down direction logic */
input,
input:active {
background-position: 0 24px;
}
input:checked {
background-position: 0 0;
}
input:checked ~ input,
input:checked ~ input:active {
background-position: 0 -24px;
}
body { padding: 50px; background-color: hsl(0,0%,20%); } input { -webkit-appearance: none; /* remove default */ display: block; margin: 10px; width: 24px; height: 24px; border-radius: 12px; cursor: pointer; vertical-align: middle; box-shadow: hsla(0,0%,100%,.15) 0 1px 1px, inset hsla(0,0%,0%,.5) 0 0 0 1px; background-color: hsla(0,0%,0%,.2); background-image: -webkit-radial-gradient( hsla(200,100%,90%,1) 0%, hsla(200,100%,70%,1) 15%, hsla(200,100%,60%,.3) 28%, hsla(200,100%,30%,0) 70% ); background-repeat: no-repeat; -webkit-transition: background-position .15s cubic-bezier(.8, 0, 1, 1), -webkit-transform .25s cubic-bezier(.8, 0, 1, 1); } input:checked { -webkit-transition: background-position .2s .15s cubic-bezier(0, 0, .2, 1), -webkit-transform .25s cubic-bezier(0, 0, .2, 1); } input:active { -webkit-transform: scale(1.5); -webkit-transition: -webkit-transform .1s cubic-bezier(0, 0, .2, 1); } /* The up/down direction logic */ input, input:active { background-position: 0 24px; } input:checked { background-position: 0 0; } input:checked ~ input, input:checked ~ input:active { background-position: 0 -24px; }
sponsors