前提
いつもお世話になっております。
今回お聞きしたいことは、スクロールした際headerを上部に固定する方法についてです。
php、css、jqueryを使用し、現在課題をこなしているのですが、画面をスクロールした際ヘッダーを固定することができずに悩んでいます。
実現したいこと
・jqueryでスクロールにて一定の箇所までスクロールしたらヘッダーが上部に固定され、上部のheader部に戻ると元に戻る。
→jqueryで対象のヘッダーのnav要素にスクロールをしたらclassが付与され、position: fixed;を記述し適応させる。上までスクロールするとclassが取り除かれ、ヘッダーが元の位置へ戻る。
このようなことがしたいのですが、上手くいきません。
該当のソースコード
php
1<header> 2 <nav id="menus"> 3 <div id="menu_logos"> 4 <a href="#" class="menu_logo"><img src="./img/logo.png"></a> 5 </div> 6 <div class="nav_list"> 7 <a href="#" class="menu">はじめに</a> 8 <a href="#" class="menu">体験</a> 9 <a href="#" class="menu">お問合せ</a> 10 </div> 11 <div class="menu_sinin"> 12 <a href="#" class="sinin_text">サインイン</a> 13 </div> 14 </nav> 15 <div class="top_h1"> 16 <hi class="menu_toptext"><b>あなたと<br>今日を生きる</b></h1> 17 </div> 18</header>
css
1header { 2 background-image: url('./cafe/img/eyecatch.jpg'); 3 filter: opacity(80%); 4 width: 100%; 5 background-size: cover; 6 background-position: center; 7 height: 550px; 8} 9 10#menus { 11 display: flex; 12 justify-content: space-between; 13 margin: 0 auto; 14 padding-top: 15px; 15 width: 100%; 16 align-items: center; 17 flex-wrap: wrap; 18} 19 20#menu_logos { 21 flex: 25%; 22 display: flex; 23 justify-content: space-between; 24} 25 26.menu_logo img { 27 position: relative; 28 top: 3px; 29 left: 15%; 30 margin: 0 auto; 31 width: 85%; 32 height: auto; 33 filter: opacity(90%); 34} 35 36#menus a { 37 color: rgba(255, 255, 255, 0.9); 38 text-decoration: none; 39} 40 41.nav_list { 42 flex: 50%; 43 display: flex; 44 flex-wrap: wrap; 45 justify-content: center; 46} 47 48.nav_list a { 49 padding: 0 1rem; 50} 51 52.menu_toptext { 53 position: relative; 54 width: 90%; 55 top: 150px; 56 left: 30px; 57 font-size: 64px; 58 color: rgba(255, 255, 255, 0.85); 59 line-height: 85%; 60} 61 62.menu_sinin { 63 position: relative; 64 right: 5%; 65 display: flex; 66 flex: 25%; 67 justify-content: flex-end; 68} 69 70.tennki { 71 color: aqua; 72} 73
jquery
1$(function () { 2 var scroll_text = $(#menus).offset().top; 3 $(window).scroll(function(){ 4 if($(this).scrollTop() > scroll_text){ 5 $("#menus").addClass('lord_menu'); 6 } else { 7 $("#menus").removeClass('lord_menu'); 8 } 9 }); 10}); 11
試したこと
css内に以下のことを記述しましたが、適応されないようです。
#menus .lord_menu { position: fixed; top: 0; z-index: 10; width: 100%;
要素のcssに直接(lord_menu)のクラスを記述し、cssに記述すると色を変えたりすることが出来ますし、Googleの検証機能を使うとスクロールすることで確かにclassは付与されているようです。
1日記述を変えてみたり、そもそものjqueryを変えて見るなど、色々と考えましたが答えが出ずに1日終わってしまいました。
わかる方は教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/08/31 17:25
退会済みユーザー
2022/09/01 13:44
退会済みユーザー
2022/09/01 13:45
退会済みユーザー
2022/09/01 14:03 編集
退会済みユーザー
2022/09/01 14:57
退会済みユーザー
2022/09/01 15:05
退会済みユーザー
2022/09/01 15:09
退会済みユーザー
2022/09/01 15:16