2017-11-19 10 views
0

私はブートストラップ4を使って最初からウェブサイトを構築しています。そのアイデアは、上部に透明なナビゲーションバーを固定したフルスクリーンのカバーイメージです。この部分は簡単ですし、私は私の目を閉じてかなりそれを行うことができます。私が現在達成しようとしているのは効果です。ユーザーがスクロールしてカバー画像の端に当たったとき、ナビゲーションバーは縮小して上端がスティッキーになります。Shrink navbar AFTER cover image

私は非常に多くのチュートリアルとガイドで、Jqueryでこれを行う方法を教えていますが、基本的には「非常に多くのピクセル」の後に収縮させるコードを提供しています)。私はJqueryをクラスに追加してクラスを削除するのが好きですが、どのように修正して50pxではなくカバーイメージの底に当たるようにするかはわかりません。

$(window).scroll(function() { 
    if ($(document).scrollTop() > 50) { 
    $('nav').addClass('shrink'); 
    } else { 
    $('nav').removeClass('shrink'); 
    } 
}); 
+0

カバーイメージの下部の位置を取得し、それに従ってコードを変更してください。 – camelsWriteInCamelCase

+0

@camelsWriteInCamelCase Errr私はそれを行う最善の方法ではないと思う..私の表紙の画像はあなたのディスプレイのサイズに伸びる...だから誰もが画面の解像度に応じて異なる下部位置を持つつもりです。 – user3599852

+0

@ user3599852画像の高さを取得するだけで、ピクセルの「高さ」に達した場合は、底に達することを意味します(場合によっては、ナビバーの高さを追加することもできます)。 – Kangouroops

答えて

1

jqueryのおかげでレンダリングされたイメージの高さを得ることができます。

次に、オフセットパラメータを変更するだけです。ここではペンです: https://codepen.io/anon/pen/KyQddz

<div class="navbar"> 
    This is my navbar 
</div> 
<figure> 
    <img src="https://via.placeholder.com/350x80" /> 
</figure> 



* { 
    margin: 0; 
    padding:0; 
    box-sizing: border-box; 
} 
.navbar { 
    background: red; 
    width: 100%; 
    height: 60px; 
    position: fixed; 
    top:0; 
} 
.shrink { 
    background: green; 
} 
figure { 
    height: 2000px; 
} 
img { 
    display: block; 
    width: 100%; 
    height: auto; 
} 

var imgHeight; 

$(window).on('load', function() { 
    imgHeight = $('img').height(); 
}); 

$(window).scroll(function() { 
    if ($(document).scrollTop() > imgHeight) { 
    $('.navbar').addClass('shrink'); 
    } else { 
    $('.navbar').removeClass('shrink'); 
    } 
}); 

あなたはナビゲーションバーをしたい場合は、画像の高さをスクロールした後にのみ固定され、ちょうど.shrinkクラスにposition:fixed;top:0;を移動します。

.navbar { 
     background: red; 
     width: 100%; 
     height: 60px; 
    } 
    .shrink { 
     background: green; 
     position: fixed; 
     top:0; 
    } 
+0

これは完璧です!ありがとう、私は最高の答えとしてあなたをマークしています。もう一つ気にしてもらえますか?あなたはそれを下にスクロールしているので、画像の上に移動しないように、ナビバーを上部の定位置に固定することは可能ですか?私はそれが固定されていて、それが画像の一番下に当たったら粘着性になることを望みます。 – user3599852

+1

@ user3599852あなたは気にしないでください、心配しないでください。あなたは、navbarが粘着性ではなく、あなたが画像の底に達するとすぐに粘着性になるということを意味しますか? – Kangouroops

+0

これまでにありがとうございました!私があなたに例を示すだけで簡単かもしれません - https://cameronjhurley.com/ - このウェブサイトでは、メニューがカバー画像の一番上の位置に固定されていることがわかります。画像、navbarは縮小し、ウェブサイトの残りの部分に粘着性になります。私はブートストラップでそれをする方法を知っていると思うが、私はちょうど第二意見を求めているのではないかと思います。 – user3599852