
疑似要素とCSSでスライドスイッチ(トグルスイッチ)を表示し、スイッチに触れたら jQuery で、詳細内容(ブロック要素)の表示・非表示を切り替える(同時にスイッチのオン・オフ状態も変える)。
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | .slide-switch { text-align : right ; } .slide-switch > span { position : relative ; display : inline- block ; padding-left : 10px ; /* スイッチと文字列の空き */ font-size : 0.85em ; cursor : pointer ; } /* スイッチ【オフ時】の背景 */ .slide-switch > span::before { position : absolute ; top : 50% ; transform: translate( 0 , -50% ); left : -48px ; /* スイッチ背景の幅に合わせる */ display : inline- block ; width : 48px ; /* スイッチ背景の幅 */ height : 16px ; /* スイッチ背景の高さ */ border-radius: 8px ; /* スイッチ背景の角丸 */ background-color : #bbb ; content : "" ; } /* スイッチ【オフ時】のノブ */ .slide-switch > span::after { position : absolute ; top : 50% ; transform: translate( 0 , -50% ); left : -48px ; /* スイッチの背景の幅に合わせる */ display : inline- block ; width : 16px ; /* ノブの高さ */ height : 16px ; /* ノブの幅 */ border-radius: 50% ; /* ノブの角丸(正円) */ background-color : #666 ; /* ノブの色 */ border : 2px solid #666 ; /* スイッチ背景からのノブのはみ出し */ content : "" ; } /* スイッチ【オン時】の背景 */ .slide-switch.ON > span::before { background-color : #bbf ; } /* スイッチ【オン時】のノブ */ .slide-switch.ON > span::after { left : -16px ; /* ノブの width に合わせる */ background-color : #77f ; border : 2px solid #77f ; } /* 詳細 */ #detail { display : none ; /* あらかじめ非表示 */ } |
補足
- slide-switch クラス内の span 要素の before 疑似要素で、スイッチの背景を作り、after 疑似要素でスイッチのノブを作っている。
- slide-switch クラス に ON クラスが追加されている時は、スイッチの背景色を変え、ノブ位置を右へ移動し、色も変えてオン状態がわかるようにしている。
- レイアウトが崩れる場合は リセットCSS・共通CSS の内容を確認。
jQuery
1 2 3 4 5 6 | $( function (){ $( ".slide-switch" ).on( "click" , function () { $( this ).toggleClass( 'ON' ); $( '#detail' ).slideToggle(); }); }); |
補足
- slide-switch クラスをクリック(タッチ)すると、ON クラスが追加(または削除され)、オン・オフ状態が切り替わる。
- デモページで使用している jQuery のバージョンは 1.12.4 。
HTML
1 2 3 4 5 6 7 8 | < div class = "slide-switch" >< span >詳細表示</ span ></ div > <!-- スライドスイッチ --> < div id = "detail" > < h3 >詳細</ h3 > ~途中省略~ </ div > <!-- /#detail --> |
補足
- slide-switch クラス内の span 要素で スライドスイッチと "詳細表示" の文字列を表示している。
- そのため、文字列部分をクリック(タッチ)してもオン・オフが切り替わる。