如何使引导导航改变颜色时,滚动
How to make boostrap navigation change color when scrolling?
我正在使用Bootstrap构建一个网站模板。我想有导航是透明的,当用户加载页面,他/她正在看页面的顶部。标题是黑色的,所以透明的导航看起来更好。但是,我希望当用户开始向下滚动时,导航变暗,以便导航链接在浅色背景下可见。我已经看了其他几个模板的一些指导,但我仍然有麻烦,试图实现这在我自己的模板。我见过一些人使用javascript/jquery,但我不太擅长javascript,也不知道如何实现这一点。任何帮助都是非常感激的!
尝试如下:
$(window).scroll(function(){
$('nav').toggleClass('scrolled', $(this).scrollTop() > 50);
});
这将在用户滚动50像素后切换类,如果你想改变它,只需将50更改为向下px的量,你想要切换类。
然后css如果你使用的是引导导航条结构,它将看起来像下面的渐变过渡:
.navbar-default{
transition:500ms ease;
background:transparent;
}
.navbar-default.scrolled{
background:#000;
}
这里是一个小提琴向您展示这个工作小提琴演示
$(window).scroll(function() {
var $nav = $('#nav'),
scroll = $(window).scrollTop();
if (scroll >= 34) {
$nav.addClass('dark-background');
} else {
$nav.removeClass('dark-background');
}
});
.dark-background {
background-color: gray;
}
#nav {
background-color: transparent;
}
$(window).scroll(function() {
clearTimeout($.data(this, 'scrollTimer'));
$("body").css('background-color', 'red')
$.data(this, 'scrollTimer', setTimeout(function() {
$("body").css('background-color', 'white')
console.log("Haven't scrolled in 250ms!");
}, 250));
});
body {
height: 5000px;
width: 100px;
overflow: scroll;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<body></body>
感谢这个答案:
jQuery scroll()检测当用户停止滚动
$(window).scroll(function() {
clearTimeout($.data(this, 'scrollTimer'));
$("body").css('background-color', 'red')
$.data(this, 'scrollTimer', setTimeout(function() {
$("body").css('background-color', 'white')
console.log("Haven't scrolled in 250ms!");
}, 250));
});
把发生的事情分解一下:
1)在window
对象上附加scroll
事件监听器。并传递给它一个函数来执行该事件。
$(window).scroll(function(){})
2) clearTimeout
与setTimeout
同时存在。如果您打开浏览器的开发人员控制台并键入
$(window).data()
应该返回一个空对象,因为你可能还没有给它赋任何值。现在,如果你输入
$(window).data('myData', 'my_value')
$(window).data() //=> returns an -> Object {myData: "my_value"}
你也可以像这样访问一个元素的数据$.data(element)
:
$.data(window) //=> returns an -> Object {myData: "my_value"}
第一次调用#clearTimeout
是在一个空属性上调用的,因为scrollTimer
还没有被分配给window.data() object
。
设置元素的颜色。在这种情况下,我使用body
作为示例,但您需要输入正确的选择器:
$('body').css('background-color', 'red')
4)使用#setTimeout
函数在时间过去后返回原始颜色。
$.data(this, 'scrollTimer', setTimeout(function() {
$('body').css('background-color', 'white')
console.log("Haven't scrolled in 250ms!");
}, 250));
里面的this
函数,代表window
:
$.data(this, 'scrollTimer', setTimeout(function() {...}, 250)
等于:
$.data(window, 'scrollTimer', setTimeout(function() {...}, 250)
它正在访问window
对象
Bootstrap 4
在Bootstrap 4中不再存在词缀组件,但是ScrollSpy组件存在。
https://www.codeply.com/go/aN4tfy0zU0 <标题> 3 引导你也可以使用Bootstrap Affix组件来监视滚动位置,而不是额外的jQuery/JavaScript。只需为导航条定义.affix-top
和.affix
CSS。
@media (min-width:768px) {
.affix-top {
/* navbar style at top */
background:transparent;
border-color:transparent;
padding: 15px;
-webkit-transition:all 0.5s ease;
-moz-transition:all 0.5s ease;
-o-transition:all 0.5s ease;
transition:all 0.5s ease;
}
}
并设置你想要导航条改变样式的位置(例如;(距上400px)
<div class="navbar navbar-inverse navbar-fixed-top" data-spy="affix" data-offset-top="400">
工作演示:http://www.codeply.com/go/xp2fY6sVHP
标题>- d3.js轴标签-颜色不变
- 在点击行后给行颜色,并请求其他页面保持颜色不变
- 平滑滚动时更改 ID 的颜色
- Bootstrap 3粘贴导航条在滚动和重叠内容时变得透明且不可点击
- 如何更改页眉'的底部边框颜色取决于滚动位置
- 当前日期js代码中字体颜色不变
- 滚动界面CSS-更改黑色背景上的颜色
- 如何在向下滚动并重复该过程时更改背景颜色
- 我想在页面向下滚动时更改徽标文本的颜色
- 滚动到某个元素后,相同的导航栏变得固定
- d3.js单击时交替颜色,单击另一个点时变回原始颜色
- 如果滚动 300 像素,请更改背景颜色
- jQuery 在滚动背景上动画颜色不变
- 文本区域的背景颜色不变
- 如何在滚动时仅更改导航的背景颜色,而不更改文本和徽标不透明度
- jQuery背景颜色在滚动时淡入
- 如何在每次滚动时更改元素颜色
- 粘性标题通过滚动变小
- 通过滚动更改颜色
- 使用-webkit溢出滚动时更改HTML滚动条颜色:触摸