ブートストラップで列を固定位置にする


83

Bootstrapを使用して、他の.col-lg-9が通常の位置(ページをスクロール可能)である間、それをposition:fixedに配置したいグリッド列class = "col-lg-3"があります。

<div class="row">
    <div class="col-lg-3">
        Fixed content
    </div>
    <div class="col-lg-9">
        Normal scrollable content
    </div>

</div>

LifeHacker.comの左側の列とまったく同じように 、左側の部分が修正されていることがわかりますが、ページをスクロールします。

ブートストラップv3.1.1を使用しています


@Lowkaseリクエストごとにコードを添付しました。

1
トピックが「保留中」に解除されるのを待っています。それまでの間、ここで私の答えを見ることができます:jsfiddle.net/dRbe4。質問が再開されたら、もっとよく説明できます。
Lowkase 2014

回答:


87
<div class="row">
    <div class="col-lg-3">
       <div class="affix">
           fixed position 
        </div>
    </div>
    <div class="col-lg-9">
       Normal data enter code here
    </div>
</div>

3
今は間違いなく好ましい解決策です!
スコット

12
これは小さな画面では正しく機能しません。右側のdivは、fixeddivを含む左側の列の上に配置されます
thefoxrocks 2016年

12
ブートストラップ4 ?? 任意のアイデア
PirateApp 2018年

22
Bootstrap 4で、「affix」を「sticky-top」に変更します
TacioCosta18年

3
詳細:Bootstrapは、Bootstrap4.0での接辞のサポートを終了しました。使用「位置:スティッキー」今ここに提案されるように:getbootstrap.com/docs/4.1/migration/#components
アントワーヌ・デリア

50

Ihabの答えを繰り返し、幅を特定する必要のないposition:fixedブートストラップcol-offsetを使用するだけです。

<div class="row">
    <div class="col-lg-3" style="position:fixed">
        Fixed content
    </div>
    <div class="col-lg-9 col-lg-offset-3">
        Normal scrollable content
    </div>
</div>

5
列の位置を変更した場合、これは機能しません
didando8a 2015

これはより良い解決策です!完璧に動作し、CSSは必要ありません。@ didando8a列の位置を変更する場合は、col-lg-offsetを新しいオフセットに変更するだけです。
ロイショア2015

誰かが固定列にスクロール機能も必要な場合は、高さとオーバーフローを追加するだけです。例:style="position:fixed;height:100%;overflow-y:auto;"
ロイショア2016年

7
@Roy「CSSは必要ありません」-そうです、スタイルタグだけです;)
Mike Furlender 2016

4
これが私が必要としていたものです!Bootstrap 4では、オフセットクラスが異なることに注意してくださいoffset-lg-3getbootstrap.com/docs/4.0/layout/grid/#offsetting-columns
nickwesselman

29

ここの解決策に従ってhttp://jsfiddle.net/dRbe4/

<div class="row">
    <div class="col-lg-3 fixed">
        Fixed content
    </div>
    <div class="col-lg-9 scrollit">
        Normal scrollable content
    </div>

 </div>

私はいくつかのCSSを完全に機能するように変更しました:

.fixed {
        position: fixed;
        width: 25%;
}
.scrollit {
        float: left;
        width: 71%
}

ソリューションを共有してくれた@Lowkaseに感謝します。


10
width属性を指定せずに同じ結果を得ることができますか?
ADIMO 2014年

1
これは痛々しいほど明白なはずですが、機能させることができません...左側にスクロール可能な列、右側に固定列が必要です。固定列にはラベルしかありませんが、何らかの理由でこれらのクラスを設定すると、ラベルが列に表示されるのではなく、左上隅に「貼り付け」られます。スタイル属性のさまざまな組み合わせをすべて試しましたが、役に立ちませんでした。ポインタをいただければ幸いです:)
Reid

1
@ReidBeltonはJsfiddleを共有しているので、コードのお手伝いをします。

@ IhabAbdel-Rahim申し出をありがとう!ただし、このプロジェクトを棚上げして以来、必要ありません。
リード

同じことをしましたが、固定クラスを追加すると消えてしまいます。助けてください。
アルパン2016年

21

Bootstrap 3ではclass="affix"機能しますが、Bootstrap4では機能しません。Bootstrap 4でこの問題を解決しましたclass="sticky-top"position: fixedCSSでの使用には独自の問題があります)

コードは次のようになります。

<div class="row">
    <div class="col-lg-3">
        <div class="sticky-top">
            Fixed content
        </div>
    </div>
    <div class="col-lg-9">
        Normal scrollable content
    </div>
</div>

完璧です。position-fixed柱を上にくっつける働きもしましたが、柱の中身が溢れていました。sticky-topそれを修正しました。
maxpaj

11

Bootstrap4用に更新

Bootstrap 4にはposition-fixedこの目的のためのクラスが含まれているため、追加のCSSは必要ありません...

<div class="container">
    <div class="row">
        <div class="col-lg-3">
            <div class="position-fixed">
                Fixed content
            </div>
        </div>
        <div class="col-lg-9">
            Normal scrollable content
        </div>
    </div>
</div>

https://www.codeply.com/go/yOF9csaptw


1
あなたの例のようにすると、「col-lg-3」列の内容はその親から外れます。かなり奇妙!(これにもっとテキストを入れてみてください)。これはバグでなければなりません...
ThePhi

1
固定位置要素が通常のDOMフローから削除されるので、それは奇妙なことではありません。これは元の質問の範囲外ですが、固定要素に特定のサイズを設定する必要があります。
ジム

2
これは、列がものの重なるせる
ChumiestBucket

1
私の場合、位置を定義するので、これが好まれました。col-lg-3divのスタイルを修正すると、内側の子要素のカーソルが(fx。ポインターではなく)デフォルトとして表示されました。
chri3g 9119年

4

これを使用して、私のために働き、小さな画面の問題を解決します。

<div class="row">
    <!-- (fixed content) JUST VISIBLE IN LG SCREEN -->
    <div class="col-lg-3 device-lg visible-lg">
       <div class="affix">
           fixed position 
        </div>
    </div>
    <div class="col-lg-9">
    <!-- (fixed content) JUST VISIBLE IN NO LG SCREEN -->
    <div class="device-sm visible-sm device-xs visible-xs device-md visible-md ">
       <div>
           NO fixed position
        </div>
    </div>
       Normal data enter code here
    </div>
</div>

2

ブートストラップ4では、col-autoを使用するだけです。

<div class="container-fluid">
    <div class="row">
        <div class="col-sm-auto">
            Fixed content
        </div>
        <div class="col-sm">
            Normal scrollable content
        </div>
    </div>
</div>

1
私にはうまくいきませんでした。両方の列が期待どおりにスクロールします。
ChumiestBucket

1
@star_tracいくつかのCSSを追加しようと、助けるべきである:.container-fluid { flex: 1; }
stefanitsky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.