页面滚动时更改 header 背景颜色
Change header background colour when page scrolls
我一直在寻找解决方案,但我无法让它工作。
我希望我的页面 header 在用户开始滚动页面时从透明背景变为白色背景。
HTML代码为:
<div class="header">
<div class="topbar"></div>
<div class="sitelogo"></div>
<nav id="navigation">
<ul>
<li id="twitter"><a href="http://www.twitter.com/iamdanmorris"><em>Twitter</em></a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#blog">Blog</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Home</a></li>
</ul>
</nav>
<div style="clear:both;"></div>
</div>
CSS代码为:
.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 0;
z-index: 10000;
-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
transition: all 0.2s ease-in-out;
height: auto;
background-color:transparent;
}
$(window).on("scroll", function() {
if($(window).scrollTop() > 50) {
$(".header").addClass("active");
} else {
//remove the background property so it comes transparent again (defined in your css)
$(".header").removeClass("active");
}
});
fiddle: http://jsfiddle.net/634d6vgq/2/
如果用户从顶部滚动超过 50 像素,这将向元素添加 background-color: #fff
这将添加一个 class "active" 以便您可以在 css 中设置样式(更易于维护)
编辑:
$(function() {
$(window).on("scroll", function() {
if($(window).scrollTop() > 50) {
$(".header").addClass("active");
} else {
//remove the background property so it comes transparent again (defined in your css)
$(".header").removeClass("active");
}
});
});
还有你的css:
.active { background-color: #fff}
确保你也添加了这个css规则,否则背景颜色不会改变
这是我针对此主题的直接解决方案。您只需向元素添加一个 ID 即可更改颜色。在我的例子中,elementor 在 Advance Tab.
中将 id 指定为“header_frame”
将以下代码放入页脚:
jQuery(window).on('scroll', function() {
if(jQuery(window).scrollTop() > 300) {
jQuery('#header_frame').css('background-color', '#FFFFFF');
} else {
jQuery('#header_frame').css('background-color', '#EFF2F4');
}
});
无需添加一些 class,例如 'active' 等
我一直在寻找解决方案,但我无法让它工作。
我希望我的页面 header 在用户开始滚动页面时从透明背景变为白色背景。
HTML代码为:
<div class="header">
<div class="topbar"></div>
<div class="sitelogo"></div>
<nav id="navigation">
<ul>
<li id="twitter"><a href="http://www.twitter.com/iamdanmorris"><em>Twitter</em></a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#blog">Blog</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Home</a></li>
</ul>
</nav>
<div style="clear:both;"></div>
</div>
CSS代码为:
.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 0;
z-index: 10000;
-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
transition: all 0.2s ease-in-out;
height: auto;
background-color:transparent;
}
$(window).on("scroll", function() {
if($(window).scrollTop() > 50) {
$(".header").addClass("active");
} else {
//remove the background property so it comes transparent again (defined in your css)
$(".header").removeClass("active");
}
});
fiddle: http://jsfiddle.net/634d6vgq/2/
如果用户从顶部滚动超过 50 像素,这将向元素添加 background-color: #fff
这将添加一个 class "active" 以便您可以在 css 中设置样式(更易于维护)
编辑:
$(function() {
$(window).on("scroll", function() {
if($(window).scrollTop() > 50) {
$(".header").addClass("active");
} else {
//remove the background property so it comes transparent again (defined in your css)
$(".header").removeClass("active");
}
});
});
还有你的css:
.active { background-color: #fff}
确保你也添加了这个css规则,否则背景颜色不会改变
这是我针对此主题的直接解决方案。您只需向元素添加一个 ID 即可更改颜色。在我的例子中,elementor 在 Advance Tab.
中将 id 指定为“header_frame”将以下代码放入页脚:
jQuery(window).on('scroll', function() {
if(jQuery(window).scrollTop() > 300) {
jQuery('#header_frame').css('background-color', '#FFFFFF');
} else {
jQuery('#header_frame').css('background-color', '#EFF2F4');
}
});
无需添加一些 class,例如 'active' 等