アイコンを回転させて切り替えています。
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(-90deg); transform: rotate(-90deg); } .mod_btn .btnMenu.on i.closeicon{ opacity:1; -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; } /* on openicon 非表示 */ .mod_btn .btnMenu.off i.openicon{ opacity:1; -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; } .mod_btn .btnMenu.on i.openicon{ opacity:0; -webkit-transform: rotate(90deg); transform: rotate(90deg); }