現在サイドメニューがあるWebページを作成しております。
たとえば、ページ内のAboutが表示されている間は、メニューのAbout部分(文字とその上のバー)の色を濃く変えたいと思っています。
以下のコードで実装はできたのですが、色が濃く変わると文字だけが少し上にズレてしまいます。
大きな問題はないのですが、原因を知りたいと思い、こちらに投稿いたしました。
HTML
1 <div id="menublock1"> 2 <a href="#about"> <!--開いているときに色変更--> 3 <img class="menubar" src="img/003bar.png" alt="メニューバー" border="0"> 4 <img class="current" src="img/003bar_change.png" alt="メニューバー" border="0"> 5 <h2 class="sidemenu">About</h2></a> 6 </div>
CSS
1#menublock1 { 2 width: 18%; 3 position: fixed; 4 top: 15vw; 5 left: 3vw; 6} 7 8.menubar { 9 width: 56.8%; 10} 11 12.current{ 13display: none; 14} 15 16.current.vivid { 17 width: 56.8%; 18} 19 20a { 21 text-decoration: none; 22} 23 24.sidemenu { 25 font-family: 'Fugaz One', cursive; 26 font-weight: 400; 27 color: #ff9bcdff; 28 font-size: 2.5vw; 29 letter-spacing: 0.03em; 30 transform: rotate(-10deg); 31 line-height: 60%; 32 text-indent: 0.3em; 33} 34 35.sidemenu.vivid { 36 color: #ff007fff; 37}
jQuery
1$(function(){ 2 3 $(window).on('scroll',function(){ 4 5 $('#menublock1 .current, #menublock1 .sidemenu').each(function() { 6 let now = $(window).scrollTop(); 7 let posTop = $('#about').offset().top; 8 let posBottom = $('#about').offset().top + $('#about').outerHeight(); 9 10 if(posTop < now && now <= posBottom) { 11 $(this).addClass('vivid'); 12 $('#menublock1 .current').show(); 13 $('#menublock1 .menubar').hide(); 14 } else { 15 $(this).removeClass('vivid'); 16 $('#menublock1 .current').hide(); 17 $('#menublock1 .menubar').show(); 18 } 19 }); 20 21 }); 22 23});
003bar.pngと003bar_change.pngの画像サイズは全く同じです。
試したこと
・CSS内.sidemenu.vividに.sidemenuと同様(文字色コード以外)の記述をする
→上記コードの挙動と変わりませんでした
確認に使用しているブラウザはMicrosoft Edgeです。
原因をご存知でしたらお教えいただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/24 09:29 編集