4

我想在菜单上实现 Twitter-Bootstrap Scrollspy,这样当用户滚动到页面的一部分时,css 类就会改变。这被证明是令人沮丧的。我已经在使用代码中的附加代码,效果很好。

因此,当用户滚动到#ScrollSpyContent我想将类更改为的 LI 元素时,从下面的代码.product_submenu_image.product_submenu_active

我怎样才能做到这一点?

(我正在使用jsp,java所以它们可能是这里的一些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=""/>&nbsp;Product Features</div></a></li>
                    <li><a href="#gettingstarted"><div class="product_submenu_image product_submenu_border"><img src="../img/product_people.png" alt=""/>&nbsp;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=""/>&nbsp;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');*/
}
4

1 回答 1

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/

请忽略它从底部开始的事实......不确定这是一个无关或相关的错误,但重点是你可以看到激活事件是如何工作的

于 2013-01-16T19:16:28.160 回答