今回は3種類のハンバーガーメニューの仲間たちをCSSのみで実装しました。
一般的なハンバーガーメニューアイコンではなく円形の点を使ったり、長さの異なるボーダーを使ったりして少し遊び心のあるデザインとなっています。
この記事の信頼性(ゆうけんブログの筆者はこんな人)
- 現役Webデザイナーが執筆
- 最高月収7桁超のフリーランス
- 完全未経験から独学でWeb制作スキルを習得
- Twitterフォロワー数2,000人超(→@twinzvlog_yk)
- Web制作のメンター経験多数
- 認定ランサー(ランサーズ最高ランク)
マテリアルデザインなのでそのまますぐにでもコピペして使用できるように仕上がっています。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。
\初心者でも安心なサポート体制&高単価案件/
月収50万円以上のフリーランス案件を探してみる >>
1. タテに点が並んでいる「ケバブメニュー」
動きは下の画像のような感じになります
コードを見る
<div>
<div class="hamburger">
<div class="borders">
<a href="#sidemenu" class="hamburger-menu">
<div></div>
<div></div>
<div></div>
</a>
</div>
</div>
<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: 8px;
height: 8px;
background-color: black;
margin: 5px auto;
border-radius:100px;
/* radiusで丸みをつける */
}
.hamburger .borders {
padding-top:1px;
}
.hamburger {
width:52px;
height:50px;
border:2px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
transition: .5s;
/* アニメーションの時間を0.5秒に指定 */
opacity:1;
/* 透明度を指定 */
background:#f1f1f1;
}
.hamburger:hover {
opacity:0.5;
/* 透明度を指定 */
}
.hamburger + .sidenavs:target {
overflow-x: visible;
/* ボックスからはみ出る箇所をそのまま表示 */
width: 50%;
/* サイドメニューの幅 */
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.5s;
/* スライド時にかかる時間を0.5秒に指定 */
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);
/* XY軸の移動距離を指定 */
}
.sidebar-btn a:hover {
color: white;
transform:translate(8px,10px);
/* 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;
}
ここがポイント!
- 円形の点を縦に3つ並べることで「ケバブメニュー」を実現
- borderで囲み背景をグレーにしボタン感を演出したケバブメニューのサンプルを作成
- ケバブメニューをクリックするとサイドバーが表示される
- ケバブメニューをhoverするとopacityが実行されて透明化する
- サイドバーのwidthを20%に調整
- transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
- position: absoluteで親要素との絶対位置を指定
- サイドバーの背景色を黒にし、文字の色をグレー、hover時に白くなるよう指定
- サイドバーの文字をborderで囲ってボタンを作り、その背面にも同じようにborderを用意
- サイドバーのボタンをhoverするとtransform:translateが実行されボタンが立体的にかわいい動きのアニメーションになるように移動距離を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
\初心者でも安心なサポート体制&高単価案件/
月収50万円以上のフリーランス案件を探してみる >>
2. 横に点が並んでいる「ミートボールメニュー」
動きは下の画像のような感じになります
コードを見る
<div>
<div class="hamburger">
<div class="borders">
<a href="#sidemenu" class="hamburger-menu">
<div></div>
<div></div>
<div></div>
</a>
</div>
</div>
<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 {
display:flex;
}
.hamburger-menu div {
width: 8px;
height: 8px;
background-color: black;
margin:0 2px;
border-radius:100px;
/* radiusで丸みをつける */
}
.hamburger .borders {
padding-top:18px;
padding-left:6px;
}
.hamburger {
width:52px;
height:50px;
border:2px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
transition: .5s;
/* アニメーションの時間を0.5秒に指定 */
opacity:1;
/* 透明度を指定 */
background:#f1f1f1;
}
.hamburger:hover {
opacity:0.5;
/* 透明度を指定 */
}
.hamburger + .sidenavs:target {
overflow-x: visible;
/* ボックスからはみ出る箇所をそのまま表示 */
width: 50%;
/* サイドメニューの幅 */
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.5s;
/* スライド時にかかる時間を0.5秒に指定 */
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:translateY(0px);
/* Y軸の移動距離を指定 */
}
.sidebar-btn a:hover {
color: white;
transform:translateY(-15px);
/* Y軸の移動距離を指定 */
}
.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;
}
ここがポイント!
- 円形の点を横に3つ並べることで「ミートボールメニュー」を実現
- borderで囲み背景をグレーにしボタン感を演出したミートボールメニューのサンプルを作成
- ミートボールメニューをクリックするとサイドバーが表示される
- ミートボールメニューをhoverするとopacityが実行されて透明化する
- サイドバーのwidthを30%に調整
- transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
- position: absoluteで親要素との絶対位置を指定
- サイドバーの背景色を黒にし、文字の色をグレー、hover時に白くなるよう指定
- サイドバーの文字をborderで囲ってボタンを作り、その背面にも同じようにborderを用意
- サイドバーのボタンをhoverするとtransform:translateが実行されボタンが上に浮かび上がるように移動距離を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
\初心者でも安心なサポート体制&高単価案件/
月収50万円以上のフリーランス案件を探してみる >>
3. 長さの異なるボーダーがタテに並んでいる「ドネルメニュー」
動きは下の画像のような感じになります
コードを見る
<div>
<div class="hamburger">
<div class="borders">
<a href="#sidemenu" class="hamburger-menu">
<div class="first-border"></div>
<div class="second-border"></div>
<div class="third-border"></div>
</a>
</div>
</div>
<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 {
height: 5px;
background-color: black;
margin: 5px auto;
}
.hamburger-menu .first-border {
width: 25px;
/* メニューアイコンの線の長さを調整 */
}
.hamburger-menu .second-border {
width: 18px;
/* メニューアイコンの線の長さを調整 */
}
.hamburger-menu .third-border {
width: 12px;
/* メニューアイコンの線の長さを調整 */
}
.hamburger .borders {
padding-top:5px;
}
.hamburger {
width:52px;
height:50px;
border:2px solid white;
border-radius:10px;
/* ボーダーにradiusで丸みをつける */
transition: .5s;
/* アニメーションの時間を0.5秒に指定 */
opacity:1;
/* 透明度を指定 */
background:#f1f1f1;
}
.hamburger:hover {
opacity:0.5;
/* 透明度を指定 */
}
.hamburger + .sidenavs:target {
overflow-x: visible;
/* ボックスからはみ出る箇所をそのまま表示 */
width: 50%;
/* サイドメニューの幅 */
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.5s;
/* スライド時にかかる時間を0.5秒に指定 */
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:skewX(0deg);
/* X軸の傾斜角度を指定 */
}
.sidebar-btn a:hover {
color: white;
border:1px solid white;
transform:skewX(-20deg);
/* X軸の傾斜角度を指定 */
}
.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;
}
ここがポイント!
- 長さの異なるボーダーを縦に並べることで「ドネルメニュー(Doner Menu)」を実現
- borderで囲み背景をグレーにしボタン感を演出したドネルメニューのサンプルを作成
- ドネルメニューをクリックするとサイドバーが表示される
- ドネルメニューをhoverするとopacityが実行されて透明化する
- サイドバーのwidthを50%に調整
- transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
- position: absoluteで親要素との絶対位置を指定
- サイドバーの背景色を黒にし、文字の色をグレー、hover時に白くなるよう指定
- サイドバーの文字をborderで囲ってボタンを作り、その背面にも同じようにborderを用意
- サイドバーのボタンをhoverするとtransform:skewが実行されボタンに電流が流れたようなアニメーションになるように傾斜角度を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
\初心者でも安心なサポート体制&高単価案件/
月収50万円以上のフリーランス案件を探してみる >>
『絶対にリモートワーク!』という方におすすめの求人サイトをご紹介!
クラウドテック
この講座のポイント
対象
Webデザイナー・エンジニア・グラフィックデザイナー・PM・マーケター・ライター
公式サイト
クラウドテック公式ページ
特徴
- クラウドソーシング企業大手のクラウドワークスが運営する求人サイト
- 実務未経験者でもOK
- 登録社数14万社
- フリーランス・個人事業主向け案件がケタ違いに多い
- 報酬額や勤務地・職種など希望が通りやすい
- Web制作・コーディングの高単価案件が多い
- リモートワーク案件数は業界トップクラス
- 最短3日で案件を獲得できる
現役Webデザイナーの筆者イチオシの求人サイト!フリーランス向けWeb制作案件なら確実に業界トップクラス。営業かけずに案件に困らなくなる一番の近道です。
ふたご
\ エンジニア・Webデザイナーの実務未経験OK・リモート案件数トップクラスの求人サイト /
無料登録をして案件を見てみる >>
まとめ
HTMLとCSSを使うと今回紹介したようなことも簡単にできてしまうんです。
『CSSアニメーションやエフェクトだけではなくWebサイトをゼロから作って稼いでいきたい』
『3ヶ月くらいで最低でも月10万円は稼ぎたい』
『営業とかやったことないけどWeb制作だけで稼いでいきたい』
こんな方のためにWeb制作で月80万超稼ぐ筆者が自身の経験を踏まえて【失敗しない】Webデザイナー(Web制作)独学ロードマップを執筆しました。
少額の投資で3ヶ月後には月10〜30万稼げるよう設計してあります。
(学習教材やAdobeなど最低限のコストはかかります)
ロードマップの構成
- Web制作に特化した『確実に身に付く』学習方法
- Web制作会社が喰いつく理想的なポートフォリオの作成手順
- 返信率10%以上!Web制作会社へのメール営業
有料公開も考えましたが「Webデザイナー(Web制作)はまだまだ稼げることを証明したい!」という思いが強く、期間限定で無料公開をすることにしました。
2021年半ばまでは無料公開する予定ではありますが前倒しすることもあり得ますのでご興味ある方はお早めにどうぞ!