Bootstrap kết hợp các hàng (rowspan)


127

Tôi đang thử nghiệm Twitter Bootstrap và bị mắc kẹt với giàn giáo cơ bản với các hàng. Tôi đã xem lại số lần tài liệu của họ và tôi có thể thấy các cột lồng trong đó về cơ bản bạn có thể lồng các cột trong một cột nhưng tôi không thể xác định khả năng kết hợp các hàng thành một và có liên kết với cột bên cạnh các hàng không có tổ chức.

Dưới đây hình ảnh nên minh họa những gì tôi muốn thực hiện.

mẫu bố trí hàng

Giải pháp khắc phục duy nhất tôi gặp phải là sử dụng bảng nhưng tôi không thích ý tưởng này vì quan điểm của tôi là khả năng đáp ứng sẽ không hoạt động với việc sử dụng bảng.

Có ai có bất kỳ giải pháp thanh lịch cho điều này? Hầu hết các bố cục web tôi làm sẽ cần mức độ linh hoạt tốt vì vậy sẽ thật tuyệt nếu tôi có thể chọn thứ gì đó hữu ích ở đây.

Câu trả lời:


98

Divs xếp theo chiều dọc theo mặc định, do đó không cần xử lý đặc biệt các "hàng" trong một cột.

div {
  height:50px;
}
.short-div {
  height:25px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <h1>Responsive Bootstrap</h1>
  <div class="row">
    <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5" style="background-color:red;">Span 5</div>
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="background-color:blue">Span 3</div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="padding:0px">
      <div class="short-div" style="background-color:green">Span 2</div>
      <div class="short-div" style="background-color:purple">Span 2</div>
    </div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="background-color:yellow">Span 2</div>
  </div>
</div>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
      <div class="short-div" style="background-color:#999">Span 6</div>
      <div class="short-div">Span 6</div>
    </div>
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="background-color:#ccc">Span 6</div>
  </div>
</div>

Đây là câu đố .


2
Cảm ơn rất nhiều. Đó là những gì tôi đang tìm kiếm! Tôi muốn tài liệu Bootstrap đề cập thêm điều này dưới các cột lồng nhau vì cách tiếp cận về cơ bản là giống nhau.
Seong Lee

1
trong ví dụ của bạn, bạn xác định 1row=25px, 2row=50px. bạn có thể làm cho div kéo dài lên cao như toàn bộ hàng không? đã thử thêm .row{height:100%;}nhưng không được.
Tomer W

Có, @carter ví dụ ban đầu không tuân thủ bootstrap 3; Tôi đã sửa nó.
Paul Keister

1
Ví dụ này có máng xối ở hàng thứ hai trông lạ.
Connie DeCinko

83

Bạn nên sử dụng lồng bootstrap.

Xem Bootstrap 3 hoặc Bootstrap 4 :

<div class="row">
    <div class="col-md-5">Span 5</div>
    <div class="col-md-3">Span 3<br />second line</div>
    <div class="col-md-2">
        <div class="row">
            <div class="col-md-12">Span 2</div>
        </div>
        <div class="row">
            <div class="col-md-12">Span 2</div>
        </div>
    </div>
    <div class="col-md-2">Span 2</div>
</div>
<div class="row">
    <div class="col-md-6">
        <div class="row">
            <div class="col-md-12">Span 6</div>
            <div class="col-md-12">Span 6</div>
        </div>
    </div>
    <div class="col-md-6">Span 6</div>
</div>

http://jsfiddle.net/DRanJ/125/

(Trong Fiddle màn hình, phóng to màn hình thử nghiệm của bạn để xem kết quả, bởi vì tôi đang sử dụng col- md - *, sau đó ngăn xếp đáp ứng các cột)

Lưu ý : Tôi không chắc chắn rằng BS2 cho phép các cột lồng nhau , nhưng trong câu trả lời của Paul Keister, các cột lồng nhau không được sử dụng. Bạn nên sử dụng nó và tránh để phát minh lại css trong khi bootstrap làm tốt.

Chiều cao cột là tự động, nếu bạn thêm một dòng thứ hai (như tôi làm trong ví dụ của tôi), chiều cao cột sẽ tự điều chỉnh.


10
Đây phải là câu trả lời được chấp nhận vì nó hoạt động với Bootstrap ngoài hộp và không yêu cầu bất kỳ tinh chỉnh CSS nào
cheenbabes 4/2/2015

Câu trả lời được chấp nhận là dễ đọc hơn; nó chứa một đoạn mã và một liên kết đến các ví dụ của JSfiddle và IMHO Paul Keister rõ ràng hơn các ví dụ của Alcalyn. Đó là lý do tại sao tôi nghĩ rằng Paul Keister nên được giữ làm câu trả lời được chấp nhận, ít nhất là cho đến khi câu trả lời của Alcalyn được cải thiện.
naXa

1
@Alcalyn trong trình duyệt của tôi (Chrome), câu đố được liên kết từ câu trả lời của bạn không tạo ra kết quả như mong đợi (xem hình trong câu hỏi). Kết quả thực tế là tất cả các div được căn chỉnh trong một cột.
naXa

1
Nếu bạn thấy một cột duy nhất với tất cả các nhịp được căn chỉnh, điều này là do -md-quy tắc đáp ứng. Bạn phải phóng to màn hình của bạn để xem kết quả mong đợi. Nếu bạn cần các nhịp của mình để hiển thị dưới dạng cột trên màn hình nhỏ hơn, hãy thay thế -md-bằng -sm-hoặc -xs-. Đây là một câu hỏi điểm dừng (Xem bootstrapdocs.com/v3.0.3/docs/css/#grid ).
Alcalyn

12

Lưu ý: Điều này là dành cho Bootstrap 2 (có liên quan khi câu hỏi được hỏi).

Bạn có thể thực hiện điều này bằng cách sử dụng row-fluidđể tạo một hàng dựa trên chất lỏng (phần trăm) bên trong một hàng hiện có block.

<div class="row">
   <div class="span5">span5</div>
   <div class="span3">span3</div>
   <div class="span2">
      <div class="row-fluid">
         <div class="span12">span2</div>
         <div class="span12">span2</div>
      </div>
   </div>
   <div class="span2">span2</div>
</div>
<div class="row">
   <div class="span6">
      <div class="row-fluid">
         <div class="span12">span6</div>
         <div class="span12">span6</div>
      </div>
   </div>
   <div class="span6">span6</div>
</div>

Đây là một ví dụ về JSFiddle .

Tôi đã nhận thấy rằng có một lề trái kỳ lạ xuất hiện (hoặc không xuất hiện) cho các nhịp bên trong row-fluidsau khoảng đầu tiên. Điều này có thể được khắc phục bằng một tinh chỉnh CSS nhỏ (đó là cùng một CSS được áp dụng cho đứa trẻ đầu tiên, được mở rộng cho những đứa trẻ đã qua đứa trẻ đầu tiên):

.row-fluid [class*="span"] {
    margin-left: 0;
}

Cảm ơn nỗ lực của bạn nhưng có vẻ như một hàng không phải sử dụng chất lỏng hàng để thực hiện điều này theo đề xuất của câu trả lời đã chọn của tôi. Tôi thực sự đánh giá cao nó mặc dù!
Seong Lee

1
Rất đúng, nhưng đừng quên row-fluidkhi đến lúc bắt đầu chia nhỏ các hàng bên trong.
pickypg

7

Kiểm tra cái này Hy vọng nó sẽ giúp đầy đủ cho bạn.

http://jsfiddle.net/j6amM/

.row-fix { margin-bottom:20px;}

.row-fix > [class*="span"]{ height:100px; background:#f1f1f1;}

.row-fix .two-col{ background:none;}

.two-col > [class*="col"]{ height:40px; background:#ccc;}

.two-col > .col1{margin-bottom:20px;}

1

Câu trả lời của Paul dường như đánh bại mục đích của bootstrap; đó là phản ứng với kích thước màn hình / màn hình.

Bằng cách lồng các hàng và cột, bạn có thể đạt được kết quả tương tự, trong khi vẫn duy trì khả năng phản hồi.

Đây là một phản ứng cập nhật cho vấn đề này;

<div class="container-fluid">
  <h1>  Responsive Nested Bootstrap </h1> 
  <div class="row">
    <div class="col-md-5" style="background-color:red;">Span 5</div>
    <div class="col-md-3" style="background-color:blue;">Span 3</div>
    <div class="col-md-2">
      <div class="row">
        <div class="container" style="background-color:green;">Span 2</div>
      </div>
      <div class="row">
        <div class="container" style="background-color:purple;">Span 2</div>
      </div>
    </div>
    <div class="col-md-2" style="background-color:yellow;">Span 2</div>
  </div>
  
  <div class="row">
    <div class="col-md-6">
      <div class="row">
        <div class="container" style="background-color:yellow;">Span 6</div>
      </div>
      <div class="row">
        <div class="container" style="background-color:green;">Span 6</div>
      </div>
    </div>
    <div class="col-md-6" style="background-color:red;">Span 6</div>
  </div>
</div>

Bạn có thể xem codepen ở đây.


0

div {
  height:50px;
}
.short-div {
  height:25px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <h1>Responsive Bootstrap</h1>
  <div class="row">
    <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5" style="background-color:red;">Span 5</div>
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="background-color:blue">Span 3</div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="padding:0px">
      <div class="short-div" style="background-color:green">Span 2</div>
      <div class="short-div" style="background-color:purple">Span 2</div>
    </div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="background-color:yellow">Span 2</div>
  </div>
</div>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
      <div class="short-div" style="background-color:#999">Span 6</div>
      <div class="short-div">Span 6</div>
    </div>
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="background-color:#ccc">Span 6</div>
  </div>
</div>


Điều này không hiệu quả với tôi với <div class = "col-sm-2"> <div class = "col-lg-4 col-md-4 col-sm-4 col-xs-4" style = "background- color: yellow; "> <input type =" file "id =" imgInp "name =" img "accept =". png, .jpg, .jpeg "> <! - <input type =" text "src =" "class =" form-control "id =" imgName "size =" 40 "> </ input> -> <img id =" img-upload "src =" "alt =" Transporter "width =" 300% " height = "50%" class = "round-circle" /> </ div> </ div> </ div>
SUDIP SINGH

2
Vui lòng thêm giải thích xung quanh mã của bạn. Để OP và người đọc tương lai có thể dễ dàng hiểu câu trả lời của bạn.
Sangam Belose
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.