見出し画像

Webデザイン・マーケティング課 授業33日目

1〜3時間目 レスポンシブwebデザイン
オリジナル教材

サンプルサイトを作っていく。

今日は、全体のテキストの設定と、ヘッダーの作成の途中まで。


■header部分のHTMLを書く

<header>
   <div class="inner">
       <h1 class="logo"><a href="#"><img src="img/logo.png" alt="洋菓子店CHALON"></a></h1>
       <div class="menu_btn">
           <span></span>
           <span></span>
           <span></span>
       </div>
       <nav>
           <ul class="menu_body">
               <li><a href="#">当店について</a></li>
               <li><a href="#">メニュー</a></li>
               <li>
                   <a href="#">お菓子教室</a>
                   <ul>
                       <li><a href="#">ご参加の流れ</a></li>
                       <li><a href="#">参加者の声</a></li>
                       <li><a href="#">お申込み</a></li>
                   </ul>
               </li>
           </ul>
       </nav>
   </div>
</header>

ここまで書けたら、ひとまずcssでハンバーガーメニューを作っていく。


■全体のテキストの設定をcssで作る

html {
   font-size: 62.5%;
}


body {
   font-size: 1.6rem;
   font-family: "游ゴシック体", "Yu Gothic", YuGothic, "ヒラギノ角ゴシック Pro", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, "Osaka", "MS Pゴシック", "MS PGothic", sans-serif;
   line-height: 2;
   color: #333;
}

htmlのfont-sizeを62.5%に設定する。こうすると、多くのブラウザでhtmlタグの文字の大きさが10px相当になる。

その後bodyタグのfont-sizeに1.6remを設定することで、bodyタグのfont-sizeを16pxにする。この書き方にすることで、font-sizeに絶対的な数値にすることなく設定できる。


■CSSでハンバーガーボタンを作る

header {
   padding-top: 20px;
}

header .inner {
   display: flex;
   justify-content: space-between;
   align-items: center;
}

header nav {
   display: none;
}

header .menu_btn {
   width: 24px;
   height: 24px;
}

header .menu_btn span {
   display: block;
   height: 2px;
   width: 100%;
   background-color: #333;
   transition: 0.3s;
}

header .menu_btn span:nth-child(2) {
   transform: translateY(9px);
}

header .menu_btn span:nth-child(3) {
   transform: translateY(18px);
}

header.on .menu_btn span:nth-child(1) {
   transform: translateY(11px) rotate(45deg);
}

header.on .menu_btn span:nth-child(2) {
   display: none;
}

header.on .menu_btn span:nth-child(3) {
   transform: translateY(9px) rotate(-45deg);
}

一旦navタグを非表示にしてから進めます。(navタグは、明日に完成させる予定です)

まず、spanタグを使ってハンバーガーメニューを作ります。背景色を黒にして、高さを2px、横幅を100%(今回は24px)にして作ります。

header .menu_btn {
   width: 24px;
   height: 24px;
}

header .menu_btn span {
   display: block;
   height: 2px;
   width: 100%;
   background-color: #333;
   transition: 0.3s;
}

そのspanをtransformで移動して3本線を作ります。

header .menu_btn span:nth-child(2) {
   transform: translateY(9px);
}

header .menu_btn span:nth-child(3) {
   transform: translateY(18px);
}

これで3本線が出来上がります。

画像1


次に、headerタグにクラスonをつけた時にxになる様に作ります。

header.on .menu_btn span:nth-child(1) {
   transform: translateY(11px) rotate(45deg);
}

header.on .menu_btn span:nth-child(2) {
   display: none;
}

header.on .menu_btn span:nth-child(3) {
   transform: translateY(9px) rotate(-45deg);
}

真ん中のspanを非表示にして、1番目と3番目のspanの位置を同じにして角度を45度ずらします。

こうすることでxになります。

画像2


■jsでheaderタグにクラスonをつけたり外したりする

あとは、クラスonをつけたり外したりします。

//.menu_btnをクリックしたら
$('.menu_btn').on('click', () => {
   //headerタグに、.onをつけたり消したりしたい
   $('header').toggleClass('on');
});

スクリプト自体はとてもシンプルですね。

.menu_btnをクリック(タップ)するたびに、headeタグにクラスonをつけたり外したりします。


■まとめ

ひとまず今日は、ハンバーガーメニューのボタンの部分を作りました。scriptがやっているのは、あくまでクラスをつけたり外したりしているだけで、アニメーションはcssに任せているのがちょっとポイントです。

この記事が気に入ったらサポートをしてみませんか?