26

スクロールスパイを垂直ナビゲーションで適切に動作させることができません。以下に、私が使用するコードを示します。なぜか「Two」だけがアクティブになります。

誰が何が間違っているのか考えていますか?

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Twitter Bootstrap Scroll Spy Playground</title>
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
  </head>
  <body>
    <div class="container">
      <div class="row">
        <div class="span3">
            <ul class="navbar nav nav-list affix">
              <li class="active"><a href="#one">One</a></li>
              <li><a href="#two">Two</a></li>
            </ul>
        </div>
        <div class="span1" data-spy="scroll">
            <section id="one">
            <h1>One</h1>
            <h2>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. </h2>
            </section>
            <section id="two">
            <h1>Two</h1>
           <h2>Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</h2>
            </section>   
        </div>
      </div>
    </div>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script src="bootstrap/js/bootstrap.js"></script>
</body>
</html>
4

9 に答える 9

36

これを自分で整理したところ、スパイされている要素にはスクロールバーが必要であることがわかりました。

この Fiddle を見てください: http://jsfiddle.net/adamp/qgU6h/1/

body 要素 ( ) を直接スパイするか$('body').scrollspy()、コンテンツに明示的な高さを与えて強​​制的にスクロールバーを表示することができます。

(Bootstrap documentation exampleを見ると、固定高さのトリックを実行します。)

于 2013-03-28T15:14:50.457 に答える
2

ジェレックに感謝します。

height: 100%;

私のCSSのボディセレクターで

また、Bootstrap http://getbootstrap.com/javascript/#scrollspyの人が推奨するように

position: relative;本体にも入れました。

私の CSS の本文セレクターの先頭は次のようになります。

body {
    position: relative;
    height: 100%;
    /* … */
}

<body>HTML内で削除する必要がありました

data-offset="0"

だから今こうなっている

<body data-spy="scroll" data-target="#navigation">
于 2014-08-18T00:34:02.610 に答える
2

http://jsfiddle.net/mCxqY/のようにこれを行うことができます

<body data-spy="scroll" data-target="#navbar">
    <div id="post1" class="box">
        <h1>Post 1</h1>
        <p> Scroll Down↓&lt;/p>
    </div>
    <div id="post2" class="box"><h1>Post 2</h1></div>
    <div id="post3" class="box"><h1>Post 3</h1></div>

    <div id="navbar">
        <ul class="nav">
            <li><a href="#post1">Post 1</a></li>
            <li><a href="#post2">Post 2</a></li>
            <li><a href="#post3">Post 3</a></li>
        </ul>
    </div>

    <script src="http://twitter.github.com/bootstrap/assets/js/bootstrap-scrollspy.js"></script>
</body>​

CSS

@import url(http://twitter.github.com/bootstrap/assets/css/bootstrap.css);
.box{
    margin: 20px; padding: 15px;
    background: #eee;
    height: 500px;
}
#navbar{
    position: fixed;
    bottom: 0; left: 20px;
    width: 100%;
    background: #fff;
}
.nav li a{
    float: left;
    width: 80px;
    padding: 15px 0;
}
.nav li a:hover{
    color: #f33 !important;
    background: none;
}
.nav li.active a{
    color: #f55;
    text-decoration: underline;
}

</p>

于 2012-10-30T06:52:29.400 に答える
1

scrollspy を機能させるには、2 つのことを行う必要がありました。

まず、<body>要素に高さを与える必要がありました:

<style>

  .body
  {
    height: 100%;
  }

</style>    

<body data-spy="scroll" data-target="#scrollElement" data-offset="0">

これは、scroll-spy がスパイしている要素の高さを取得しようとしているためだと思いますが、要素に高さが指定されていない場合、null (または 0?) 値が渡されます。スクリプトの計算を壊しているようです。

次に、id 要素間に十分な垂直スペースがあることを確認する必要がありました (nav アンカーが向いている)。

必要なスペースの正確な量を把握できませんでした (data-offset 属性によって異なるため、おそらくそれと関係があります) が、スパイ要素に高さを設定し、 scrollspy はまだ機能していません。id 要素の間にコンテンツを追加するだけです。

于 2014-07-18T01:15:21.767 に答える
0
$(window).scroll(function() {
    if ($(".navbar").offset().top > 50) {
        $(".navbar-fixed-top").addClass("top-nav-collapse");
    } else {
        $(".navbar-fixed-top").removeClass("top-nav-collapse");
    }
});

//jQuery for page scrolling feature - requires jQuery Easing plugin
$(function() {
    $('a.page-scroll').bind('click', function(event) {
        var $anchor = $(this);
        $('html, body').stop().animate({
            scrollTop: $($anchor.attr('href')).offset().top
        }, 1500, 'easeInOutExpo');
        event.preventDefault();
    });
});
于 2016-06-23T12:14:27.303 に答える
0

何時間ものフラストレーションと調査の結果、多くの人が Bootstrap Affix のドキュメント ( www.mtjhax.wordpress.com )にも満足していないことがわかりました。しかし、すべてを見回した後、Bootply のこのソリューションは私にとってはうまくいきました: http://bootply.com/63937

ナビゲーションの ID が「navbar」であるとすると、本文は次のようになります。

<body data-spy="scroll" data-target="#navbar">
    ...
</body>

また、ナビゲーションバー自体は次のようになります。

<div class="navbar" id="navbar">
    <ul class="nav navbar-nav">
        <li>...</li>
        <li>...</li>
        <li>...</li>
    </ul>               
</div>

次に、プラグインを初期化しました...

$('#nav').affix({
    offset: {top: 0}
}); 

...そしてナビゲーションに適切なスタイルを与えます:

#nav.affix {
    position: fixed;
    top: 0;
    width: 100%
}
于 2013-08-12T20:16:40.633 に答える