forbes.comのように、ナビゲーション バーをページの上部に固定しようとしています。
私は私ができることを知っています
nav
{
position: fixed;
top: 0;
}
しかし、ナビゲーションバーはページの上部ではなく、ロゴの後にあります...ただし、下にスクロールすると、ナビゲーションバーが画面の上部にくっつきます..
forbes.comのように、ナビゲーション バーをページの上部に固定しようとしています。
私は私ができることを知っています
nav
{
position: fixed;
top: 0;
}
しかし、ナビゲーションバーはページの上部ではなく、ロゴの後にあります...ただし、下にスクロールすると、ナビゲーションバーが画面の上部にくっつきます..
次のように JQuery で試すことができます。
HTML:
<div id="wrapper">
<header>
<h1>Floater Navigation</h1>
</header>
<nav>
<p>Navigation Content</p>
</nav>
<div id="content">
<p>Lorem Ipsum.</p>
</div>
</div>
CSS:
#wrapper {
width:940px;
margin: 0 auto;
}
header {
text-align:center;
padding:70px 0;
}
nav {
background: #000000;
height: 60px;
width: 960px;
margin-left: -10px;
line-height:50px;
position: relative;
}
#content {
background: #fff;
height: 1500px; /* presetting the height */
box-shadow: 0 0 5px rgba(0,0,0,0.3);
}
.fixed {
position:fixed;
}
JQuery:
$(document).ready(function() {
// Calculate the height of <header>
// Use outerHeight() instead of height() if have padding
var aboveHeight = $('header').outerHeight();
// when scroll
$(window).scroll(function(){
// if scrolled down more than the header’s height
if ($(window).scrollTop() > aboveHeight){
// if yes, add “fixed” class to the <nav>
// add padding top to the #content
// (value is same as the height of the nav)
$('nav').addClass('fixed').css('top','0').next().css('padding-top','60px');
} else {
// when scroll up or less than aboveHeight,
// remove the “fixed” class, and the padding-top
$('nav').removeClass('fixed').next().css('padding-top','0');
}
});
});
ソース: http://www.jay-han.com/2011/11/10/simple-smart-sticky-navigation-bar-with-jquery/
これは、JQuery を使用せずに実行する方法です。ウィンドウにスクロールリスナーを設定し、スクロールが正しい位置に達したときにナビゲーションバーのクラスを切り替えることで機能します。
var body = document.getElementsByTagName("body")[0];
var navigation = document.getElementById("navigation");
window.addEventListener("scroll", function(evt) {
if (body.scrollTop > navigation.getBoundingClientRect().bottom) {
// when the scroll's y is bigger than the nav's y set class to fixednav
navigation.className = "fixednav"
} else { // Overwise set the class to staticnav
navigation.className = "staticnav"
}
});
h1 {
margin: 0;
padding: 10px;
}
body {
margin: 0px;
background-color: white;
}
p {
margin: 10px;
}
.fixednav {
position: fixed;
top: 0;
left: 0;
}
.staticnav {
position: static;
}
#navigation {
background-color: blue;
padding: 10px;
width: 100%;
}
#navigation a {
padding: 10px;
color: white;
text-decoration: none;
}
<h1>
Hello world
</h1>
<nav id="navigation" class="staticnav"><a href="#">Home</a> <a href="#">About</a>
</nav>
<!-- We initialize the nav with static condition -->
<p>
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
</p>
絶対位置を使用し、上部の値をブラウザの上部からのナビゲーション バーのピクセル数に設定します。