7

Twitter ブートストラップで接辞プラグインを使用しようとしていますが、親コンテナー内でそれを制約する方法がわかりません。問題を示すために次の例を作成しました。

問題のデモ: http://www.codeply.com/go/DvcRXkeFZa

<div class="container">
    <div class="row">
        <div class="col-md-3 column">
            <ul id="sidebar" class="well nav nav-stacked" data-spy="affix" data-offset-top="130">
                <li><a href="#software"><b>Software</b></a></li>
                <li><a href="#features">Features</a></li>
                <li><a href="#benefits">Benefits</a></li>
                <li><a href="#costs">Costs</a></li>
            </ul>
        </div>
        <div class="col-md-9 column">
            <h1>Blah, blah, blah</h1>
            <hr>
            <a class="anchor3" id="top" name="software"></a>
            <p>
             content here that scrolls...
            </p>
        </div>
    </div>
</div>

ご覧のとおり、スクロールするとサイドバーからはみ出し、ページの下部に到達してもページの下部に固定されません。

4

2 に答える 2

24

Bootstrap のドキュメント ( http://getbootstrap.com/2.3.2/javascript.html#affix ) から。

注意喚起!固定された要素の位置とその直接の親の動作を管理する必要があります。位置は、affix、affix-top、および affix-bottom によって制御されます。ページの通常のフローからコンテンツを削除するため、接辞が適用されたときに折りたたまれている可能性のある親を確認することを忘れないでください。

affixそのため、要素が固定されたときに要素の幅を設定するための CSS が必要です。そのような:

#sidebar.affix {
    position: fixed;
    top: 0;
    width:225px;
  }

Bootply のデモ: http://bootply.com/73864

Bootstrap affix に関する関連する回答:
How to create a sticky left sidebar menu using bootstrap 3?
Twitter-bootstrap 3 ウィンドウのサイズ変更とフッター時にコンテンツが重なるサイドバーを貼り付ける

于 2013-08-16T10:26:00.417 に答える
3

@FreezeDriedPop への回答で、これがうまくいくことがわかりました。

var navbw = $('#sidebar').width()-7;
$('header').append('<style id="addedCSS" type="text/css">#sidebar.affix {width:'+navbw+'px;}</style>');
于 2014-11-27T15:52:34.780 に答える