Webデザイン・マーケティング課 授業34日目
1〜3時間目 レスポンシブwebデザイン
オリジナル教材
ハンバーガーメニューを完成させる。
ヘッダーとスクロールのアイコンを作る。
■ハンバーガーメニューを完成させる
昨日は、ハンバーガーメニューのボタン部分を作ったので、今日はメニュー部分を作って完成させます。
<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>
htmlは、昨日の段階から変わっていないです。主にnavの部分のCSSを組んでいきます。
header nav {
opacity: 0;
visibility: hidden;
position: fixed;
background-color: #faebdf;
top: 0;
left: 0;
width: 100%;
height: 100vh;
padding-top: 64px;
padding-left: 32px;
padding-right: 32px;
transition: 0.5s;
}
header.on nav {
opacity: 1;
visibility: visible;
}
昨日作った、headerにクラスonをつけたり外したりするjsを活かして、navのデザインを作ってあらかじめ非表示にしておいて、onがheaderに付加されるとメニューが表示される様にします。
あとは、メニュー自体の見た目を整えます。
文字を大きくしたり、ボーダーつけたり。
header nav .menu_body a {
color: #666666;
display: block;
}
header nav .menu_body>li:not(:last-child) {
border-bottom: 1px solid #666666;
}
header nav .menu_body>li ul {
font-size: 2rem;
padding-left: 3rem;
border-top: 1px solid #666666;
}
header nav .menu_body>li ul li {
border-bottom: 1px dotted #666666;
}
次に、pcサイズの時のcssを組みます。
今回は、1025px以上がpcになる様にブレイクポイントを組んでいます。
@media screen and (min-width:1025px) {
header .menu_btn {
display: none;
}
header nav {
opacity: 1;
visibility: visible;
position: static;
width: auto;
height: auto;
background-color: transparent;
padding-top: 0;
padding-left: 0;
padding-right: 0;
}
header nav .menu_body {
line-height: 2;
font-size: 1.6rem;
display: flex;
}
header nav .menu_body a {
color: #f77237;
}
header nav .menu_body>li {
margin-left: 30px;
}
header nav .menu_body>li:not(:last-child) {
border-bottom: none;
}
header nav .menu_body>li ul {
font-size: 1.6rem;
padding-left: 0;
border-top: none;
display: none;
position: fixed;
}
header nav .menu_body>li:hover ul {
display: block;
}
header nav .menu_body>li ul li {
border-bottom: none;
}
}
/*======min-width:1025px========*/
少し長いコードですが、要はハンバーガーメニューを、pcでみた時は普通のグローバルナビゲーションにしています。
■キービジュアルを作る
nav部分は、一つのhtmlを無理やりcssでSPとPCに分けましたが、今回のキービジュアルはSPとPCでデザインが全然違うので、無理やりcssで分けるのが難しそうなので、最初からSPとPCで表示するhtmlをバラバラに用意しておきます。
そのバラバラに用意したhtmlをcssのdisplay:noneを使って、表示を出し変えます。
<div class="key">
<div class="inner">
<div class="sp">
<img src="img/logo_white.png" alt="">
</div>
<div class="pc">
<p>
美味しいケーキを<br>
一人でも多くのお客様に<br>
召し上がっていただきたい<br>
<span>それがCHALONの想いです</span>
</p>
</div>
</div>
</div>
.key {
background-image: url(../../img/key.jpg);
height: 80vh;
background-size: cover;
background-position: center center;
}
.key .pc {
display: none;
}
.key .sp {
display: flex;
height: 80vh;
align-items: center;
justify-content: center;
}
@media screen and (min-width:1025px) {
.key .sp {
display: none;
}
.key .pc {
display: flex;
height: 80vh;
align-items: center;
justify-content: center;
}
.key .pc p {
background-color: rgba(247, 114, 55, 0.5);
color: #fff;
text-align: center;
font-size: 4.6rem;
line-height: 1.5;
padding: 46px;
font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "HG明朝E", "MS P明朝", "MS 明朝", serif;
}
.key .pc p span {
font-size: 2.1rem;
}
}
/*======min-width:1025px========*/
■スクロールアイコンを作る
googleのiconfontを使ってスクロールアイコンを作る。
前回までと、ちょっと使い方かわった?
<link rel="stylesheet" href="https://fonts.sandbox.google.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0" />
選んだiconのcssを読み込んで、
<span class="material-symbols-outlined">
expand_more
</span>
htmlを書けばOK
■まとめ
おそらくレスポンシブで一番面倒であろうハンバーガーメニューが終わったので、ちょっとずつスピード感出てきた。
この調子で進めていこう。
この記事が気に入ったらサポートをしてみませんか?