最近刚用一点点 jquery 制作了这个粘性导航栏,然后意识到它不起作用。当我尝试将我的代码复制到 jsfiddle 时,一切正常
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css\style.css">
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Open Sans">
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js\scripts.js"></script>
</head>
<body>
<header onmouseover="this.style.background='white'" onmouseout="this.style.background='#e6e6e6'">
<img src="Photos\logo.png" width="210px" height="150px">
</header>
<ul class="navbar">
<li><a href="#">Model</a></li>
</ul>
<div class="main">lots of words......</div
</body>
</html>
还有 scripts.js 文件:
var n=$(".navbar"),
ns="navbar-scrolled",
head=$('header').height();
$(window).scroll(function() {
if( $(this).scrollTop() > head) {
n.addClass(ns);
}
else {
n.removeClass(ns);
}
});
css文件和我的一样JSFiddle
最佳答案
默认情况下,JSFiddle 在窗口加载时运行您的脚本,这意味着它在加载 DOM 后运行。您需要自己正常执行此操作。只需稍作改动即可解决问题...
$(function() {
var n=$(".navbar"),
ns="navbar-scrolled",
head=$('header').height();
$(window).scroll(function() {
if( $(this).scrollTop() > head) {
n.addClass(ns);
}
else {
n.removeClass(ns);
}
});
});
你只需要像这样包装你的代码......
$(function() {
// your code goes here
});
还有其他方法可以做到这一点,但那会解决您的问题。
关于javascript - 我的粘性导航栏适用于 jsfiddle 但不能离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42044939/