Result
CSS ScanでCSSでスタイリングされた実用的でユニークなチェックボックスが沢山紹介されています。
どれもクリックだけでコピー可能で、CSSとHTMLがセットになったコードを発行しているのでペーストするだけで実装できるようになっています。
全てJavaScript不要で実装可能です。
css
.checkbox-wrapper -11 { --text: #414856 ; --check: #4F29F0 ; --disabled: #C3C8DE ; -- border-radius : 10px ; border-radius : var(--border-radius); position : relative ; padding : 5px ; display : grid; grid-template-columns : 30px auto ; align-items : center ; } .checkbox-wrapper -11 label { color : var(--text); position : relative ; cursor : pointer ; display : grid; align-items : center ; width : -webkit-fit-content; width : -moz-fit-content; width : fit-content; transition : color 0.3 s ease; } .checkbox-wrapper -11 label::before, .checkbox-wrapper -11 label::after { content : "" ; position : absolute ; } .checkbox-wrapper -11 label::before { height : 2px ; width : 8px ; left : -27px ; background : var(--check); border-radius : 2px ; transition : background 0.3 s ease; } .checkbox-wrapper -11 label:after { height : 4px ; width : 4px ; top : 8px ; left : -25px ; border-radius : 50% ; } .checkbox-wrapper -11 input[type=checkbox] { -webkit- appearance : none ; -moz- appearance : none ; position : relative ; height : 15px ; width : 15px ; outline : none ; border : 0 ; margin : 0 15px 0 0 ; cursor : pointer ; background : var(--background); display : grid; align-items : center ; } .checkbox-wrapper -11 input[type=checkbox]::before, .checkbox-wrapper -11 input[type=checkbox]::after { content : "" ; position : absolute ; height : 2px ; top : auto ; background : var(--check); border-radius : 2px ; } .checkbox-wrapper -11 input[type=checkbox]::before { width : 0px ; right : 60% ; transform-origin : right bottom ; } .checkbox-wrapper -11 input[type=checkbox]::after { width : 0px ; left : 40% ; transform-origin : left bottom ; } .checkbox-wrapper -11 input[type=checkbox]:checked::before { -webkit- animation : check -01 -11 0.4 s ease forwards; animation : check -01 -11 0.4 s ease forwards; } .checkbox-wrapper -11 input[type=checkbox]:checked::after { -webkit- animation : check -02 -11 0.4 s ease forwards; animation : check -02 -11 0.4 s ease forwards; } .checkbox-wrapper -11 input[type=checkbox]:checked + label { color : var(--disabled); -webkit- animation : move -11 0.3 s ease 0.1 s forwards; animation : move -11 0.3 s ease 0.1 s forwards; } .checkbox-wrapper -11 input[type=checkbox]:checked + label::before { background : var(--disabled); -webkit- animation : slice -11 0.4 s ease forwards; animation : slice -11 0.4 s ease forwards; } .checkbox-wrapper -11 input[type=checkbox]:checked + label::after { -webkit- animation : firework -11 0.5 s ease forwards 0.1 s; animation : firework -11 0.5 s ease forwards 0.1 s; } @-webkit-keyframes move -11 { 50% { padding-left : 8px ; padding-right : 0px ; } 100% { padding-right : 4px ; } } @keyframes move -11 { 50% { padding-left : 8px ; padding-right : 0px ; } 100% { padding-right : 4px ; } } @-webkit-keyframes slice -11 { 60% { width : 100% ; left : 4px ; } 100% { width : 100% ; left : -2px ; padding-left : 0 ; } } @keyframes slice -11 { 60% { width : 100% ; left : 4px ; } 100% { width : 100% ; left : -2px ; padding-left : 0 ; } } @-webkit-keyframes check -01 -11 { 0% { width : 4px ; top : auto ; transform : rotate ( 0 ); } 50% { width : 0px ; top : auto ; transform : rotate ( 0 ); } 51% { width : 0px ; top : 8px ; transform : rotate ( 45 deg); } 100% { width : 5px ; top : 8px ; transform : rotate ( 45 deg); } } @keyframes check -01 -11 { 0% { width : 4px ; top : auto ; transform : rotate ( 0 ); } 50% { width : 0px ; top : auto ; transform : rotate ( 0 ); } 51% { width : 0px ; top : 8px ; transform : rotate ( 45 deg); } 100% { width : 5px ; top : 8px ; transform : rotate ( 45 deg); } } @-webkit-keyframes check -02 -11 { 0% { width : 4px ; top : auto ; transform : rotate ( 0 ); } 50% { width : 0px ; top : auto ; transform : rotate ( 0 ); } 51% { width : 0px ; top : 8px ; transform : rotate ( -45 deg); } 100% { width : 10px ; top : 8px ; transform : rotate ( -45 deg); } } @keyframes check -02 -11 { 0% { width : 4px ; top : auto ; transform : rotate ( 0 ); } 50% { width : 0px ; top : auto ; transform : rotate ( 0 ); } 51% { width : 0px ; top : 8px ; transform : rotate ( -45 deg); } 100% { width : 10px ; top : 8px ; transform : rotate ( -45 deg); } } @-webkit-keyframes firework -11 { 0% { opacity : 1 ; box-shadow : 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 ; } 30% { opacity : 1 ; } 100% { opacity : 0 ; box-shadow : 0 -15px 0 0px #4F29F0 , 14px -8px 0 0px #4F29F0 , 14px 8px 0 0px #4F29F0 , 0 15px 0 0px #4F29F0 , -14px 8px 0 0px #4F29F0 , -14px -8px 0 0px #4F29F0 ; } } @keyframes firework -11 { 0% { opacity : 1 ; box-shadow : 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 , 0 0 0 -2px #4F29F0 ; } 30% { opacity : 1 ; } 100% { opacity : 0 ; box-shadow : 0 -15px 0 0px #4F29F0 , 14px -8px 0 0px #4F29F0 , 14px 8px 0 0px #4F29F0 , 0 15px 0 0px #4F29F0 , -14px 8px 0 0px #4F29F0 , -14px -8px 0 0px #4F29F0 ; } } |
1つの例です。Todoに使えるチェックボックス。チェックを入れると同時に線を入れてくれます。
html
< div class = "checkbox-wrapper-11" > < input id = "02-11" type = "checkbox" name = "r" value = "2" > < label for = "02-11" >To-do</ label > </ div > |
via
Beautiful CSS checkboxes examples
ブックマークして使ってねとの事です。