4

メニューに Twitter-Bootstrap Scrollspy を実装して、ユーザーがページのセクションにスクロールすると css クラスが変更されるようにしています。これは、イライラする以上のものであることが証明されました. 私はすでにうまく機能するコードの接辞コードを使用しています。

したがって、以下のコードから、ユーザーが の LI 要素までスクロールしたときに、のクラスをに#ScrollSpyContent変更したいと考えています。.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 に答える