Bootstrap 3 - Tại sao lớp hàng lại rộng hơn vùng chứa của nó?


116

Tôi mới bắt đầu sử dụng Bootstrap 3. Tôi đang gặp khó khăn khi hiểu cách lớp hàng hoạt động. Có cách nào để tránh padding-leftpadding-right?

<div class="row" style="background:#000000">           
  <div class="col-xs-4 .col-xs-offset-1">
    col
  </div>
  <div class="col-xs-2">
    col
  </div>
  <div class="col-xs-2">
    col
  </div>
  <div class="col-xs-2">
    col
  </div>
</div>

http://jsfiddle.net/petran/rdRpx/


@Adrift điều này có còn đúng không? Tôi không chắc liệu bạn có nghĩa là chúng không hoạt động chính xác hay không, bởi vì tôi đã sử dụng chúng và chúng dường như hoạt động như bình thường.
Ngũ cốc

1
@Cereal: Không còn nữa. Điều này đã được thêm vào v3.0.2
adrift

3
vì hàng bootstrap có lề trái và phải -15px.

Có thể không phải là vấn đề của bạn mà đối với bất kỳ ai khác có cùng loại vấn đề: Đảm bảo rằng bạn chỉ có một thuộc tính lớp trên div của mình. Tôi đã vô tình nhân đôi chúng lên và gặp vấn đề tương tự.
The One True Colter

Câu trả lời:


151

Trong tất cả các hệ thống lưới, có máng xối giữa mỗi cột. Hệ thống của Bootstrap đặt một phần đệm 15px ở cả bên trái và bên phải của mỗi cột để tạo rãnh này.

Vấn đề là cột đầu tiên không được có nửa rãnh ở bên trái và cột cuối cùng không được có nửa rãnh ở bên phải. Thay vì sử dụng một số loại .firsthoặc .lastlớp trên các cột đó như một số hệ thống lưới làm, thay vào đó chúng đặt .rowlớp có lề âm phù hợp với phần đệm của các cột. Điều này "kéo" các máng xối ra khỏi cột đầu tiên và cột cuối cùng, đồng thời làm cho nó rộng hơn.

Các .rowdiv nên không bao giờ thực sự được sử dụng để giữ bất cứ điều gì khác ngoài cột lưới. Nếu đúng như vậy, bạn sẽ thấy nội dung bị dịch chuyển so với bất kỳ cột nào, như thể hiện rõ ràng trong fiddle của bạn.

CẬP NHẬT:

Bạn đã sửa đổi câu hỏi của mình sau khi tôi trả lời, vì vậy đây là câu trả lời cho câu hỏi bạn hiện đang hỏi: Thêm .containerlớp vào đầu tiên <div>. Xem ví dụ làm việc .


2
Các cột lưới được phân tách bằng khoảng đệm, không phải lề (trong BS3)
adrift

3
Tuyệt quá! Điều đó giải thích tất cả các nội dung tràn.
Rutwick Gangurde

27

Với bootstrap 3.3.7, vấn đề này được giải quyết khi bao bọc .row với .container-chất lỏng.


điều này đã hiệu quả với tôi, mặc dù ban đầu tôi nghĩ là không, đó là bởi vì tôi đã mở bảng điều khiển web của nhà phát triển làm giảm chiều rộng, nhưng dường như cũng làm rối tung điều này. Việc sử dụng .container-fluidcũng được đề xuất tại đây: stackoverflow.com/a/23616447/5272567
Matthias

cũng hoạt động khi div bao bọc ở vị trí absolute. cảm ơn vì gợi ý
InsOp

nếu tôi có thể up-bỏ phiếu này trả lời nhiều lần ... :)
rony36

Bản sửa lỗi tương tự cho Bootstrap 4.
Rob L

19

Xem câu trả lời của tôi dưới đây cho bài viết tương tự.

Tại sao bootstrap .row có lề mặc định bên trái là -30px?

Về cơ bản, bạn sử dụng "clearfix" thay vì "row". Nó hoạt động giống hệt như "hàng" không bao gồm lề âm.


2
Các lớp đó thực hiện hai việc khác nhau, mặc dù chúng có vẻ làm được điều đó một cách trực quan.
Todd Baur

Điều này giải quyết nội dung tràn ra bên ngoài trình bao bọc.
Bhojendra Rauniyar

Nhưng cách tốt hơn là quấn hàng bằng thùng chứa.
Bhojendra Rauniyar

HAY NHẤT! LÊN!
Anderson Bressane

18

Tôi đã sử dụng lớp hàng bên trong lớp vùng chứa và vẫn gặp sự cố. Khi tôi đã thêm margin-left: auto; margin-right: auto;vào .rowlớp nó làm việc tốt.


8
Điều này hoạt động như một sự quyến rũ! Việc thêm lớp 'mx-auto' trong bootstrap 4 đã khắc phục sự cố tràn cho tôi.
Michelle M.

3

@Michelle M. sẽ nhận được toàn bộ tín dụng cho Câu trả lời này.
Cô ấy nói trong một trong những Bình luận:

Việc thêm lớp 'mx-auto' trong bootstrap 4 đã khắc phục sự cố tràn cho tôi.

Bạn cần cập nhật divPhần tử đầu tiên của mình như sau:

<div class="row mx-auto" style="background:#000000">

Không cần phải làm điều này cho tất cả các Hàng lồng nhau (nếu bạn có chúng).
Chỉ cần thêm mx-autovào ngoài cùng row(hoặc Hàng) để tránh Thanh cuộn dọc.
Không Ghi đè hành vi của tất cả các Hàng Bootstrap bằng cách thêm một lớp "hàng" để thay thế Lề.


1

Đối với bất kỳ nhà phát triển nào trong tương lai gỡ lỗi vấn đề này:

Bootstrap đặt đệm cho các cột hàng, vì vậy không nội dung nào của hàng xuất hiện bên ngoài vùng chứa. Nếu bạn đang gặp phải điều này và bạn đang sử dụng hệ thống lưới của bootstrap một cách chính xác bằng cách sử dụng các lớp col -..., thì có khả năng bạn có CSS ​​bổ sung ở đâu đó đặt lại phần đệm trên các cột.


Hoặc, bạn có phiên bản Bootstrap cũ. Ví dụ: 3.0.0 được phân phối với VS2015. Xem github.com/twbs/bootstrap/issues/8959
Adventure
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.