ハンバーガーメニューボタンのアイデア集
ハンバーガーメニューのボタン
長さ段々ボタン
マウスを乗せると三本の長さが揃い、クリックで×に変化するボタン
HTML
CSS
js
2本線の真ん中に文字ボタン
マウスを乗せる文字が変わりクリックすると×に変化するボタン
HTML
CSS
js
<button class="btn" href="#"><span>MENU</span></button>
.btn{
/* ボタンの横幅 */
width: 66px;
/* ボタンの高さ */
height: 66px;
/* ボタンに元々付いているボーダーを消す */
border: none;
/* ボタンの背景色(いらなければ省略可) */
background-color: #f9f9f9;
/* ボタンの角丸(いらなければ省略可) */
border-radius: 10px;
/* 中の要素を親要素で位置指定したいので親要素の設定 */
position: relative;
/* マウスを乗せた時に指マークに */
cursor: pointer;
}
/* 文字 */
.btn span{
/* 擬似要素を親要素基準で位置指定したいので親要素の設定 */
position: relative;
/* 変化があった時に0.1秒かけて滑らかにアニメーションするように */
transition: all 0.1s;
/* 文字サイズ */
font-size: 13px;
/* 行間 */
line-height: 1;
}
/* ボタンにマウスを乗せた時の文字 */
.btn:hover span{
/* 文字色透明 */
color: #55555500;
}
/* マウスを乗せた時表示される文字”OPEN” */
.btn span::before{
/* 表示される文字 */
content: "OPEN";
/* 親要素で位置指定する宣言 */
position: absolute;
/* 親要素(span)の上から50% */
top: 50%;
/* 親要素(span)の左から50% */
left: 50%;
/* 線の幅の50%分左に、線の太さの50%分上に戻す */
transform: translate(-50%,-50%);
/* 文字色透明(マウスが乗る前の状態) */
color: #55555500;
/* 変化があった時に0.1秒かけて滑らかにアニメーションするように */
transition: all 0.1s;
}
/* マウスを乗せた時の”OPEN” */
.btn:hover span::before{
/* 文字の色 */
color: #555555;
}
/* 上の線、下の線 */
.btn::before,.btn::after{
/* 本来は文字等を入れるやつ、入れない場合も擬似要素作る時は必須 */
content: "";
/* サイズ指定するためにインライン→ブロックに変更 */
display: block;
/* 線の横幅 */
width: 50px;
/* 線の太さ */
height: 3px;
/* 線の色 */
background-color: #555;
/* 線の角丸 */
border-radius: 1.5px;
/* 親要素基準で位置指定する宣言 */
position: absolute;
/* 上から25%の位置 */
top: 25%;
/* 左から50%の位置 */
left: 50%;
/* 線の幅の50%分左に、線の太さの50%分上に戻す */
transform: translate(-50%,-50%);
/* 変化があった時に0.1秒かけて滑らかにアニメーションするように */
transition: all 0.5s;
}
/* 下の線 */
.btn::after{
/* ↑で上の線と同じ位置に設定したのでリセット */
top: auto;
/* 下から25%の位置 */
bottom: 25%;
/* 線の幅の50%分左に、線の太さの50%分下に戻す */
transform: translate(-50%,50%);
}
/* ボタンにクラス名onがついた時の文字"MENU" */
.btn.on span{
/* 透明に */
opacity: 0;
}
/* ボタンにクラス名onがついた時の上の線 */
.btn.on::before{
/* 上から50%の位置 */
top:50%;
/* 回転して×になるように */
transform: translate(-50%,-50%)rotate(135deg);
}
/* ボタンにクラス名onがついた時の下の線 */
.btn.on::after{
/* 下から50%の位置 */
bottom: 50%;
/* 回転して×になるように */
transform: translate(-50%,50%)rotate(-135deg);
}
//ボタンタグに名前つけ
let btn = document.querySelector(".btn");
// ボタンをクリックされた時
btn.addEventListener("click",function(){
// もしボタンがクラスonを持ってたら
if(btn.classList.contains("on")){
// ボタンのクラスonを削除する
btn.classList.remove("on")
}
// そうじゃなければ(ボタンがクラスonを持ってなかったら)
else{
// ボタンにクラスonを追加する
btn.classList.add("on")
}
});