Ngu ngơ học làm web (37) - Grid system trong Bootstrap

tiếp theo của: Ngu ngơ học làm web (36) - Làm quen với Bootstrap
-------

Phần 37.       Grid system trong Bootstrap


Đây là clip số 10: grid system – hệ thống lưới



Dưới đây là hình ảnh về hệ thống lưới của Bootstrap 3. (https://getbootstrap.com/docs/3.3/css/)



Dưới đây là hình ảnh về hệ thống lưới của Bootstrap 4. (https://v4-alpha.getbootstrap.com/layout/grid/)


Cấu trúc chung khi dùng Bootstrap: các cột (column) sẽ được đặt vào các hàng (row), sau đó các hàng sẽ được đặt trong các thùng chứa (container).

<div class="container">       
            <div class="row">
                        <div class="col-md-6">
                                    <p>Left</p>
                        </div>
                        <div class="col-md-6">
                                    <p>Right</p>
                        </div>
            </div>
</div>

Class=“container” giúp căn giữa toàn bộ nội dung.

Đoạn mã CSS để hiển thị grid-system:

.show-grid [class^="col-"] {
    padding-top: 10px;
    padding-bottom: 10px;
    background: #eee;
    border: 1px solid #ddd;
  }

Ý nghĩa của “.show-grid [class*="col-"]”: chọn các thẻ con trong .show-grid có thuộc tính class có chứa chuỗi "col-".

Lưu lại đoạn mã về grid-system để tham khảo:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
  <title>Bootstrap 101 Template</title>
  <style>
  .show-grid [class^="col-"] {
    padding-top: 10px;
    padding-bottom: 10px;
    background: #eee;
    border: 1px solid #ddd;
  }
</style>

<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="container">
      <div class="row show-grid">
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
        <div class="col-md-1"><p>1</p></div>
      </div>
      <div class="row show-grid">
        <div class="col-md-6"><p>left</p></div>
        <div class="col-md-6"><p>right</p></div>
      </div>
      <div class="row show-grid">
        <div class="col-md-3"><p>left</p></div>
        <div class="col-md-7"><p>center</p></div>
        <div class="col-md-2"><p>right</p></div>
      </div>
    </div>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
  </html>

Hệ thống grid-system đã có sẵn đặc tính responsive.

Đây là clip số 11: Mobile First


Ý tưởng của Mobile First là thiết kế cho màn hình có kích thước nhỏ trước và chuyển lên màn hình có kích thước lớn hơn.

Khi thực thi Bootstrap, ứng với mỗi kích thước màn hình, class tương ứng với màn hình đó sẽ được ưu tiên lựa chọn.

Bootstrap3




<768px
>=768px - < 992px
>=992px - < 1200px
>=1200px

.col-xs-
.col-sm-
.col-md-
.col-lg-

Bootstrap4




<544px
>=544px - < 768px
>=768px - < 992px
>= 992 px - < 1200px
>= 1200px
.col-xs-
.col-sm-
.col-md-
.col-lg-
.col-xl-

Ví dụ về mobile first:

<div class="container">
      <div class="row show-grid">
        <div class="col-xs-6 col-sm-9 col-md-3 col-lg-12"><p>left</p></div>
        <div class="col-xs-6 col-sm-3 col-md-9 col-lg-12"><p>right</p></div>
      </div>
  </div>

Đây là clip số 12: thay đổi vị trí của các cột


Responsive column reset: tác dụng giống như tạo row mới cho các cột dữ liệu, <div class="clearfix"></div>.

Ví dụ,

<div class="container">
      <div class="row show-grid">
        <div class="col-md-6"><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium hic aperiam veritatis similique suscipit porro, eaque, minus sed quaerat corporis dolore impedit dolorem facere incidunt vitae exercitationem provident? Ad inventore id totam repellendus possimus, rerum temporibus harum debitis nam magni.</p></div>
        <div class="col-md-6"><p>right 1</p></div>
        <div class="clearfix"></div>
        <div class="col-md-6"><p>left 2</p></div>
        <div class="col-md-6"><p>right 2</p></div>
      </div>
    </div>

Offsetting columns: thiết lập vị trí bắt đầu của các cột dữ liệu.

Ví dụ,

<div class="container">
      <div class="row show-grid">
        <div class="col-md-4 col-md-offset-2"><p>Content</p></div>
      </div>
    </div>

Nesting columns: lồng cột trong cột,

<div class="container">
      <div class="row show-grid">
        <div class="col-md-6">
          <div class="row show-grid">
              <div class="col-md-6">
                <p>child content 1</p>
              </div>
              <div class="col-md-6">
                <p>child content 2</p>
              </div>
          </div>
        </div>
        <div class="col-md-6">
          <p>parent content</p>
        </div>
      </div>
    </div>

Column ordering: hoán chuyển vị trí của các cột,

<div class="container">
      <div class="row show-grid">
        <div class="col-md-6 col-md-push-6">
          <p>Left</p>
        </div>
        <div class="col-md-6 col-md-pull-6">
          <p>Right</p>
        </div>
      </div>
    </div>
-----------
Cập nhật [10/10/2017][12/10/2016]
-----------