WEBサイトでいろんなサイトが実装している「ドロワーメニュー」。「ハンバーガーメニュー」なんても呼ばれるものですが、スマホ対応のサイトではほぼ見かけますよね。
今回は、クリックすると三本線から×印に変わるボタン部分の作り方を紹介します。

TAKU
HTMLとCSS、jQueryを使っていきます!
完成系
See the Pen
Drawer-button by TAKU HONGO (@taku_webdesign)
on CodePen.
※スマホの場合は、Resultをタップしてください。
作り方
HTMLでボタンの枠「openbtn」「span」を作る
ボタンの大枠はdivタグで「openbtn」クラスを付け、線1本ずつの枠を、spanタグで作っています。
<div class="openbtn">
/* ボタンの大枠*/
<span></span>
/* 線1本目*/
<span></span>
/* 線2本目*/
<span></span>
/* 線3本目*/
</div>
CSSでボタンのスタイルとアニメーションを設定
ボタンの大枠「openbtn」の設定をします。内側の三本線の基点とするため、position relativeとするのがポイントです。背景色やボタンの大きさはお好みで。
.openbtn {
position: relative;
/* 線の基点とするので、relative指定*/
background: #272727;
/* 背景色は黒寄りのグレー(お好みで)*/
width: 50px;
height: 50px;
/* widthとheightでボタンのサイズ指定*/
border-radius: 5px;
/* 角をちょっと丸める*/
}
線「span」のベースとなる設定をします。openbtnを基点とした絶対位置を指定するため、 position absoluteは忘れずに。
.openbtn span {
display: inline-block;
/* サイズ指定をしていきたいので、インラインブロック要素に*/
transition: all.4s;
/* アニメーションの設定 4秒かけて*/
position: absolute;
/* openbtnを基点にして動くため、absolute*/
left: 14px;
/* leftでopenbtnを基点とした絶対位置*/
height: 3px;
/* 線の太さをheightで*/
border-radius: 2px;
/* 線の角をちょっと丸める*/
background: #fff;
/* 線の色を白に(お好みで)*/
width: 45%;
}
線「span」を疑似クラスnth-of-type()で1つずつ位置指定をして、三本線にしていきます。
/* span1番目 */
.openbtn span:nth-of-type(1) {
top: 15px;
}
/* span2番目 */
.openbtn span:nth-of-type(2) {
top: 23px;
}
/* span3番目 */
.openbtn span:nth-of-type(3) {
top: 31px;
}
ここまでで、三本線の形ができあがりました。
CSSで三本線の1・3本目が45度回転し、2本目が消える設定のクラス「active」を作る
ボタンクリック時にクラス「openbtn」にクラス「active」を付与して、動きをつけるという仕組みです。ここではクラス「active」を線「span」3本分作りましょう。
/*span1番目の線が45度回転 */
.openbtn.active span:nth-of-type(1) {
top: 18px;
left: 18px;
/*位置を少し変えています */
transform: translateY(6px) rotate(-45deg);
/*-45度回転 上下少し調整 */
width: 30%;
/*線を少し短くする */
}
/* span2番目は見えなくする */
.openbtn.active span:nth-of-type(2) {
opacity: 0;
/*透過させる */
}
/* span3番目の線が45度回転 */
.openbtn.active span:nth-of-type(3) {
top: 30px;
left: 18px;
/*位置を少し変えています */
transform: translateY(-6px) rotate(45deg);
/*-45度回転 上下少し調整 */
width: 30%;
/*線を少し短くする */
}
jQueryでクリック時に「openbtn」に「active」が付与し、アニメーションするよう設定
// openbtnクラスがクリックされると
$(".openbtn").click(function(){
// activekクラスが付与される
$(this).toggleClass('active');
});
これで、クリックすると三本線から×印に変わるボタン部分のできあがりです。
次回は、クリック時に開くメニュー部分の作り方を紹介予定です。