Twitter bootstrap 3 hai cột chiều cao đầy đủ


247

Tôi đang cố gắng tạo bố cục toàn chiều cao hai cột bằng twitter bootstrap 3. Có vẻ như twitter bootstrap 3 không hỗ trợ bố cục chiều cao đầy đủ. Những gì tôi muốn làm:

  +-------------------------------------------------+
  |                     Header                      |
  +------------+------------------------------------+
  |            |                                    |
  |            |                                    |
  |Navigation  |         Content                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  +------------+------------------------------------+

Nếu nội dung phát triển, điều hướng cũng nên phát triển.

  • Chiều cao 100% cho mỗi phụ huynh không hoạt động vì có trường hợp nội dung là một dòng.
  • vị trí tuyệt đối dường như là sai cách
  • display: tabledisplay:table-cellgiải quyết vấn đề, nhưng nó không thanh lịch

html:

    <div class="container">
      <div class="row">
        <div class="col-md-3"></div>
        <div class="col-md-9"></div>
      </div>
    </div>

Có cách nào để làm cho nó với 3 lớp bootstrap mặc định của twitter không?


Phần tử điều hướng + nội dung đó có phải bao phủ chiều cao khung nhìn (màn hình) còn lại không?
Shekhar K. Sharma

Đúng. Chỉ để xóa: tiêu đề + nội dung = 100% chế độ xem, nếu chiều cao của nội dung <= chiều cao khung nhìn trừ chiều cao tiêu đề. xin lỗi vì tiếng anh kém
uladzimir

Tôi không hiểu, bạn không thể chỉ đưa nền cho .row và cho phép col-md-9 che đậy phần hoặc ngược lại? Làm thế nào về việc cho hàng có chiều cao 100% cho chiều cao điều hướng 100% và chỉ cho phép col-md-9 phát triển linh hoạt?
Chris Peterson

Câu trả lời:


217

Chỉnh sửa: Trong Bootstrap 4 , các lớp gốc có thể tạo các cột có chiều cao đầy đủ ( DEMO ) vì chúng đã thay đổi hệ thống lưới của chúng thành flexbox. (Đọc tiếp cho Bootstrap 3)


Các lớp Bootstrap 3.0 gốc không hỗ trợ bố cục mà bạn mô tả, tuy nhiên, chúng tôi có thể tích hợp một số CSS tùy chỉnh sử dụng các bảng css để đạt được điều này.

Bootply demo / Codepen

Đánh dấu:

<header>Header</header>
<div class="container">
    <div class="row">
        <div class="col-md-3 no-float">Navigation</div>
        <div class="col-md-9 no-float">Content</div>
    </div>
</div>

(Có liên quan) CSS

html,body,.container {
    height:100%;
}
.container {
    display:table;
    width: 100%;
    margin-top: -50px;
    padding: 50px 0 0 0; /*set left/right padding according to needs*/
    box-sizing: border-box;
}

.row {
    height: 100%;
    display: table-row;
}

.row .no-float {
  display: table-cell;
  float: none;
}

Đoạn mã trên sẽ đạt được các cột có chiều cao đầy đủ (do các thuộc tính bảng css tùy chỉnh mà chúng tôi đã thêm) và với tỷ lệ 1: 3 (Điều hướng: Nội dung) cho độ rộng màn hình trung bình trở lên - (do các lớp mặc định của bootstrap: col-md -3 và col-md-9)

Lưu ý:

1) Để không làm xáo trộn các lớp cột gốc của bootstrap, chúng tôi thêm một lớp khác như no-floattrong đánh dấu và chỉ được đặt display:table-cellfloat:nonetrên lớp này (như được gắn với chính các lớp cột).

2) Nếu chúng tôi chỉ muốn sử dụng mã bảng css cho một điểm dừng cụ thể (giả sử độ rộng màn hình trung bình trở lên) nhưng đối với màn hình di động, chúng tôi muốn mặc định quay lại hành vi bootstrap thông thường hơn là chúng tôi có thể bọc CSS tùy chỉnh của mình trong một truy vấn phương tiện truyền thông, nói:

@media (min-width: 992px) {
  .row .no-float {
      display: table-cell;
      float: none;
  }
}

Bản demo Codepen

Bây giờ, đối với các màn hình nhỏ hơn, các cột sẽ hoạt động giống như các cột bootstrap mặc định (mỗi cột có chiều rộng đầy đủ).

3) Nếu tỷ lệ 1: 3 là cần thiết cho tất cả các độ rộng màn hình - thì có lẽ tốt hơn là loại bỏ các lớp col-md- * của bootstrap khỏi đánh dấu vì đó không phải là cách chúng được sử dụng.

Bản demo Codepen


Hừm. Nó không thực sự là những gì tôi đang tìm kiếm, có thể có giải pháp với 3 lớp bootstrap riêng? Dẫu sao cũng xin cảm ơn!
uladzimir

7
Hoạt động cho tôi sau khi thêm float: none; vào cột, nhưng trên js thì không cần thiết. Tại sao? Cập nhật: @media - nguyên nhân
uladzimir

2
@Zubzob - Tôi đã cập nhật câu trả lời và bootply của tôi. Bằng cách thêm một lớp bổ sung vào các lớp gốc col-md-3 và col-md-9 - chúng tôi có thể đảm bảo rằng điều này sẽ không làm rối mã khác.
Danield

1
Vì vậy, câu trả lời sẽ là: "Không, bạn không thể làm điều này với các lớp bootstrap ngoài hộp"?
eran otzap

1
@Meglio vui lòng đọc câu trả lời đã được chỉnh sửa của tôi - cảm ơn vì đã chỉ ra điều đó
Danield

68

Bạn có thể đạt được những gì bạn muốn với padding-bottom: 100%; margin-bottom: -100%;thủ thuật, bạn có thể thấy trong câu đố này.

Tôi thay đổi HTML của bạn một chút, nhưng bạn có thể đạt được kết quả tương tự với HTML của riêng bạn với mã sau đây

.col-md-9 {
    overflow: hidden;
}

.col-md-3 {
    padding-bottom: 100%;
    margin-bottom: -100%;
}

Đồng ý. Tôi sẽ cập nhật câu hỏi. Tôi có trang động (col-md-9 có thể phát triển), vì vậy, biến thể của bạn không hoạt động, nhưng tôi sẽ kiểm tra nó. Cảm ơn
uladzimir

Không có gì tôi muốn nói trong câu hỏi. Tôi muốn các cột có chiều cao đầy đủ, trong trường hợp khi col-md-9 có một dòng chiều cao văn bản thì tất cả phải giống nhau 100% - chiều cao của tiêu đề hoặc đơn giản 100%. Tôi đã thử mẹo này, chỉ với các giá trị như 10000px, -10000px. Nhưng cảm ơn câu trả lời của bạn.
uladzimir

Các cột của tôi cao, vì vậy tôi phải sửa đổi phần đệm dưới: 10000%; lề dưới: -10000%; và nó đã làm điều đó Mặt khác, tôi đoán 100% đã làm với chiều cao trang
Bộ công cụ

2
Đối với những người khác đang thử giải pháp này, tràn: cần phải được áp dụng cho hàng cha mẹ, không phải cột không có thanh bên để hoạt động trên các trình duyệt. Nó đúng trong câu đố, nhưng không phải trong lời giải thích ở trên.
Tim

38

Giải pháp CSS thuần túy

Fiddle làm việc

Chỉ sử dụng CSS2.1, Hoạt động với tất cả các trình duyệt (IE8 +) mà không chỉ định bất kỳ chiều cao hoặc chiều rộng nào.

Điều đó có nghĩa là nếu tiêu đề của bạn đột nhiên dài ra hoặc điều hướng bên trái của bạn cần phóng to, bạn không phải sửa bất cứ điều gì trong CSS của mình.

Hoàn toàn đáp ứng, đơn giản và rõ ràng và rất dễ quản lý.

<div class="Container">
    <div class="Header">
    </div>
    <div class="HeightTaker">
        <div class="Wrapper">
            <div class="LeftNavigation">
            </div>
            <div class="Content">
            </div>
        </div>
    </div>
</div>

Giải thích: Chiếc container divchiếm 100% chiều cao của cơ thể, và anh ta chia làm 2 phần. Phần tiêu đề sẽ mở rộng đến chiều cao cần thiết của nó và HeightTakerphần còn lại sẽ lấy phần còn lại. Làm thế nào nó đạt được? bằng cách thả một phần tử rỗng dọc theo cạnh chứa với 100% chiều cao (sử dụng :before) và đưa HeightTakerphần tử trống ở cuối với quy tắc rõ ràng (sử dụng :after). phần tử đó không thể nằm cùng dòng với phần tử nổi, vì vậy anh ta bị đẩy cho đến cuối cùng. đó chính xác là 100% của tài liệu.

Với điều đó, chúng tôi thực hiện HeightTakernhịp cho phần còn lại của chiều cao container, mà không nêu bất kỳ chiều cao / lề cụ thể nào.

bên trong HeightTakerchúng ta xây dựng một bố cục nổi thông thường (để đạt được cột như hiển thị) với một thay đổi nhỏ .. chúng ta có một Wrapperyếu tố, cần thiết cho 100%chiều cao để làm việc.

Cập nhật

Đây là bản Demo với các lớp Bootstrap. (Tôi vừa thêm một div vào bố cục của bạn)


Vâng, nó là giải pháp làm đẹp nhất. Bạn có thể làm nó cho các lớp bootstrap?
uladzimir

Và xin vui lòng, giải thích, làm thế nào nó hoạt động. hiện tại nó là phù hợp nhất để phê duyệt
uladzimir

Tôi không biết bootstrap .. xin lỗi. nhưng nó rất dễ sử dụng .. bạn có thể tự làm một mình. Tôi sẽ thêm một lời giải thích về cách nó hoạt động.
avrahamcool

@baxxabit Tôi đã thêm một lời giải thích. cho tôi biết nếu bạn cần thêm thông tin
avrahamcool

1
Nếu bạn thay đổi kích thước cửa sổ, nó sẽ không vừa với màn hình.
Sadegh

25

Tôi đã nghĩ về một thay đổi tinh tế, không thay đổi hành vi bootstrap mặc định. Và tôi chỉ có thể sử dụng nó khi tôi cần:

.table-container {
  display: table;
}

.table-container .table-row {
  height: 100%;
  display: table-row;
}

.table-container .table-row .table-col {
  display: table-cell;
  float: none;
  vertical-align: top;
}

vì vậy tôi có thể sử dụng nó như thế này:

<div class="container table-container">
  <div class="row table-row">
    <div class="col-lg-4 table-col"> ... </div>
    <div class="col-lg-4 table-col"> ... </div>
    <div class="col-lg-4 table-col"> ... </div>
  </div>
</div>

Làm việc rất tốt cho tôi (sử dụng bootstrap 3)
Gary Richter

Tôi không thể có được một trong những giải pháp trên để làm việc, căn chỉnh dọc là chìa khóa cho tôi.
Nathan

9

Theo hiểu biết của tôi, bạn có thể sử dụng tối đa 5 phương pháp để thực hiện việc này:

  1. Sử dụng các thuộc tính bảng / bảng hiển thị CSS hoặc sử dụng các bảng thực tế.
  2. Sử dụng một yếu tố định vị tuyệt đối bên trong bọc.
  3. Sử dụng thuộc tính hiển thị Flexbox nhưng cho đến ngày hôm nay, nó vẫn hỗ trợ một phần
  4. Mô phỏng chiều cao cột đầy đủ bằng cách sử dụng kỹ thuật cột giả .
  5. Sử dụng kỹ thuật đệm / lề. Xem ví dụ .

Bootstrap: Tôi không có nhiều kinh nghiệm với nó nhưng tôi không nghĩ họ cung cấp phong cách cho điều đó.

.row
{
    overflow: hidden;
    height: 100%;
}
.row .col-md-3,
.row .col-md-9 
{
    padding: 30px 3.15% 99999px; 
    float: left;
    margin-bottom: -99999px;
}
.row .col-md-3 p,
.row .col-md-9 p 
{
    margin-bottom: 30px;
}
.col-md-3
{
    background: pink;
    left:0;
    width:25%
}
.col-md-9
{
    width: 75%;
    background: yellow;
}

Cảm ơn bạn, @Oriol. Bạn thật tuyệt vời. Một số điểm: 1), 2) có, nhưng không phải là điều tôi muốn 3) Đó là một giải pháp, nhưng chỉ dành cho ff và chrome hiện đại. safari hỗ trợ một phiên bản cũ của flexbox 4) chứ không phải các lớp bootstrap 5) Các cột bên phải có thể phát triển. Vì vậy, tràn: ẩn sẽ cắt một dòng quan trọng. Nó không tuyệt :) Tôi sẽ thử mã của bạn
uladzimir

7

Giải pháp hiện đại và rất đơn giản:

HTML:

<div class="container">
  <div class="row">
    <div class="col-md-3"></div>
    <div class="col-md-9"></div>
  </div>
</div>

CSS:

.row{
    display: flex;
}

6

Một giải pháp CSS thuần túy là đủ dễ dàng và nó hoạt động như một trình duyệt chéo quyến rũ.

Bạn chỉ cần thêm một phần đệm lớn và một lề âm lớn bằng nhau cho các cột điều hướng và nội dung, sau đó bọc hàng của chúng trong một lớp có ẩn tràn.
Xem trực tiếp
Chỉnh sửa chế độ xem

HTML

<div class="container">

  <div class="row">
    <div class="col-xs-12 header"><h1>Header</h1></div>
  </div>

  <div class="row col-wrap">

    <div class="col-md-3 col">
      <h1>Nav</h1>
    </div>

    <div class="col-md-9 col">
      <h1>Content</h1>
    </div>

  </div>
</div>

CSS

.col{
margin-bottom: -99999px;
padding-bottom: 99999px;
}

.col-wrap{
overflow: hidden; 
}  

Chúc may mắn!


1
xin lỗi, nhưng nó trông giống như một vụ hack khủng khiếp không cung cấp cho bạn các tùy chọn để định vị tuyệt đối một yếu tố ở dưới cùng của container con.
Mattijs

Giải pháp không tốt nếu bạn có bán kính đường viền dưới hoặc một số loại tài sản trực quan trong nền div.
RandomBoy

5

Giải pháp có thể đạt được theo hai cách

  1. Sử dụng hiển thị: bảng và hiển thị: bảng-ô
  2. Sử dụng phần đệm và lề âm.

Các lớp được sử dụng để có được giải pháp trên không được cung cấp trong bootstrap 3. display: table và display: cell-cell được đưa ra nhưng chỉ khi sử dụng các bảng trong HTML. biên âm và lớp đệm cũng không có.

Do đó chúng ta phải sử dụng css tùy chỉnh để đạt được điều này.

Dưới đây là giải pháp đầu tiên

Mã HTML:

<div class="container">
  <div class="row">
    <div class="col-md-12">
        <div class="page-header">
            <h3>Page-Header</h3>
        </div>
    </div>
  </div>
  <div class="row tablewrapper">
    <div class="col-md-12 tablerowwrapper">
        <div class="col-md-3 sidebar pad_top15">
            <ul class="nav nav-pills nav-stacked">
                <li class="active"><a href="#">Submenuone</a></li>
                <li><a href="#">Submenutwo</a></li>
                <li><a href="#">Submenuthree</a></li>
            </ul>
        </div>
        <div class="col-md-9 content">
            <div class="col-md-12">
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
            </div>
        </div>
    </div>
  </div>

</div>

css tương ứng:

html,body,.container{
        height:100%;
    }
    .tablewrapper{
        display:table;
        height:100%;
    }
    .tablerowwrapper{
        display:table-row;
    }
    .sidebar,.content{
        display:table-cell;
        height:100%;
        border: 1px solid black;
        float:none;
    }
    .pad_top15{
        padding-top:15px;
    }

Dưới đây là giải pháp thứ hai

Mã HTML:

 <div class="container">
  <div class="row">
    <div class="col-md-12">
        <div class="page-header">
            <h3>Page-Header</h3>
        </div>
    </div>
  </div>
  <div class="row ovfhidden bord_bot height100p">
    <div class="col-md-3 sidebar pad_top15">
            <ul class="nav nav-pills nav-stacked">
                <li class="active"><a href="#">Submenuone</a></li>
                <li><a href="#">Submenutwo</a></li>
                <li><a href="#">Submenuthree</a></li>
            </ul>
        </div>
        <div class="col-md-9 content pad_top15">
            <div class="col-md-12">

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
            </div>
        </div> 
  </div>

</div>

css tương ứng:

html,body,.container{
        height:100%;
    }
    .sidebar,.content{
        /*display:table-cell;
        height:100%;*/
        border: 1px solid black;
        padding-bottom:8000px;
        margin-bottom:-8000px;
    }
    .ovfhidden{
        overflow:hidden;
    }
    .pad_top15{
        padding-top:15px;
    }
    .bord_bot{
        border-bottom: 1px solid black;
    }

Các cột không có 100% chiều cao của khung nhìn
uladzimir

xin lỗi đã quên một kiểu cơ bản html, thân, thùng chứa {height: 100%;} thêm kiểu này vào giải pháp đầu tiên
user2594152

cột bên phải có thể phát triển, vì vậy, tràn: ẩn cho hàng có thể cắt một số nội dung, nếu nó sẽ mất nhiều hơn chiều cao của chế độ xem.
uladzimir

xóa tràn: ẩn khỏi hàng. có nội dung ẩn jsfiddle.net/gMPXG/7/embedded/result
uladzimir

Vấn đề trong đó là gì ??
dùng2594152

4

Ok, tôi đã đạt được điều tương tự khi sử dụng Bootstrap 3.0

Ví dụ với bootstrap mới nhất

http://jsfiddle.net/HDNQS/1/

HTML:

<div class="header">
    whatever
</div>
<div class="container-fluid wrapper">
    <div class="row">
        <div class="col-md-3 navigation"></div>
        <div class="col-md-9 content"></div>
    </div>
</div>

SCSS:

html, body, .wrapper {
    padding: 0;
    margin: 0;
    height: 100%;
}

$headerHeight: 43px;

.navigation, .content {
    display: table-cell;
    float: none;
    vertical-align: top;
}

.wrapper {
    display: table;
    width: 100%;
    margin-top: -$headerHeight;
    padding-top: $headerHeight;
}

.header {
    height: $headerHeight;
}

.row {
    height: 100%;
    margin: 0;
    display: table-row;
    &:before, &:after {
        content: none;
    }
}

.navigation {
    background: #4a4d4e;
    padding-left: 0;
    padding-right: 0;
}

Có, nhưng nó giống như câu trả lời được phê duyệt. Cảm ơn bạn
uladzimir

Vâng, nó hầu như giống nhau nhưng bạn cần thêm một số "điều chỉnh" nhỏ (xem content:nonevà những thứ nhỏ khác). Tôi muốn đăng một thay thế 'thả vào' mà tôi có thể sao chéppasta cũng như vậy
VAShhh

+1 để thêm "dọc-align: top". Cột bên trái của tôi đã bị kẹt ở dưới cùng của trang cho đến khi tôi thêm điều này.
NoizWaves

3

Vì vậy, có vẻ như lựa chọn tốt nhất của bạn là đi padding-bottomngược lại với margin-bottomchiến lược tiêu cực .

Tôi đã làm hai ví dụ. Một với <header> bên trong .container , và một với bên ngoài .

Cả hai phiên bản nên hoạt động đúng. Lưu ý việc sử dụng @mediatruy vấn sau để loại bỏ phần đệm thêm trên màn hình nhỏ hơn ...

@media screen and (max-width:991px) {
    .content { padding-top:0; }
}

Ngoài ra, những ví dụ đó sẽ khắc phục vấn đề của bạn.


kêu gọi tốt về việc loại bỏ phần đệm thêm trên màn hình nhỏ hơn
David Mann

Thumbs up cho fiddle với tiêu đề bên ngoài, đây là người duy nhất làm việc cho trường hợp của tôi.
Tinus Tate

2

có một cách dễ dàng hơn để làm điều này nếu tất cả những gì bạn quan tâm là đặt màu xuống.

Đặt cái này đầu tiên hoặc cuối cùng trong thẻ cơ thể của bạn

<div id="nfc" class="col col-md-2"></div>

và điều này trong css của bạn

#nfc{
  background: red;
  top: 0;
  left: 0;
  bottom: 0;
  position: fixed;
  z-index: -99;
}

bạn chỉ cần tạo một hình dạng, ghim nó phía sau trang và kéo dài nó lên hết chiều cao. Bằng cách sử dụng các lớp bootstrap hiện có, bạn sẽ có được chiều rộng phù hợp và nó sẽ đáp ứng.

Có một số hạn chế với phương pháp này, nhưng nếu đó là cấu trúc gốc của trang, thì đó là câu trả lời tốt nhất.


Tại sao bạn có position: absolute, sau đó position: fixed?
ADTC

Không phải là sương mù, lỗi đánh máy :)
Simon Stevens

Giải pháp tốt đẹp. Tuy nhiên, tôi chỉ có thể làm cho nó xếp hàng chính xác bằng cách sử dụng .container-fluid. Tôi muốn sử dụng .container. Ý tưởng?
Jibran

.containerhoặc .container-fluidkhông có liên quan đến điều này cả. các .col.col-md-2bộ chiều rộng sử dụng bootstrap. CSS của tôi ở trên buộc div phải có chiều cao đầy đủ, với chỉ số z âm đủ để đảm bảo nó nằm sau mọi thứ. Như đã nói ở trên, nó phải là yếu tố đầu tiên hoặc là yếu tố cuối cùng trong <body>thẻ của bạn
Simon Stevens

2

Tôi đã viết một CSS đơn giản tương thích với Bootstrap để tạo các bảng chiều rộng và chiều cao đầy đủ:

Câu đố: https://jsfiddle.net/uasbfc5e/4/

Nguyên tắc là:

  • thêm "bảng" trên một DIV chính
  • sau đó ngầm, DIV bên dưới sẽ tạo các hàng
  • và sau đó DIV bên dưới các hàng sẽ là các ô
  • Bạn có thể sử dụng lớp "tiêu đề" cho các tiêu đề hoặc tương tự

HTML:

<div class="tablefull">
    <div class="tableheader">
        <div class="col-xs-4">Header A</div>
        <div class="col-xs-4">B</div>
        <div class="col-xs-4">C</div>
    </div>
    <div>
        <div class="col-xs-6">Content 50% width auto height</div>
        <div class="col-xs-6">Hello World</div>
    </div>
    <div>
        <div class="col-xs-9">Content 70% width auto height</div>
        <div class="col-xs-3">Merry Halloween</div>
    </div>
</div>

CSS:

div.tablefull {
    display: table;
    table-layout: fixed;
    width: 100%;
    height: 100%;
}

div.tablefull>div.tableheader, div.tablefull>div.tableheader>div{
    height: 0%;
}

div.tablefull>div {
    display: table-row;
}

div.tablefull>div>div {
    display: table-cell;
    height: 100%;
    padding: 0;
}

Cẩn thận với các công cụ khai thác CSS, đôi khi chúng thay đổi 0%;thành 0;hoàn toàn khác nhau. Nếu điều đó xảy ra, bạn có thể sử dụng 1%;thay thế.
Guillaume F.

1

thử

<div class="container">
    <div class="row">
        <div class="col-md-12">header section</div>

    </div>
     <div class="row fill">
        <div class="col-md-4">Navigation</div>
        <div class="col-md-8">Content</div>

    </div>
</div>

css cho lớp .fill bên dưới

 .fill{
    width:100%;
    height:100%;
    min-height:100%;
    padding:10px;
    color:#efefef;
    background: blue;
}
.col-md-12
{
    background: red;

}

.col-md-4
{
    background: yellow;
    height:100%;
    min-height:100%;

}
.col-md-8
{
    background: green;
    height:100%;
    min-height:100%;

}

Để tham khảo của bạn chỉ cần nhìn vào fiddle.


Cảm ơn câu trả lời của bạn, nhưng tôi sử dụng twitter bootstrap 3 chứ không phải 2. Xin vui lòng, đọc getbootstrap.com/getting-started/#migration
uladzimir

bootstrap 3, không có span được sử dụng, đổi thành col.
Kooki3

Đồng ý. Chiều cao của các cột sẽ là chiều cao của nội dung trong các cột, nhưng tôi chỉ có thể có một dòng.
uladzimir

Cảm ơn @ Kooki3. Chỉ cần thay đổi spanđể col-md-và cho phép xem những gì sẽ xảy ra<div class="container"> <div class="row"> <div class="col-md-12">header section</div> </div> <div class="row"> <div class="col-md-4">Navigation</div> <div class="col-md-8">Content</div> </div> </div>
Krishna Rani Sahoo

không hoạt động. Bạn có đọc bình luận của tôi không? jsfiddle.net/YQUQd/1/embedded/result
uladzimir

1

thử cái này

 <div class="container">
     <!-- Header-->         
  </div>
</div>
 <div class="row-fluid">
     <div class="span3 well">
         <ul class="nav nav-list">
             <li class="nav-header">Our Services</li>
                <!-- Navigation  -->
             <li class="active"><a href="#">Overview</a></li>
             <li><a href="#">Android Applications</a></li>
             <li class="divider"></li>
         </ul>
     </div>
     <div class="span7 offset1">
      <!-- Content -->         
     </div>
 </div>

Truy cập http://www.sitepoint.com/building-responsive-websites-USE-twitter-bootstrap/

Cảm ơn Syed


2
Cảm ơn, bạn có thể thay đổi ví dụ của bạn cho bootstrap 3.0 không?
uladzimir

-1

Nếu có sẽ không có nội dung sau hàng (toàn bộ chiều cao màn hình được thực hiện), các trick với việc sử dụng position: fixed; height: 100%cho .col:beforecác yếu tố có thể làm việc tốt:

header {
  background: green;
  height: 50px;
}
.col-xs-3 {
  background: pink;
}
.col-xs-3:before {
  background: pink;
  content: ' ';
  height: 100%;
  margin-left: -15px; /* compensates column's padding */
  position: fixed;
  width: inherit; /* bootstrap column's width */
  z-index: -1; /* puts behind content */
}
.col-xs-9 {
  background: yellow;
}
.col-xs-9:before {
  background: yellow;
  content: ' ';
  height: 100%;
  margin-left: -15px; /* compensates column's padding */
  position: fixed;
  width: inherit; /* bootstrap column's width */
  z-index: -1; /* puts behind content */
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<header>Header</header>
<div class="container-fluid">
    <div class="row">
        <div class="col-xs-3">Navigation</div>
        <div class="col-xs-9">Content</div>
    </div>
</div>


-2

Điều này đã không được đề cập ở đây với sự bù đắp.

Bạn có thể sử dụng tuyệt đối để định vị cho thanh bên trái.

CSS

.sidebar-fixed{
  width: 16.66666667%;
  height: 100%;
}

HTML

<div class="row">
  <div class="sidebar-fixed">
    Side Bar
  </div>
  <div class="col-md-10 col-md-offset-2">
    CONTENT
  </div>
</div>

-3

Thử cái này

<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation">Nav     Content</div>
<div class="col-xs-12 col-sm-9">Content goes here</div>
</div>

Cái này sử dụng Bootstrap 3 nên không cần thêm CSS, v.v ...


xin vui lòng, cung cấp fiddle
uladzimir

Đây là một mẫu cho thấy một cái gì đó như thế này từ trang web Bootstrap: getbootstrap.com/examples/offcanvas
Dan Esparza

-3

Bạn đã thấy afix của bootstrap chưa trong phần của JAvascript chưa ???

Tôi nghĩ rằng nó sẽ là anh chàng giải pháp tốt nhất và dễ dàng nhất.

Có một cái nhìn ở đó: http://getbootstrap.com/javascript/#affix


Bạn có thể vui lòng chia sẻ ví dụ, làm thế nào tôi có thể tạo hai cột với afix?
uladzimir

Nhân tiện .... bạn đã thử với chiều cao tối thiểu ??? Có lẽ nó hữu ích, phải không? @Baxxabit
Despertaweb

-3

Sau khi thử nghiệm với mã được cung cấp ở đây: Hướng dẫn Bootstrap

Đây là một cách khác để sử dụng Bootstrap mới nhất v3.0.2 :

Đánh dấu:

<div id="headcontainer" class="container">
           <p>Your Header</p>    
</div>
<div id="maincontainer" class="container">
      <div class="row">
         <div class="col-xs-4"> 
            <p>Your Navigation</p> 
         </div>
         <div class="col-xs-8"> 
            <p>Your Content</p> 
         </div>
      </div>
</div>

CSS bổ sung:

#maincontainer, #headcontainer {
width: 100%;
}

#headcontainer {
background-color:#CCCC99; 
height: 150px
}

#maincontainer .row .col-xs-4{
background-color:gray; 
height:1000px
}

#maincontainer .row .col-xs-8{
background-color:green;
height: 1000px
}

Mẫu JSFiddle

Hy vọng điều này sẽ giúp bất cứ ai quan tâm.


jsfiddle.net/zHRZr/7 câu hỏi ban đầu về chiều cao động, nhưng dù sao cũng cảm ơn
uladzimir
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.