- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
JSFIDDLE: https://jsfiddle.net/sjhpmzuk/1/
我有一个单页滚动网站。我已经为你创建了演示(上),所以你可以更好地理解。我想要的是,当我滚动页面时,我想自动更改导航的颜色。
比如我会来到这个页面,.red
在最上面,所以我想li:nth-of-type(1) a{color:yellow }
。当我滚动页面时,蓝色将成为我们的兴趣点,所以 li:nth-of-type(2) a{color:yellow}
等所有其他虚构的 div 到页脚div(在我的示例中 .green
),其工作方式相同。
我发现,BootStrap 可以以某种方式做到这一点,但它对我来说太复杂和太长的代码。有人可以用我的例子告诉我如何做吗? :)
感谢您的宝贵时间!
最佳答案
第一个解决方案。通过 Bootsrap 的组件和 javascript。
https://jsfiddle.net/glebkema/24tddf46/
@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');
@media (min-width: 768px) {
.navbar-nav {
float: none;
text-align: center;
}
.navbar-nav>li {
float: none;
display: inline-block;
}
}
.navbar-inverse .navbar-nav > .active:nth-of-type(1) > a,
.navbar-inverse .navbar-nav > .active:nth-of-type(1) > a:hover,
.navbar-inverse .navbar-nav > .active:nth-of-type(1) > a:focus {
color: red;
}
.navbar-inverse .navbar-nav > .active:nth-of-type(2) > a,
.navbar-inverse .navbar-nav > .active:nth-of-type(2) > a:hover,
.navbar-inverse .navbar-nav > .active:nth-of-type(2) > a:focus {
color: blue;
}
.navbar-inverse .navbar-nav > .active:nth-of-type(3) > a,
.navbar-inverse .navbar-nav > .active:nth-of-type(3) > a:hover,
.navbar-inverse .navbar-nav > .active:nth-of-type(3) > a:focus {
color: green;
}
#red,
#blue,
#green {
width: 100%;
height: 1000px;
}
#red { background: red; }
#blue { background: blue; }
#green { background: green; }
<body data-spy="scroll" data-target="#navbar" data-offset="60">
<nav id="navid" class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" aria-controls="navbar" aria-expanded="false" data-target="#navbar" data-toggle="collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="#red">red</a></li>
<li><a href="#blue">blue</a></li>
<li><a href="#green">green</a></li>
</ul>
</div>
</div>
</nav>
<div id="red"></div>
<div id="blue"></div>
<div id="green"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</body>
第二种解决方案。通过 CSS 和 jQuery。
https://jsfiddle.net/glebkema/kbggfwhk/
$(document).ready(function() {
var selectWindow = $(window);
var selectBody = $('body,html');
var selectRed = $('#red');
var selectBlue = $('#blue');
var selectGreen = $('#green');
var NAVBAR = '.sticky-header';
var menuRed = $(NAVBAR + '>ul>li:nth-of-type(1)');
var menuBlue = $(NAVBAR + '>ul>li:nth-of-type(2)');
var menuGreen = $(NAVBAR + '>ul>li:nth-of-type(3)');
var OFFSET = $(NAVBAR).outerHeight();
var scrollRed = selectRed.offset().top - OFFSET;
var scrollBlue = selectBlue.offset().top - OFFSET;
var scrollGreen = selectGreen.offset().top - OFFSET;
menuRed.click(function(){ scrollTo(scrollRed) });
menuBlue.click(function(){ scrollTo(scrollBlue) });
menuGreen.click(function(){ scrollTo(scrollGreen) });
selectWindow.scroll(function() {
var currentY = $(this).scrollTop();
if (currentY >= scrollGreen) { checkActive(menuGreen); } else
if (currentY >= scrollBlue) { checkActive(menuBlue); } else
if (currentY >= scrollRed) { checkActive(menuRed); };
});
function scrollTo(scrollTopNew) {
selectBody.stop().animate({scrollTop: scrollTopNew}, 1000);
}
function checkActive(e) {
if( !e.hasClass('active') ) {
$(NAVBAR + '>ul>li.active').removeClass('active');
e.addClass('active');
}
}
}); //jQuery
body {
margin: 0;
padding: 0;
}
.sticky-header {
background-color: #393939;
height: 50px;
position: fixed;
width: 100%;
}
.sticky-header ul {
list-style-type: none;
margin: 0;
padding: 0;
text-align: center;
}
.sticky-header li {
display: inline-block;
}
.sticky-header li a {
color: white;
display: inline-block;
font-size: 20px;
line-height: 50px; /* = height of .sticky-header */
padding: 0 15px;
text-decoration: none;
}
.sticky-header li a:hover {
background-color: #555;
}
.sticky-header > ul > li:nth-of-type(1).active a { color: red; }
.sticky-header > ul > li:nth-of-type(2).active a { color: blue; }
.sticky-header > ul > li:nth-of-type(3).active a { color: green; }
#red,
#blue,
#green {
height: 1000px;
width: 100%;
}
#red { background: red; }
#blue { background: blue; }
#green { background: green; }
<div class="sticky-header">
<ul>
<li class="active"><a href="#">red</a></li>
<li><a href="#">blue</a></li>
<li><a href="#">green</a></li>
</ul>
</div>
<div id="red"></div>
<div id="blue"></div>
<div id="green"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
关于javascript - 根据屏幕上的哪个 div 突出显示导航栏 li 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37410508/
好吧,标题说明了一切。我的 javascript 函数构建一些“ block ”并使用 和 创建它们。问题是,它删除了所有其他 在网页上。 编辑:(好吧,我假设这个函数是造成这个的原因。删除我的意思是
这个 HTML 结构有效吗? Item 1 Item 2 Item 3 Item 4 Item 5 Item 6
我正在尝试在 UL 中添加标题因为你不能在 UL 中使用 H2如果按照我展示的方式使用它可以吗? News roll News 1 News 2 我的一位 friend 告诉我
这是我的 代码风格。 li{ font-family: Arial, sans-serif; font-size: 100%; color: black; display : list-item;
我正在使用 a 进行水平导航,感谢问题:Separators For Navigation ,我读到了使用 li + li 设置基于图像的元素分隔符的好方法。 (伪?)选择器。 在我的代码中,我为
我有一个 Div 容器,其中包含 4 我正在做的是在前面加上 进入并删除最后一个 我很容易使用 $('#news-ul li:last').remove() $('#news-ul').prepe
这是 html: menu item menu item menu item menu item menu item 如果我按“a”链接,它会将“当
我有 ul-li 列表 1 2 3 A B 我可以在列表中使用纯 css 最后一个选择器“.digit”吗? .digit 的数量未知 ul li.digit:nth-last-ch
我有这种情况,1- 我想删除一个带有两个图标的 li,它作为一个跨度在里面:一个是选中或取消选中相应的 li,另一个是删除那个 li。2- 我还想通过单击图标(选中图标)同时单击 li 来选中或取消选
如果标题不好理解,我来解释一下... 我有一个 css/jquery 切换菜单。按“+”号时它变大,按“-”号时它变小。我使几个元素的填充、边距和高度在切换/单击时发生变化。菜单顶部充满了链接,然后当
我有一个脚本 ( JsFiddle here ) 检测 li block 元素何时在页面上垂直居中并为其分配一个 .centered 类以使其更大通过 CSS。 .centered { hei
代码在这里:http://jsfiddle.net/C5mTf/49/我不知道为什么。下面的代码有问题吗? $("#menu").on('click','li',function (){ va
我为这个问题苦苦挣扎了几个小时,但仍然无法解决问题。 我有这样的 html 代码: aaaa11 bbbb11 我想知道如何使用 css 让 每里一行显示。但是 标签仍然具有垂
我需要使用水平缩放的 ul > li > ul 的组合来创建一个菜单。每个 ul 都应该有一个 max-height 并在溢出时滚动。悬停在 li 上时,如果里面有另一个 ul 标签,它应该会在右侧打
我了解到,如果我指的是 在 内或 在 CSS 中我应该使用 ol > li或 ul > li但是一旦我忘记在 ol 和 li 之间放置标志,我发现它仍然有效。执行此操作的正确方法是什么? 最佳答案
Question 1 Answer: $('#addquestion').click(function() { var $question_number
我如何在 中显示我的数组值? 我的代码: HTML JS var myList = [ ['1','one'], ['1','two'], ['1','th
我在使用代码编辑器时遇到了问题所以就在这里 Item1 Item 1.1 Item 1.2 Item2
我正在为我的网站创建响应式移动版本。正如您在此 jsfiddle 中看到的那样, 当用户将鼠标悬停在 上时项,菜单打开但覆盖了 而不是展开菜单。 我已经添加了 display: block在不同的地
我正在尝试创建一个网站,但我偶然发现了一个小问题,我正在使用 bootsnipp(一个侧面菜单)中的一个片段,我无法让它工作,所以链接将覆盖整个 LI,而不是你必须按自己的文字如果我改变它,那么它会坐
我是一名优秀的程序员,十分优秀!