我想在菜单上实现Twitter-Bootstrap Scrollspy,这样当用户滚动到页面的某个部分时,css类就会被更改。这被证明是令人沮丧的。我已经在使用代码中的词缀代码了。
因此,从下面的代码中,当用户滚动到#ScrollSpyContent
的LI元素时,我想将.product_submenu_image
的类更改为.product_submenu_active
。
我该怎么做?
(我在java
中使用了jsp,所以他们可能在这里有一些java代码。我试图删除大部分代码。)
感谢。
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/css/bootstrap.css"/>
<link rel="stylesheet" href="/css/bootstrap-responsive.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
</head>
<body>
<header></header>
<div class="row-fluid product_submenu">
<nav class="span10 offset1">
<ul class="productmenus">
<li><a href="#product_features"><div class="product_submenu_image"><img src="../img/product_computer.png" alt=""/> Product Features</div></a></li>
<li><a href="#gettingstarted"><div class="product_submenu_image product_submenu_border"><img src="../img/product_people.png" alt=""/> Getting Started</div></a></li>
<li><a href="#product_support"><div class="product_submenu_image product_submenu_border"><img src="../img/product_phone.png" alt=""/> Product Support</div></a></li>
</ul>
</nav>
</div>
<div class="container-fluid">
<nav class="row-fluid" >
<ul class="span10 offset1" data-spy="scroll">
<li class="row-fluid" id="product_features"></li> <!-- End Product Features -->
<li class="row-fluid" id="gettingstarted"></li> <!-- End Getting Started -->
<li class="row-fluid" id="product_support"></li><!-- End Product support -->
</ul>
</nav>
</div>
<footer></footer>
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="/js/bootstrap.js"></script>
<script>
$(function() {
var $spy = $('.productmenus');
$spy.scrollspy({offset: 20});
$spy.bind("activate", function(e) {
//e.target is the current <li> element
var header = $(e.target).find(".product_submenu_image");
$(header).addClass('active');
});
});
</script>
</body>
</html>
的 CSS:
.product_submenu_image
{
background: url('../img/product_tab_default.gif');
max-height: 100%;
padding: 18% 0 18% 0;
border: none;
}
.product_submenu_image.active
{
background: blue;
/*background: url('../img/product_tab_selected.gif');*/
}
答案 0 :(得分:0)
所以你需要使用这里描述的滚动间谍activate
事件:
http://twitter.github.com/bootstrap/javascript.html#scrollspy
基本上你需要一些像这样的代码:
$(function() {
var $spy = $('.nav.nav-pills');
$spy.scrollspy({offset: 20});
$spy.bind("activate", function(e) {
// do stuff here when a new section is in view
});
});
这是一个工作示例: http://jsfiddle.net/hajpoj/f2z6u/3/
请忽略它从底部开始的事实......不确定是否是一个无关或相关的错误,但重点是你可以看到激活事件是如何工作的