初学者です。ハンバーガーメニューを作っています。
html
1<nav class="nav"> 2 <ul class="nav-list"> 3 <li class="nav-list__item"> 4 <a href="#">home</a> 5 </li> 6 <li class="nav-list__item"> 7 <a href="#">works</a> 8 </li> 9 <li class="nav-list__item"> 10 <a href="#">service</a> 11 </li> 12 <li class="nav-list__item"> 13 <a href="#">contact</a> 14 </li> 15 <li class="nav-list__item"> 16 <a href="#">blog</a> 17 </li> 18 </ul> 19 <button 20 class="hamburger js-hamburger" 21 aria-controls="global-nav" 22 aria-expanded="false" 23 > 24 <span class="bar"> 25 <span class="screen-reader-text">メニューを開閉する</span> 26 </span> 27 </button> 28 </nav>
sass
1.nav { 2 background-color: #fff; 3 width: 240px; 4 height: 350px; 5 top: 0; 6 left: -240px; 7 position: fixed; 8 top: 60vh; 9 box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5); 10 .nav-list { 11 margin: 0; 12 padding: 0; 13 top: 50px; 14 left: 50%; 15 transform: translateX(-10%); 16 position: absolute; 17 .nav-list__item { 18 margin: 0; 19 list-style: none; 20 a { 21 display: block; 22 text-decoration: none; 23 color: #000; 24 padding: 10px; 25 text-align: center; 26 } 27 } 28 } 29 .hamburger { 30 box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5); 31 background-color: #fff; 32 display: block; 33 position: absolute; 34 top: 150px; 35 left: 240px; 36 width: 52px; 37 height: 52px; 38 margin: 0; 39 padding: 0; 40 border: none; 41 position: absolute; 42 .bar { 43 display: block; 44 background-color: #000; 45 width: 24px; 46 height: 1px; 47 position: absolute; 48 top: 50%; 49 left: 50%; 50 transform: translateX(-50%); 51 &::before, 52 &::after { 53 content: ""; 54 width: 100%; 55 height: 100%; 56 position: absolute; 57 background-color: #000; 58 } 59 &::before { 60 top: 6px; 61 left: 0; 62 63 } 64 &::after { 65 top: -6px; 66 left: 0; 67 } 68 } 69 } 70}
js
1$(function() { 2 // 3 var duration = 300; 4 5 // aside ---------------------------------------- 6 var $nav = $(".nav"); 7 var $asidButton = $nav.find(".js-hamburger").on("click", function() { 8 $nav.toggleClass("open"); 9 if ($nav.hasClass("open")) { 10 $nav.stop(true).animate({ left: "-70px" }, duration, "easeOutBack"); 11 } else { 12 $nav.stop(true).animate({ left: "-240px" }, duration, "easeInBack"); 13 } 14 }); 15}); 16
jsでnavにopenというclassは追加されますが、//の部分が効かないです。
sass
1.nav.open .hamburger .bar { 2 background-color: transparent; 3} 4.nav.open .hamburger .bar::before { 5 top: 0; 6 transform: rotate(45deg); 7} 8.nav.open .hamburger .bar::after { 9 top: 0; 10 transform: rotate(-45deg); 11}
を追加したいです。
transform: rotate(45deg); だけが効かないのですか?
top:0;は効いているのでしょうか。
試しに、開発者ツールで他のスタイルを指定したらどうなりますか?
動きがないという意味だったら、transition:all .3s (任意の数値に変更)が足りないのかなと思います。
.open &
で追加したところという意味です。
間違えているところを消さないでください……。
編集履歴から初版を拾うことができるにはできるんですが、
今の状態ではパッと見「投げっぱなし」の質問と思われてしまいます。
あらら……
回答が付いた質問の編集は慎重に行ってください。質問文のコードについて回答にて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。後から見た人から見て、現在回答されておられる方の回答が「無いコードに対しての指摘」になり、意味がわからなくなります。
回答2件
あなたの回答
tips
プレビュー