営業ナシでWeb制作案件が舞い込んでくる”新世代”戦略 ▶︎

サイドバーがスーッとスライド!Web制作で重宝するハンバーガーメニュー3選【コピペOK】

今回はハンバーガーメニューをクリックするとサイドバーがtransform:translateでスライドしながら表示されるCSSアニメーションを実装しました。

スライドにtransform:translateを使用した縦横スライドに加えてrotateの回転もプラスした3種類のマテリアルデザインを作りました。

マテリアルデザインなのでそのまますぐにでもコピペして使用できるように仕上がっています。

htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。

こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。

 

 

1. サイドバーが滑らかに横スライドで表示されるハンバーガーメニュー

動きは下の画像のような感じになります

コードを見る
<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">&times;</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: 40%;
  /* サイドメニューの幅 */
  display:block;
  transform:translate(865px);
  /* X軸(横)の移動距離を指定 */
}
.sidenavs:target {
  overflow-x: hidden;
  /* ボックスからはみ出る箇所を隠す */
  width: 0;
  transition-duration:1.2s;
  /* アニメーションの時間を0.5秒に指定 */
}
/* ハンバーガーメニュー表示時 */
.sidenavs {
  height: 100%;
  width: 0;
  position: fixed;
  /* 画像の配置を指定 */
  z-index: 1;
  top: 0;
  left: 0;
  background-image:url("https://source.unsplash.com/1000x803");
  /* サイドバーの背景画像を指定 */
  overflow-x: hidden;
  /* 横スクロールを無効にする */
  padding-top: 60px;
  transition: .8s;
  /* アニメーションの時間を0.5秒に指定 */
  transform:translate(0px);
  /* X軸(横)の移動距離を指定 */
}
/* ハンバーガーメニュー表示時のリンク */
.sidenavs a {
  text-decoration: none;
  font-size: 45px;
  /* 文字サイズを大きめに調整 */
  color: white;
  display: block;
  transition: 0.5s;
  /* アニメーションの時間を0.5秒に指定 */
  font-weight:bold;
}
/* マウスオーバー後のリンク */
.sidebar-btn a {
  transform:skewX(0deg);
  /* X軸の傾斜角度を指定 */
}
.sidebar-btn a:hover {
  color: black;
  transform:skewX(-20deg);
  /* X軸の傾斜角度を指定 */
}
.sidenavs p {
  margin:20px 80px;
  /* サイドバーのボタン位置を調整 */
  width:250px;
}
/* クローズボタン */
.sidenavs .close-btn {
  position: absolute;
  /* 親要素との絶対位置を指定 */
  top: 0;
  right: 25px;
  font-size: 36px;
  margin-left: 50px;
}
ここがポイント!
  1. 長さの異なるボーダーを縦に並べることで「ドネルメニュー(Doner Menu)」を実現
  2. ドネルメニューをクリックするとtransform:translateが実行されサイドバーが横方向にスライドしながら現れるアニメーションを実現
  3. ドネルメニューをhoverするとopacityが実行されて透明化する
  4. サイドバーのwidthを40%に調整
  5. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
  6. サイドバーのボタンをhoverするとtransform:skewが実行されボタンが斜めに傾くアニメーションとなるように傾斜角度を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)

 

2. サイドバーが拡大しながらスライド表示されるハンバーガーメニュー

動きは下の画像のような感じになります

コードを見る
<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">&times;</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: 40%;
  /* サイドメニューの幅 */
  display:block;
  transform:translate(865px,0px);
  /* XY軸(横縦)の移動距離を指定 */
}
.sidenavs:target {
  overflow-x: hidden;
  /* ボックスからはみ出る箇所を隠す */
  width: 0;
  transition-duration:1.2s;
  /* アニメーションの時間を0.5秒に指定 */
}
/* ハンバーガーメニュー表示時 */
.sidenavs {
  height: 100%;
  width: 0;
  position: fixed;
  /* 画像の配置を指定 */
  z-index: 1;
  top: 0;
  left: 0;
  background-image:url("https://source.unsplash.com/1000x802");
  /* サイドバーの背景画像を指定 */
  overflow-x: hidden;
  /* 横スクロールを無効にする */
  padding-top: 60px;
  transition: 0.8s;
  /* アニメーションの時間を0.5秒に指定 */
  transform:translate(0px,750px);
  /* XY軸(横縦)の移動距離を指定 */
}
/* ハンバーガーメニュー表示時のリンク */
.sidenavs a {
  text-decoration: none;
  font-size: 45px;
  /* 文字サイズを大きめに調整 */
  color: white;
  display: block;
  transition: 0.5s;
  /* アニメーションの時間を0.5秒に指定 */
  font-weight:bold;
}
/* マウスオーバー後のリンク */
.sidebar-btn a {
  transform:skewX(0deg);
  /* X軸の傾斜角度を指定 */
}
.sidebar-btn a:hover {
  color: black;
  transform:skewX(-20deg);
  /* X軸の傾斜角度を指定 */
}
.sidenavs p {
  margin:20px 80px;
  /* サイドバーのボタン位置を調整 */
  width:250px;
}
/* クローズボタン */
.sidenavs .close-btn {
  position: absolute;
  /* 親要素との絶対位置を指定 */
  top: 0;
  right: 25px;
  font-size: 36px;
  margin-left: 50px;
}
ここがポイント!
  1. 長さの異なるボーダーを縦に並べることで「ドネルメニュー(Doner Menu)」を実現
  2. ドネルメニューをクリックするとtransform:translateXYが実行されサイドバーが下から斜め上にスライドしながら現れるアニメーションを実現
  3. ドネルメニューをhoverするとopacityが実行されて透明化する
  4. サイドバーのwidthを40%に調整
  5. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
  6. サイドバーのボタンをhoverするとtransform:skewが実行されボタンが斜めに傾くアニメーションとなるように傾斜角度を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)

 

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">&times;</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: 40%;
  /* サイドメニューの幅 */
  display:block;
  transform:translate(865px,0px) rotate(360deg);
  /* XY軸(横縦)の移動距離とZ軸の回転角度を指定 */
}
.sidenavs:target {
  overflow-x: hidden;
  /* ボックスからはみ出る箇所を隠す */
  width: 0;
  transition-duration: .8s;
  /* アニメーションの時間を0.5秒に指定 */
}
/* ハンバーガーメニュー表示時 */
.sidenavs {
  height: 100%;
  width: 0;
  position: fixed;
  /* 画像の配置を指定 */
  z-index: 1;
  top: 0;
  left: 0;
  background-image:url("https://source.unsplash.com/1000x801");
  /* サイドバーの背景画像を指定 */
  overflow-x: hidden;
  /* 横スクロールを無効にする */
  padding-top: 60px;
  transition: 0.8s;
  /* アニメーションの時間を0.5秒に指定 */
  transform:translate(0px,750px) rotate(0deg);
  /* XY軸(横縦)の移動距離とZ軸の回転角度を指定 */
}
/* ハンバーガーメニュー表示時のリンク */
.sidenavs a {
  text-decoration: none;
  font-size: 45px;
  /* 文字サイズを大きめに調整 */
  color: white;
  display: block;
  transition: 0.5s;
  /* アニメーションの時間を0.5秒に指定 */
  font-weight:bold;
}
/* マウスオーバー後のリンク */
.sidebar-btn a {
  transform:skewX(0deg);
  /* X軸の傾斜角度を指定 */
}
.sidebar-btn a:hover {
  color: black;
  transform:skewX(-20deg);
  /* X軸の傾斜角度を指定 */
}
.sidenavs p {
  margin:20px 80px;
  /* サイドバーのボタン位置を調整 */
  width:250px;
}
/* クローズボタン */
.sidenavs .close-btn {
  position: absolute;
  /* 親要素との絶対位置を指定 */
  top: 0;
  right: 25px;
  font-size: 36px;
  margin-left: 50px;
}
ここがポイント!
  1. 長さの異なるボーダーを縦に並べることで「ドネルメニュー(Doner Menu)」を実現
  2. ドネルメニューをクリックするとtransform:translateXYが実行されサイドバーが下から斜め上にスライドすることに加えて、transform:rotateが実行されサイドバーが手裏剣のように回転しながら現れるアニメーションを実現
  3. ドネルメニューをhoverするとopacityが実行されて透明化する
  4. サイドバーのwidthを40%に調整
  5. transitionプロパティを指定して開始から終了までの自然なアニメーションを実現
  6. サイドバーのボタンをhoverするとtransform:skewが実行されボタンが斜めに傾くアニメーションとなるように傾斜角度を調整(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)

 

『絶対にリモートワーク!』という方におすすめの求人サイト

クラウドテック
Web制作案件の数
(5.0)
案件の単価
(4.0)
使いやすさ
(5.0)
案件獲得効率
(5.0)
初心者向け
(5.0)
オススメ度
(5.0)
総合評価
(5.0)
この講座のポイント

対象
Webデザイナー・エンジニア・グラフィックデザイナー・PM・マーケター・ライター

 

公式サイト
クラウドテック公式ページ

特徴

  • クラウドソーシング企業大手のクラウドワークスが運営する求人サイト
  • 実務未経験者でもOK
  • 登録社数14万社
  • フリーランス・個人事業主向け案件がケタ違いに多い
  • 報酬額や勤務地・職種など希望が通りやすい
  • Web制作・コーディングの高単価案件が多い
  • リモートワーク案件数は業界トップクラス
  • 最短3日で案件を獲得できる

 

現役Webデザイナーの筆者イチオシの求人サイト!フリーランス向けWeb制作案件なら確実に業界トップクラス。営業かけずに案件に困らなくなる一番の近道です。

ふたご

 

無料で登録してみる >>

 

 

まとめ

HTMLとCSSを使うと今回紹介したようなことも簡単にできてしまうんです。

 

『CSSアニメーションやエフェクトだけではなくWebサイトをゼロから作って稼いでいきたい』

『3ヶ月くらいで最低でも月10万円は稼ぎたい』

『営業とかやったことないけどWeb制作だけで稼いでいきたい』

 

こんな方のためにWeb制作で月80万超稼ぐ筆者が自身の経験を踏まえて【失敗しない】Webデザイナー(Web制作)独学ロードマップを執筆しました。

 

少額の投資で3ヶ月後には月10〜30万稼げるよう設計してあります。
(学習教材やAdobeなど最低限のコストはかかります)

 

ロードマップの構成
  1. Web制作に特化した『確実に身に付く』学習方法
  2. Web制作会社が喰いつく理想的なポートフォリオの作成手順
  3. 返信率10%以上!Web制作会社へのメール営業

 

有料公開も考えましたが「Webデザイナー(Web制作)はまだまだ稼げることを証明したい!」という思いが強く、期間限定で無料公開をすることにしました。

 

2021年半ばまでは無料公開する予定ではありますが前倒しすることもあり得ますのでご興味ある方はお早めにどうぞ!