質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

963閲覧

jQueryで背景の高さを取得したい

azaz_wb

総合スコア10

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/03/30 04:31

ハンバーガーメニューが背景の黒い部分(特定の高さ)を超えたときに色が変わるようにしたいです。
imgHeightに背景の高さを取得した値を入れたいのですが、ヘッダーの高さになってしまいます。
var imgHeight = $('first').outerHeight();を var imgHeight = $('.first').outerHeight();にすると反応しなくなるのもなぜかわかりません。
拙い文章ですが、わかる方いましたら教えていただきたいです。

HTML

1<header> 2 <h1 class="site-title"> 3 <a href="./nmt.html"> 4 <img src="img/site-logo.png" class="logo" alt="ロゴ"> 5 </a> 6 </h1> 7 8 <!-- ハンバーガーメニュー部分 --> 9<div class="drawer" id="burger"> 10 11 <!-- ハンバーガーメニューの表示・非表示を切り替えるチェックボックス --> 12 <input type="checkbox" id="drawer-check" class="drawer-hidden" > 13 14 <!-- ハンバーガーアイコン --> 15 <label for="drawer-check" class="drawer-open" id="click"> 16 <span></span> 17 <p class="menu">menu</p> 18 </label> 19 20 <!-- メニュー --> 21 <nav class="drawer-content"> 22 <ul class="drawer-list" id="humber"> 23 <li class="drawer-item"> 24 <a href="#desa" style="text-decoration:none;">About</a> 25 </li><!-- /.drawer-item --> 26 <li class="drawer-item"> 27 <a href="#services" style="text-decoration:none;">Service</a> 28 </li><!-- /.drawer-item --> 29 <li class="drawer-item"> 30 <a href="#newses" style="text-decoration:none;">news</a> 31 </li><!-- /.drawer-item --> 32 <li class="drawer-item"> 33 <a href="#contacts" style="text-decoration:none;">Contact</a> 34 </li><!-- /.drawer-item --> 35 </ul><!-- /.drawer-list --> 36 </nav> 37 <span class="burger-musk" id="musk"></span> 38</div><!--drawer--> 39 40</header> 41 42<div class="contents"> 43<div class="first"> 44 <div class="company"> 45 <div class="copy-size"> 46 <p class="copy">デザインで人を笑顔にする会社<br>DIGSMILE INC.</p> 47 <h1 class="copy design">DESIGN<br>FOR<br>SMILE</h1> 48 </div> 49 </div> 50</div><!--first--> 51</div><!--contents-->

CSS

1header { 2 height: 60px; 3 width: auto; 4 position: absolute; 5} 6 7.logo { 8 margin-left: 50px; 9} 10 11.contents { 12 height: 90%; 13} 14/*ファーストビュー*/ 15.contents { 16 height: 100%; 17} 18 19.first { 20 height: 100%; 21 background-image: url(img/kv-img.png); 22 height: 90%; 23 width: 80%; 24 background-size: cover; 25 z-index: 5; 26 padding: 0; 27 margin: 0; 28} 29 30.first::after { 31 content: ""; 32 display: block; 33 position: absolute; 34 top: 0; 35 right: 0; 36 background-color: #222; 37 width: 50%; 38 height: 100%; 39 z-index: -1; 40} 41 42/* チェックボックスは非表示に */ 43.drawer-hidden { 44 display: none; 45} 46 47/* ハンバーガーアイコンの設置スペース */ 48.drawer-open { 49 display: flex; 50 height: 60px; 51 width: 15%; 52 justify-content: center; 53 align-items: center; 54 position: relative; 55 z-index: 100;/* 重なり順を一番上に */ 56 cursor: pointer; 57 float: right; 58 z-index: 100; 59 position: fixed; 60 top: 0px; 61 right: 0px; 62} 63 64/* 三本線のうち一番上の棒の位置調整 */ 65.drawer-open span:before { 66 bottom: 8px; 67} 68 69/* 三本線のうち一番下の棒の位置調整 */ 70.drawer-open span:after { 71 top: 8px; 72} 73 74/* アイコンがクリックされたら真ん中の線を透明にする */ 75#drawer-check:checked ~ .drawer-open span { 76 background: rgba(255, 255, 255, 0); 77} 78 79/* アイコンがクリックされたらアイコンが×印になように上下の線を回転 */ 80#drawer-check:checked ~ .drawer-open span::before { 81 bottom: 0; 82 transform: rotate(45deg); 83} 84#drawer-check:checked ~ .drawer-open span::after { 85 top: 0; 86 transform: rotate(-45deg); 87} 88/*menuクリックでトーンを下げる*/ 89#drawer-check:checked ~ .burger-musk{ 90 opacity: 1; 91 transition: .8s; 92} 93 94/* メニューのデザイン*/ 95.drawer-content { 96 width: 30%; 97 height: 100%; 98 position: fixed; 99 top: 0; 100 left: 100%;/* メニューを画面の外に飛ばす */ 101 z-index: 99; 102 background: rgba(12, 12, 12, 0.911); 103 transition: .5s; 104 text-align: center; 105 padding-top: 100px; 106} 107 108.drawer-content ul { 109 list-style: none; 110} 111 112.drawer-content a { 113 color: white; 114} 115 116/* アイコンがクリックされたらメニューを表示 */ 117#drawer-check:checked ~ .drawer-content { 118 left: 70%;/* メニューを画面に入れる */ 119} 120/* チェックボックスは非表示に */ 121.drawer-hidden { 122 display: none; 123} 124/*ハンバーガーメニュー*/ 125.drawer-open span, 126.drawer-open span::before, 127.drawer-open span::after { 128 content: ''; 129 display: block; 130 height: 3px; 131 width: 25px; 132 border-radius: 3px; 133 background: #fff; 134 transition: 0.5s; 135 position: absolute; 136} 137 138.drawer-item { 139 font-size: 30px; 140 padding-bottom: 40px; 141} 142 143.drawer { 144 display: block; 145} 146 147.burger-musk { 148 background-color: rgba(56, 56, 56, 0.603); 149 width: 100%; 150 height: 100%; 151 position: fixed; 152 padding: 0; 153 margin: 0; 154 top: 0; 155 opacity: 0 156} 157 158.drawer-open.change span, 159.drawer-open.change span:before, 160.drawer-open.change span:after { 161 content: ''; 162 display: block; 163 height: 3px; 164 width: 25px; 165 border-radius: 3px; 166 background: #222; 167 transition: 0.5s; 168 position: absolute; 169} 170.drawer-open.change span.change { 171display: flex; 172height: 60px; 173width: 15%; 174justify-content: center; 175align-items: center; 176position: relative; 177z-index: 100;/* 重なり順を一番上に */ 178cursor: pointer; 179float: right; 180z-index: 100; 181position: fixed; 182top: 0px; 183right: 0px; 184} 185 186body.nonscroll { 187 overflow: hidden; 188} 189.menu { 190 display: block; 191 font-size: 1rem; 192 text-transform: uppercase; 193 color: #fff; 194 font-weight: bold; 195 float: right; 196 margin-left: 100px; 197 padding-top: 0; 198 font-family: 'arial black'; 199} 200 201.copy { 202 color: #fff; 203 display: block; 204 margin-bottom: 10px; 205} 206 207.copy-size p { 208 padding-bottom: 10px; 209 font-size: 20px; 210} 211 212.design { 213 font-family: 'arial black'; 214 margin-top: 0; 215 font-size: 80px; 216} 217 218.company { 219 z-index: 100; 220 padding-top: 180px; 221 margin-right: -180px; 222 display: flex; 223 justify-content: flex-end; 224} 225 226.company h1 { 227 font-size: 70px; 228}

jQuery

1/*スクロールで色変更*/ 2jQuery(window).on('scroll', function () { 3 var imgHeight = $('first').outerHeight(); 4 5 /*色変更*/ 6 if (jQuery(imgHeight).height() < jQuery(this).scrollTop()) { 7 $('.menu').css('color','#222'); 8 $('.drawer-open').addClass('change') 9 } else { 10 jQuery('.menu').css('color','#fff'); 11 $('.drawer-open').removeClass('change'); 12 } 13}) 14 15/*ハンバーガーメニュー開いたときスクロールしない*/ 16$('.drawer-open').click(function(){ 17 $('body').toggleClass('nonscroll'); 18})

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

diff

1jQuery(window).on('scroll', function () { 2- var imgHeight = $('first').outerHeight(); 3+ var imgHeight = $('.first').outerHeight(); 4 console.log(imgHeight + ' ' + jQuery(this).scrollTop()); 5 /*色変更*/ 6- if (jQuery(imgHeight).height() < jQuery(this).scrollTop()) { 7+ if (imgHeight < jQuery(this).scrollTop()) { 8 $('.menu').css('color','#222'); 9 $('.drawer-open').addClass('change') 10 } else { 11 jQuery('.menu').css('color','#fff'); 12 $('.drawer-open').removeClass('change'); 13 } 14})

クラスセレクタは . が必要。

imgHeight にはすでに数値(高さ)が格納さているのに、jQuery().height() に入れたらエラーになる。

投稿2021/03/30 05:41

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azaz_wb

2021/03/30 12:31

二重に書いてしまっていたと言うことですね。 解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問