上から下にスクロールするたびに、別のスタイルをヘッダーに適用しようとしています。基本的には、上にスクロールしてスタイル1を適用し、上にスクロールしない場合はスタイル2を適用します。上からスクロールした後の要素のスタイルを変更する
これを実現するにはwhileとforループを使用してみましたが、両方失敗しました。以下のjQueryの例は動作しましたが、何らかの理由でこの例ではありません。しかし、私はJavaScriptを学んでいるので、むしろjQueryよりもJavaScriptを使用したいと思います。
私はこのために何を使うべきかアドバイスしてくれますか?誰かが私の試みに間違ったことを教えてもらえますか?
ありがとうございました。まあ
// ATTEMPT 1
var headerWrap = document.getElementById('header-wrap');
var h = headerWrap.scrollTop;
function changeHeaderOpacity() {
"use strict"; // wtf is this?
while (h > 0) {
headerWrap.addClass('scroll-opacity-change');
}
headerWrap.removeClass('scroll-opacity-change');
}
// ATTEMPT 2
/*
var headerWrap = $('#header-wrap');
$(window).scroll(function() {
headerWrap.addClass('scroll-opacity-change');
if($(this).scrollTop() <= 0) {
headerWrap.removeClass('scroll-opacity-change');
}
});
*/
/*
// ATTEMPT 3
var headerWrap = document.getElementById('header-wrap');
var h = headerWrap.scrollTop;
function changeHeaderOpacity() {
"use strict"; // wtf is this?
if (h > 0) {
headerWrap.addClass('scroll-opacity-change');
} else {
headerWrap.removeClass('scroll-opacity-change');
}
}
*/
body{
height:1000px;
}
#header-wrap{
height:100px;
width:100%;
background:#0f0;
}
.scroll-opacity-change{
background:#f00;
}
<div id="header-wrap">
</div>
jQueryの例があるため、[CSS特異](https://developer.mozilla.org/en-US/docsのあなたの例では動作しませんでした/ Web/CSS/Specificity)を参照してください。要素に '.scroll-opacity-change'クラスを追加したとしても、'#header-wrap'のバックグラウンドは常に勝ちます。 – IronGeek