1:ヘッダーやサイドバーを作成しベースを完成させる
モバイルメニューのところで作成したstyle.scssを流用する
_mobile-menu.scssにリネームしてmodulesに貼り付けする
style.scssで読み込むのも忘れずに
_mobile-menu.scssに以下の記述を追加
$cMenuClose: Black;
$cMenuOpen: Black;
.mobile-menu {
position: fixed;
right: 0;
// 上から60px
top: 60px;
width: 300px;
& .logo {
padding: 0 40px;
font-size: 38px;
}
// BEM(Block Element Modifier)
&__btn {
background-color: unset;
border: none;
outline: none !important;
cursor: pointer;
& > span {
background-color: $cMenuClose;
width: 35px;
height: 2px;
display: block;
margin-bottom: 9px;
transition: transform 0.7s;
&:last-child {
margin-bottom: 0;
}
}
}
// 黒い膜をつける
&__cover {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.3);
opacity: 0;
visibility: hidden;
transition: opacity 1s;
cursor: pointer;
z-index: 200;
}
&__main {
padding: 0;
// 3Dアニメーションをしたいとき親の要素につける
perspective: 2000px;
transform-style: preserve-3d;
}
&__item {
// ・をけす
list-style: none;
display: block;
transform: translate3d(0, 0, -1000px);
padding: 0 40px;
transition: transform 0.3s, opacity 0.2s;
opacity: 0;
}
&__link {
// 左右いっぱいに広がるようにする
display: block;
margin-top: 30px;
color: $cBlack;
// 下線を削除
text-decoration: none !important;
}
}
.menu-open {
// クリックしたときに左下にずれるアニメーションの設定
& #container {
transform: translate(-300px, 60px);
box-shadow: 0 8px 40px -10px rgba(0, 0, 0, 0.8);
}
// クリックされたときの記述を書く
& .mobile-menu {
&__cover {
opacity: 1;
visibility: visible;
}
&__item {
transform: none;
opacity: 1;
// 要素を少しずつ遅延して表示
@for $i from 1 through 5 {
&:nth-child(#{$i}) {
transition-delay: $i * 0.07s;
}
}
}
&__btn {
& > span {
background-color: $cMenuOpen;
&:nth-child(1) {
transition-delay: 70ms;
transform: translateY(11px) rotate(135deg);
}
&:nth-child(2) {
transition-delay: 0s;
transform: translateX(-18px) scaleX(0);
}
&:nth-child(3) {
transition-delay: 140ms;
transform: translateY(-11px) rotate(-135deg);
}
}
}
}
}