Tạo vị trí cố định cột trong bootstrap


83

Sử dụng Bootstrap, tôi có một cột lưới class = "col-lg-3" mà tôi muốn đặt nó ở vị trí: cố định trong khi .col-lg-9 khác là vị trí bình thường (có thể cuộn qua trang).

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

</div>

Cũng giống như cách cột bên trái trong LifeHacker.com Bạn sẽ thấy rằng phần bên trái được cố định tuy nhiên tôi cuộn qua trang.

Tôi sử dụng bootstrap v3.1.1


@Lowkase Tôi đã đính kèm mã theo yêu cầu.

1
Đang chờ chủ đề được gỡ bỏ "tạm dừng". Trong thời gian chờ đợi, bạn có thể xem câu trả lời của tôi tại đây: jsfiddle.net/dRbe4 . Tôi có thể giải thích nó tốt hơn khi câu hỏi được mở lại.
Lowkase

Câu trả lời:


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
Chắc chắn là giải pháp ưa thích bây giờ!
Scott

12
Điều này không hoạt động bình thường trên các màn hình nhỏ hơn, div bên phải sẽ nằm trên cột bên trái chứa fixeddiv
thefoxrocks

12
bootstrap 4 ?? bất kỳ ý tưởng
PirateApp

22
Trong Bootstrap 4, thay đổi 'affix' thành '
stick

3
Để biết thông tin: Bootstrap đã bỏ hỗ trợ gắn với Bootstrap 4.0. Sử dụng 'vị trí: dính' ngay bây giờ như được đề xuất tại đây: getbootstrap.com/docs/4.1/migration/#components
Antoine Delia,

50

lặp lại câu trả lời của Ihab, chỉ sử dụng position:fixedvà khởi động col-offsetbạn không cần phải nói rõ về chiều rộng.

<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
điều này không làm việc nếu bạn thay đổi vị trí của các cột
didando8a

Đây là một giải pháp tốt hơn! hoạt động hoàn hảo và không cần CSS. @ didando8a Nếu bạn thay đổi vị trí các cột, chỉ cần thay đổi col-lg-offset thành một offset mới.
Roy Shoa

Nếu ai đó cũng cần Khả năng cuộn vào cột cố định, chỉ cần thêm chiều cao và phần tràn. vd style="position:fixed;height:100%;overflow-y:auto;".
Roy Shoa

7
@Roy "Không CSS là cần thiết" - vâng đó là, nó chỉ trong thẻ style;)
Mike Furlender

4
Đây là những gì tôi cần! Lưu ý rằng các lớp bù đắp khác nhau trong Bootstrap 4, ví dụ offset-lg-3. getbootstrap.com/docs/4.0/layout/grid/#offsetting-columns
nickwesselman

29

Làm theo giải pháp tại đây 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>

Tôi đã sửa đổi một số css để hoạt động hoàn hảo:

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

Cảm ơn @Lowkase đã chia sẻ giải pháp.


10
Có thể có cùng một kết quả mà không chỉ định thuộc tính width?
ADIMO

1
Tôi nhận ra điều này phải rõ ràng một cách đau đớn, nhưng tôi không thể làm cho nó hoạt động được ... Tôi muốn cột có thể cuộn ở bên trái và cột cố định ở bên phải. Cột cố định của tôi chỉ có một nhãn trong đó, nhưng vì một số lý do khi tôi đặt các lớp này, nhãn "dính" vào góc trên bên trái thay vì ở trong cột. Tôi đã thử tất cả các kết hợp khác nhau của các thuộc tính kiểu nhưng không có kết quả. Sẽ đánh giá cao một con trỏ :)
Reid

1
@ReidBelton chia sẻ Jsfiddle để tôi có thể giúp bạn về mã.

@ IhabAbdel-Rahim Cảm ơn rất nhiều vì lời đề nghị! Tuy nhiên, không cần thiết vì tôi đã gác lại dự án này.
Reid

tôi đã làm như vậy nhưng khi tôi thêm lớp cố định, nó sẽ biến mất. Hãy giúp tôi.
Arpan

21

trong Bootstrap 3 class="affix"hoạt động, nhưng trong Bootstrap 4 thì không. Tôi đã giải quyết vấn đề này trong Bootstrap 4 với class="sticky-top" (sử dụng position: fixedtrong CSS có vấn đề riêng)

mã sẽ như thế này:

<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>

Hoàn hảo. position-fixedcũng hoạt động để làm cho cột dính ở trên cùng, tuy nhiên nội dung của cột bị tràn. sticky-topđã sửa điều đó.
maxpaj

11

Đã cập nhật cho Bootstrap 4

Bootstrap 4 hiện bao gồm một position-fixedlớp cho mục đích này nên không cần thêm 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
Nếu tôi làm như trong ví dụ của bạn, thì nội dung của cột "col-lg-3" sẽ không có trong cột gốc của nó. Khá lạ! (Cố gắng đưa thêm văn bản vào này). Nó phải là một lỗi ...
ThePhi

1
Không có gì lạ khi các phần tử vị trí cố định bị xóa khỏi luồng DOM thông thường . Điều này nằm ngoài phạm vi của câu hỏi ban đầu, nhưng sẽ phải đặt kích thước cụ thể trên phần tử cố định.
Zim

2
điều này gây ra các cột để chồng lên nhau dù khác
ChumiestBucket

1
Trong trường hợp của tôi, điều này được ưu tiên hơn, vì việc xác định vị trí: tạo kiểu cố định cho div col-lg-3 khiến con trỏ của các phần tử con bên trong được hiển thị dưới dạng mặc định (thay vì fx. Pointer).
chri3g91

4

Sử dụng cái này, phù hợp với tôi và giải quyết các vấn đề với màn hình nhỏ.

<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

Với bootstrap 4 chỉ cần sử dụng 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
không hiệu quả với tôi. cả hai cột đều cuộn như mong đợi.
ChumiestBucket

1
@star_trac hãy thử thêm một số css, sẽ giúp được:.container-fluid { flex: 1; }
stefanitsky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.