滚动时更改导航栏颜色
2016-10-01
11366
我刚刚用纯 javascript 做了同样的事,在滚动后更改了导航栏颜色, 它在谷歌浏览器中运行正常,没有任何问题 但是当我尝试在 Firefox 上测试它时 它却无法正常工作。
有人能给我一些建议吗? 提前谢谢。
var myNav = document.getElementById("nav");
window.onscroll = function () {
"use strict";
if (document.body.scrollTop >= 280) {
myNav.classList.add("scroll");
} else {
myNav.classList.remove("scroll");
}
};
body {
margin:0;
padding:0;
height:4000px;
}
.nav {
position:fixed;
width:100%;
height:60px;
background-color:#111;
transition:all .5s ease-in-out;
}
.scroll {
background-color:transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="nav" class="nav"></div>
3个回答
如果您使用的是纯 javascript :
Firefox 和 IE 在
html
处溢出,而 Chrome、Safari 和 Opera 将其放在
body
级别:
有关详细信息,请参阅 此处 :
var body = document.body; // For Chrome, Safari and Opera
var html = document.documentElement; // Firefox and IE places the overflow at the level, unless else is specified. Therefore, we use the documentElement property for these two browsers
因此,您必须使用这个:
if (document.body.scrollTop >= 280 || document.documentElement.scrollTop >= 280) {
并且它将跨浏览器工作。干杯!
var myNav = document.getElementById("nav");
window.onscroll = function() {
"use strict";
if (document.body.scrollTop >= 280 || document.documentElement.scrollTop >= 280) {
myNav.classList.add("scroll");
} else {
myNav.classList.remove("scroll");
}
};
body {
margin: 0;
padding: 0;
height: 4000px;
}
.nav {
position: fixed;
width: 100%;
height: 60px;
background-color: #111;
transition: all .5s ease-in-out;
}
.scroll {
background-color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="nav" class="nav"></div>
如果您使用的是 jquery :
var myNav = $("#nav");
$(window).on('scroll', function() {
"use strict";
if ($(window).scrollTop() >= 280) {
myNav.addClass("scroll");
} else {
myNav.removeClass("scroll");
}
});
body {
margin: 0;
padding: 0;
height: 4000px;
}
.nav {
position: fixed;
width: 100%;
height: 60px;
background-color: #111;
transition: all .5s ease-in-out;
}
.scroll {
background-color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="nav" class="nav"></div>
kukkuz
2016-10-01
$(window).scroll(function() {
if ($(this).scrollTop() > 20){
$('#navBar').css({property: "value"});
} else {
$('#navBar').css({property: "value"});
}
});
这实际上不是一个答案,但这在我测试过的所有浏览器上都非常有用(即 edge、safari、chrome 和 firefox)
jay stephens
2016-10-01
试试这个。将“280”更改为在导航栏背景颜色变为透明之前您想要向下滚动的像素数。
HTML:
<div id="navbar"></div>
JavaScript:
$(function() {
$(window).on("scroll", function() {
if($(window).scrollTop() > 280) {
//background on scroll
$("#navbar").addClass("scroll");
} else {
//background at top
$("#navbar").removeClass("scroll");
}
});
});
CSS:
#navbar {
background-color:#111;
transition:all .5s ease-in-out;
}
.scroll {
background-color:transparent;
}
HTML
2016-10-01