所以我在这里有一些代码可以将导航栏捕捉到屏幕顶部,我有两个小问题。
第一个是它不适用于IE9,第二个是当通过按住滚动条上的单击滚动时,当它到达动作发生的点时,它会将滚动条按到顶部屏幕并锁定它直到你取消点击。
$(window).on('scroll', function() {
if (!docked && init < body.scrollTop() ) {
nav_menu.addClass('docked').css({
top: 0,
position: 'fixed'
});
docked = true;
}
else if (docked && body.scrollTop() <= init) {
nav_menu.removeClass('docked').css({
position: 'absolute',
top: init + 'px'
});
docked = false;
}
});
这是jQuery的LESS页面上使用的代码的改编,所以我猜它与jQuery如何处理函数有关,但它让我很好奇。
编辑:这是相关的HTML
<header>
<section id="top-picture"><img alt="Logo" src="img/top.png" /></section>
<nav id="nav-menu">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="artists.php">Artists</a></li>
<li><a href="artwork.php">Artwork</a></li>
<li><a href="music.php">Music</a></li>
<li><a href="download.php">Download</a></li>
</ul>
<ul>
<!-- Social Media section
Facebook Like button -->
<li><div class="fb-like" data-href="urlhere" data-send="false" data-layout="button_count"
data-width="90" data-show-faces="false"></div></li>
<!-- Tweet button -->
<li><a href="https://twitter.com/share" class="twitter-share-button" data-lang="en" data-count="horizontal"
data-url="urlhere" data-via="user" data-related="user" data-text="text">Tweet</a></li>
</ul>
</nav>
</header>
这是完全相关的JS
jQuery(document).ready(function($){
var nav_menu = $('#nav-menu');
var body = $('body');
var init = nav_menu.position().top;
var docked = false;
$(window).on('scroll', function() {
if (!docked && init < body.scrollTop() ) {
nav_menu.addClass('docked').css({
top: 0,
position: 'fixed'
});
docked = true;
}
else if (docked && body.scrollTop() <= init) {
nav_menu.removeClass('docked').css({
position: 'absolute',
top: init + 'px'
});
docked = false;
}
});
});
这是相关的CSS,它使用LESS和Bootstrap:
@import "colors"; // importing preset color list
@import "bootstrap";
@linkColor: lighten(@Maroon, 5%);
/* Structure */
body {
background: @Black;
z-index: 1;
}
section#top-picture {
img {
display: block;
margin-left: auto;
margin-right: auto;
}
z-index: 300;
}
header {
nav#nav-menu {
background: @Black;
position: absolute;
top: 176px;
width: 100%;
border: 1px inset lighten(@Black, 30%);
box-shadow: 0 0 15px 5px @White inset;
-moz-box-shadow: 0 0 15px 0px @White inset;
-webkit-box-shadow: 0 0 15px 0px @White inset;
z-index: 500;
ul {
list-style-type: none;
text-align: center;
li {
display: inline;
}
&:first-child {
padding-top: 1%;
li {
padding: 2.5%;
a {
.anchor-button;
.btn-large;
font-weight: bold;
text-transform: uppercase;
text-decoration: none;
}
}
}
&:last-child {
li {
margin: 0 5%;
}
}
}
}
}
导航栏上方有一张图片,位于#top-picture。
部分