今回は遊び心のあるハンバーガーメニューにしたい方向けのマテリアルデザインをCSSのみで実装しました。
hoverやクリック(タップ)でデザインに大きな変化が起きるよう作ったのでWeb制作やWebアプリケーション等で楽しみながらそのままお使いいただけるようなマテリアルデザインになっています。
ハンバーガーメニューのサイドバーにはtransformをふんだんに使用し、hoverするとボタンがborderを使って超立体的に動き出し、ずっと触っていたくなるような飽きないデザインサンプルとなっています。
マテリアルデザインなのでそのまますぐにでもコピペして使用できるように仕上がっています。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。
※突然ですが超オトクな『無料プレゼント』のお知らせです・・
今から3日以内に『転職実績No. 1のプログラミングスクール DMM WEBCAMP』へ無料カウンセリング申込&参加された方のみ限定でもれなく【Amazonギフト券1,000円分】をGETできるキャンペーン
完全オンラインレッスンで個別メンター付き。1月中なら期間限定で5万円のキャッシュバックも
無料カウンセリング ▶︎
1. ボタンが崩れ落ちていきそうな動きをするハンバーガーメニュー
動きは下の画像のような感じになります
![]()
コードを見る
<div>
<a href="#sidemenu" class="hamburger-menu">
<div></div>
<div></div>
<div></div>
</a>
<header id="sidemenu" class="sidenavs">
<a href="#" class="close-btn">×</a>
<div class="sidebar-btn">
<p><a href="#">About</a></p>
<p><a href="#">Services</a></p>
<p><a href="#">Clients</a></p>
<p><a href="#">Contact</a></p>
</div>
</header>
</div>
.hamburger-menu div {
width: 35px;
height: 5px;
background-color: black;
margin: 6px 0;
transition: .5s;
/* アニメーションの時間を0.5秒に指定 */
transform:skewX(0deg);
/* X軸(横)の傾斜角度を指定 */
}
.hamburger-menu:hover div {
opacity:0.6;
/* 透明度を指定 */
transform:skewX(70deg);
/* X軸(横)の傾斜角度を指定 */
}
.hamburger-menu + .sidenavs:target {
overflow-x: visible;
/* ボックスからはみ出る箇所をそのまま表示 */
width: 100%;
display:block;
}
.sidenavs:target {
overflow-x: hidden;
/* ボックスからはみ出る箇所を隠す */
width: 0;
}
/* ハンバーガーメニュー表示時 */
.sidenavs {
height: 100%;
width: 0;
position: fixed;
/* 画像の配置を指定 */
z-index: 1;
top: 0;
left: 0;
background-color: black;
overflow-x: hidden;
/* 横スクロールを無効にする */
padding-top: 60px;
transition: 0.5s;
/* アニメーションの時間を0.5秒に指定 */
}
/* ハンバーガーメニュー表示時のリンク */
.sidenavs a {
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s;
/* アニメーションの時間を0.3秒に指定 */
font-weight:bold;
}
/* マウスオーバー後のリンク */
.sidenavs a:hover {
color: white;
}
.sidebar-btn a {
padding: 8px 8px 8px 8px;
border:1px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
transform:rotate(0deg) translate(0px,0px);
/* Z軸(平面)の回転角度とXY軸の移動距離を指定 */
}
.sidebar-btn a:hover {
color: white;
transform:rotate(-3deg) translate(3px,5px);
/* Z軸(平面)の回転角度とXY軸の移動距離を指定 */
}
.sidenavs p {
margin:30px auto;
width:250px;
border:1px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
}
/* クローズボタン */
.sidenavs .close-btn {
position: absolute;
/* 親要素との絶対位置を指定 */
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
ここがポイント!
- シンプルなハンバーガーメニューのサンプルを作成
- ハンバーガーメニューをクリックするとサイドバーが表示される
- ハンバーガーメニューをhoverするとskewが実行されて横に70°傾く
- transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
- position: absoluteで親要素との絶対位置を指定
- サイドバーの背景色を黒にし、文字の色をグレー、hover時に白くなるよう指定
- サイドバーの文字をborderで囲ってボタンを作り、その背面にも同じようにborderを用意
- サイドバーのボタンをhoverするとtransform:rotateとtranslateが実行されボタンが今にも立体的に崩れ落ちそうになるように回転角度と移動距離を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
2.ボタンが今まさにスベり出すかのような動きをするハンバーガーメニュー
動きは下の画像のような感じになります
![]()
コードを見る
<div>
<a href="#sidemenu" class="hamburger-menu">
<div></div>
<div></div>
<div></div>
</a>
<header id="sidemenu" class="sidenavs">
<a href="#" class="close-btn">×</a>
<div class="sidebar-btn">
<p><a href="#">About</a></p>
<p><a href="#">Services</a></p>
<p><a href="#">Clients</a></p>
<p><a href="#">Contact</a></p>
</div>
</header>
</div>
.hamburger-menu div {
width: 35px;
height: 5px;
background-color: black;
margin: 6px 0;
transition: .5s;
/* アニメーションの時間を0.5秒に指定 */
transform:skewY(0deg);
/* X軸(縦)の傾斜角度を指定 */
}
.hamburger-menu:hover div {
opacity:0.6;
/* 透明度を指定 */
transform:skewY(-5deg);
/* X軸(縦)の傾斜角度を指定 */
}
.hamburger-menu + .sidenavs:target {
overflow-x: visible;
/* ボックスからはみ出る箇所をそのまま表示 */
width: 100%;
display:block;
}
.sidenavs:target {
overflow-x: hidden;
/* ボックスからはみ出る箇所を隠す */
width: 0;
}
/* ハンバーガーメニュー表示時 */
.sidenavs {
height: 100%;
width: 0;
position: fixed;
/* 画像の配置を指定 */
z-index: 1;
top: 0;
left: 0;
background-color: black;
overflow-x: hidden;
/* 横スクロールを無効にする */
padding-top: 60px;
transition: 0.5s;
/* アニメーションの時間を0.5秒に指定 */
}
/* ハンバーガーメニュー表示時のリンク */
.sidenavs a {
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s;
/* アニメーションの時間を0.3秒に指定 */
font-weight:bold;
}
/* マウスオーバー後のリンク */
.sidenavs a:hover {
color: white;
}
.sidebar-btn a {
padding: 8px 8px 8px 8px;
border:1px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
transform:rotate(0deg) translate(0px,0px) skew(0deg,0deg);
/* Z軸(平面)の回転角度とXY軸の移動距離、傾斜角度を指定 */
}
.sidebar-btn a:hover {
color: white;
transform:rotate(-3deg) translate(4px,4px) skew(4deg,3deg);
/* Z軸(平面)の回転角度とXY軸の移動距離、傾斜角度を指定 */
}
.sidenavs p {
margin:30px auto;
width:250px;
border:1px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
}
/* クローズボタン */
.sidenavs .close-btn {
position: absolute;
/* 親要素との絶対位置を指定 */
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
ここがポイント!
- シンプルなハンバーガーメニューのサンプルを作成
- ハンバーガーメニューをクリックするとサイドバーが表示される
- ハンバーガーメニューをhoverするとskewが実行されて縦に5°傾く
- transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
- position: absoluteで親要素との絶対位置を指定
- サイドバーの背景色を黒にし、文字の色をグレー、hover時に白くなるよう指定
- サイドバーの文字をborderで囲ってボタンを作り、その背面にも同じようにborderを用意
- サイドバーのボタンをhoverするとtransform:rotateとtranslate、skewが実行されボタンがまるで浮き上がりながらスベり出すかのように回転角度と移動距離、傾斜角度を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
3. ボタンが3Dで挨拶するかのように動き出すハンバーガーメニュー
動きは下の画像のような感じになります
![]()
コードを見る
<div>
<a href="#sidemenu" class="hamburger-menu">
<div></div>
<div></div>
<div></div>
</a>
<header id="sidemenu" class="sidenavs">
<a href="#" class="close-btn">×</a>
<div class="sidebar-btn">
<p><a href="#">About</a></p>
<p><a href="#">Services</a></p>
<p><a href="#">Clients</a></p>
<p><a href="#">Contact</a></p>
</div>
</header>
</div>
.hamburger-menu div {
width: 35px;
height: 5px;
background-color: black;
margin: 6px 0;
transition: .5s;
/* アニメーションの時間を0.5秒に指定 */
transform:skew(0deg,0deg);
/* XY軸(横縦)の傾斜角度を指定 */
}
.hamburger-menu:hover div {
opacity:0.6;
/* 透明度を指定 */
transform:skew(70deg,-15deg);
/* XY軸(横縦)の傾斜角度を指定 */
}
.hamburger-menu + .sidenavs:target {
overflow-x: visible;
/* ボックスからはみ出る箇所をそのまま表示 */
width: 100%;
display:block;
}
.sidenavs:target {
overflow-x: hidden;
/* ボックスからはみ出る箇所を隠す */
width: 0;
}
/* ハンバーガーメニュー表示時 */
.sidenavs {
height: 100%;
width: 0;
position: fixed;
/* 画像の配置を指定 */
z-index: 1;
top: 0;
left: 0;
background-color: black;
overflow-x: hidden;
/* 横スクロールを無効にする */
padding-top: 60px;
transition: 0.5s;
/* アニメーションの時間を0.5秒に指定 */
}
/* ハンバーガーメニュー表示時のリンク */
.sidenavs a {
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s;
/* アニメーションの時間を0.3秒に指定 */
font-weight:bold;
}
/* マウスオーバー後のリンク */
.sidenavs a:hover {
color: white;
}
.sidebar-btn a {
padding: 8px 8px 8px 8px;
border:1px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
transform:translate(0px,0px) skew(0deg,0deg);
/* XY軸の移動距離、傾斜角度を指定 */
}
.sidebar-btn a:hover {
color: white;
transform:translate(5px,-5px) skew(-5deg,3deg);
/* XY軸の移動距離、傾斜角度を指定 */
}
.sidenavs p {
margin:30px auto;
width:250px;
border:1px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
}
/* クローズボタン */
.sidenavs .close-btn {
position: absolute;
/* 親要素との絶対位置を指定 */
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
ここがポイント!
- シンプルなハンバーガーメニューのサンプルを作成
- ハンバーガーメニューをクリックするとサイドバーが表示される
- ハンバーガーメニューをhoverするとskewが実行されて大きく傾き立体的になる
- transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
- position: absoluteで親要素との絶対位置を指定
- サイドバーの背景色を黒にし、文字の色をグレー、hover時に白くなるよう指定
- サイドバーの文字をborderで囲ってボタンを作り、その背面にも同じようにborderを用意
- サイドバーのボタンをhoverするとtransform:translateとskewが実行されボタンがまるで挨拶でもするかのように浮き上がるよう移動距離と傾斜角度を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
参考
そもそもWebデザインの基礎がわからない。。
ふたご
未経験からWeb制作で月50万稼げるようになったUdemy教材3選
でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
ふたご
完全無料で一人前のエンジニアになれるプログラミングスクールあります
- プログラミング学習&サポートが無料!
- 誰もが知っている超優良企業への就職サポート付き!
- 学習言語:Java、PHP、HTML、CSSなど
話だけ聞いてみる