スマホメニューで人気!横からにゅるっとでてくるドロワーメニューの作り方
よくスマホメニューでつかわれている横からにゅるっと出てくるドロワーメニューのつくりかたです。コピペするだけでもつかえますが、解説をみたいかたは、コードの下に書いてありますのでご覧ください。
まずはデモ。
<button type="button" class="btn_menu">開閉ボタン</button>
<nav>
<ul>
<li><a href="/">メニュー1</a></li>
<li><a href="/">メニュー2</a></li>
<li><a href="/">メニュー3</a></li>
<li><a href="/">メニュー4</a></li>
<li><a href="/">メニュー5</a></li>
</ul>
</nav>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(function(){
$('.btn_menu').click(function(){
$('nav').toggleClass('open');}
);
})
</script>
nav {
position: fixed;
top: 0;
right: 0;
width: 300px;
height: 100%;
background-color: #333;
transition: all 0.2s;
transform: translate(300px);
z-index: 1000;
}
nav.open {
transform: translate(0);
}
nav ul {
margin: 0;
padding: 1em;
list-style-type: none;
}
nav ul li {
padding: 1em 0;
border-bottom: 1px solid #fff;
}
nav ul li a {
display: block;
text-align: center;
text-decoration: none;
color: #fff;
}
解説
CSS編
にゅるっとさせる動き、一昔前まではJavaScriptでやってましたが、これくらいならCSSで十分です。
まず、初期状態の位置はposition:fixed; top:0; right:0; で、上端から0px 右端から0pxの位置に固定しています。そこにtransform:translate(280px); を書くことで、右側に280pxずらすということをしています。
あとは、nav にクラス名open がついたときに、transform:translate(0px); が効いて、元の固定位置に戻るという仕組みです。
これに、にゅるっとさせる動きは、transition:all 0.2s; です。280pxから0pxに変化するまでを0.2秒でアニメーションさせるという内容です。
z-index: 999; にすることで、表示されたときのレイヤーを上位階層になるようにしてあげます。
jQuery編
事前にjQueryを読みこんでおきます。
あとは、クラス名menu がついた要素をクリックしたときに、nav 要素に対してクラス名open を付与するということを書いています。
解説を読んでもよくわからないってかた
コメントいただければもっと丁寧に解説します。お気軽にどうぞ。