アイコンを回転させて切り替えています。
main.jsでクリックするたびにclassを付け替えています。これによってアニメーションしながら表示・非表示するようになります。
transition-property で何をanimationするのかを指定 今回で言うと「pacity」と「transform」
transition-duration で再生時間を指定しています。
ベンダープレフィックスをつけていますが、スマホだけならこんなに必要ないかなと。
-ms-transition-property:opacity,-ms-transform;
-ms-transition-duration:1s;
-moz-transition-property:opacity,-moz-transform;
-moz-transition-duration:1s;
-webkit-transition-property:opacity,-webkit-transform;
-webkit-transition-duration:1s;
transition-property:opacity,transform;
transition-duration:1s;
アイコンフォントFont Awesomeを使っています。
JSを読み込みます
< script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></ script > < script type = "text/javascript" src = "js/main.js" ></ script > |
[main.js]JavaScript
jQuery(document).ready( function ($){ var btn = $( ".mod_btn .btnMenu" ); //click $(btn).bind( "click" , "focus" , function (event){ if ($(btn).hasClass( "off" )){ $(btn).removeClass( "off" ).addClass( "on" ); } else { $(btn).removeClass( "on" ).addClass( "off" ); } }); }); |
HTMl
< div class = "mod_btn" > < p class = "btnMenu off" >< a href = "javascript:void(0)" >< span >メニューを開く</ span >< i class = "openicon fa fa-list-ul" ></ i >< i class = "closeicon fa fa-times" ></ i ></ a ></ p > <!-- / .mod_btn --> </ div > |
CSS
/* mod_btn -----------------------------------------*/ .mod_btn p.btnMenu { position : relative ; width : 27px ; height : 27px ; background-color : #006d86 ; } /* text hidden */ .mod_btn .btnMenu span{ display : block ; width : 1px ; height : 1px ; overflow : hidden ; } .mod_btn .btnMenu a{ display : block ; color : #FFF !important ; } .mod_btn .btnMenu.on a{ background-color : #005467 ; } .mod_btn .btnMenu i{ position : absolute ; top : 3px ; left : 3px ; font-size : 150% ; } .mod_btn .btnMenu.on i{ top : 3px ; left : 6px ; } /* off closeicon 非表示 */ .mod_btn .btnMenu.off i.closeicon{ opacity : 0 ; -webkit- transform : rotate ( -90 deg); transform : rotate ( -90 deg); } .mod_btn .btnMenu.on i.closeicon{ opacity : 1 ; -ms- transition-property :opacity,-ms-transform; -ms-transition-duration: 1 s; -moz- transition-property :opacity,-moz-transform; -moz-transition-duration: 1 s; -webkit- transition-property :opacity,-webkit-transform; -webkit-transition-duration: 1 s; transition-property :opacity,transform; transition-duration: 1 s; } /* on openicon 非表示 */ .mod_btn .btnMenu.off i.openicon{ opacity : 1 ; -ms- transition-property :opacity,-ms-transform; -ms-transition-duration: 1 s; -moz- transition-property :opacity,-moz-transform; -moz-transition-duration: 1 s; -webkit- transition-property :opacity,-webkit-transform; -webkit-transition-duration: 1 s; transition-property :opacity,transform; transition-duration: 1 s; } .mod_btn .btnMenu.on i.openicon{ opacity : 0 ; -webkit- transform : rotate ( 90 deg); transform : rotate ( 90 deg); } |