BootStrap--整體框架--CSS12柵格系統

1.整體架構

這裏寫圖片描述

BootStrap框架公共六個部分:(css組件和js插件是其表現形式,其餘的是基礎支撐平臺)
表現形式
CSS組件
JS插件
基礎支撐平臺
CSS12柵格系統
基礎佈局組件
jQuery
響應式設計

1.1 CSS12柵格系統

12柵格系統是BootStrap的核心功能,也是響應式設計核心理念的一個實現方式。

1.1.1 實現原理

柵格佈局原理:定義容器大小,平分12分,在調整內外邊距,最後結合媒體查詢,製作出強大響應式的柵格系統。

這裏寫圖片描述

1.最外層的邊框,伴隨着響應式思想,區分了四種類型瀏覽器,像素分界點768px、992px、1200px
2.第二層的邊框,即.container樣式容器,針對四種瀏覽器寬度不一樣,值是自動、750px、970px、1170px

//源碼
    .container {
      padding-right: 15px;
      padding-left: 15px;
      margin-right: auto;
      margin-left: auto;
    }
    @media (min-width: 768px) {
      .container {
        width: 750px;
      }
    }
    @media (min-width: 992px) {
      .container {
        width: 970px;
      }
    }
    @media (min-width: 1200px) {
      .container {
        width: 1170px;
      }
    }

3.1號橫條,左內邊距和右內邊距是15px,是12個col-lg-1,沒有row,則會

//源碼
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
      position: relative;
      min-height: 1px;
      padding-right: 15px;
      padding-left: 15px;
    }

這裏寫圖片描述

 <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- Bootstrap從3.0版本開始全面支持移動平臺,貫徹移動先行宗旨 -->
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Bootstrap 101 Template</title>

        <!-- Bootstrap -->
        <link href="bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">

      </head>
      <body>
        <div class="container" style="border:1px solid black">
                <div class="col-lg-1" style="border:1px solid black">col-lg-1</div>
                <div class="col-lg-1" style="border:1px solid black">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1">col-lg-1</div>
                <div class="col-lg-1" style="border:1px solid black">col-lg-1</div>
        </div>
        <!-- bootstrap是基於jQuery-->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script src="bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
      </body>
    </html>

4.2號橫條,也就是row容器的定義,margin-left和margin-right都是-15px,組合row和列後,形成3號橫條的效果,也就是左右寬度用滿的效果。


//源碼
.row {
margin-right: -15px;
margin-left: -15px;
}

有row,則會沒邊距

這裏寫圖片描述

 <!DOCTYPE html>
   <html lang="en">
     <head>
       <meta charset="utf-8">
       <meta http-equiv="X-UA-Compatible" content="IE=edge">
       <!-- Bootstrap從3.0版本開始全面支持移動平臺,貫徹移動先行宗旨 -->
       <meta name="viewport" content="width=device-width, initial-scale=1">

       <title>Bootstrap 101 Template</title>

       <!-- Bootstrap -->
       <link href="bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">

     </head>
     <body>
       <div class="container" style="border:1px solid black">
           <div class="row">
               <div class="col-lg-1" style="border:1px solid black">col-lg-1</div>
               <div class="col-lg-1" style="border:1px solid black">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1">col-lg-1</div>
               <div class="col-lg-1" style="border:1px solid black">col-lg-1</div>
           </div>
       </div>
       <!-- bootstrap是基於jQuery-->
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
       <script src="bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
     </body>
   </html>
1.1.2 基本用法

1.列組合

<div class="container" style="border:1px solid black">
    <div class="row">
        <div class="col-lg-8" style="border:1px solid black">col-lg-8</div>
        <div class="col-lg-4" style="border:1px solid black">col-lg-4</div>
    </div>
    <div class="row">
        <div class="col-lg-6" style="border:1px solid black">col-lg-6</div>
        <div class="col-lg-6" style="border:1px solid black">col-lg-6</div>
    </div>
</div>

實現很簡單,就是涉及了兩個CSS特性:左浮動和寬度百分比

//源碼
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
}

2.列偏移

我們不想讓相鄰的列挨在一起,則利用柵格系統的列偏移.col-xs(sm,md,lg)-offset-* 功能來實現,不必再定義margin

<div class="row">
    <div class="col-lg-8 col-lg-offset-2" style="border:1px solid black">col-lg-8 col-lg-offset-2</div>
    <div class="col-lg-2 col-lg-offset-2" style="border:1px solid black">col-lg-2 col-lg-offset-2</div>
</div>
//源碼
.col-lg-offset-12 {
  margin-left: 100%;
}
.col-lg-offset-11 {
  margin-left: 91.66666667%;
}
.col-lg-offset-10 {
  margin-left: 83.33333333%;
}
.col-lg-offset-9 {
  margin-left: 75%;
}
.col-lg-offset-8 {
  margin-left: 66.66666667%;
}
.col-lg-offset-7 {
  margin-left: 58.33333333%;
}
.col-lg-offset-6 {
  margin-left: 50%;
}
.col-lg-offset-5 {
  margin-left: 41.66666667%;
}
.col-lg-offset-4 {
  margin-left: 33.33333333%;
}
.col-lg-offset-3 {
  margin-left: 25%;
}
.col-lg-offset-2 {
  margin-left: 16.66666667%;
}
.col-lg-offset-1 {
  margin-left: 8.33333333%;
}
.col-lg-offset-0 {
  margin-left: 0;
}

3.列嵌套

柵格系統也支持列嵌套,也就是一個列中可以在聲明一個或者多個行.內部嵌套的row寬度是100%,就是當前外部列的寬度

<div class="row">
    <div class="col-lg-8" style="border:1px solid black">col-lg-8</div>
    <div class="col-lg-4" style="border:1px solid black">
        <div class="row">
            <div class="col-lg-6">col-lg-6</div>
            <div class="col-lg-6">col-lg-6</div>
        </div>
    </div>
</div>

4.列排序

列排序就是改變列的方向,也就是改變左右浮動,並且設置浮動的距離。可以通過.col-xs(sm,md,lg)-pull(push)-*
所有列設置的都是左浮動,通過設置left和right來實現定位顯示。push則設置left,pull則設置right

其實只是利用了float,left,right三個屬性就實現了這種效果
這裏寫圖片描述

//源碼
.col-lg-pull-12 {
  right: 100%;
}
.col-lg-pull-11 {
  right: 91.66666667%;
}
.col-lg-pull-10 {
  right: 83.33333333%;
}
.col-lg-pull-9 {
  right: 75%;
}
.col-lg-pull-8 {
  right: 66.66666667%;
}
.col-lg-pull-7 {
  right: 58.33333333%;
}
.col-lg-pull-6 {
  right: 50%;
}
.col-lg-pull-5 {
  right: 41.66666667%;
}
.col-lg-pull-4 {
  right: 33.33333333%;
}
.col-lg-pull-3 {
  right: 25%;
}
.col-lg-pull-2 {
  right: 16.66666667%;
}
.col-lg-pull-1 {
  right: 8.33333333%;
}
.col-lg-pull-0 {
  right: auto;
}
.col-lg-push-12 {
  left: 100%;
}
.col-lg-push-11 {
  left: 91.66666667%;
}
.col-lg-push-10 {
  left: 83.33333333%;
}
.col-lg-push-9 {
  left: 75%;
}
.col-lg-push-8 {
  left: 66.66666667%;
}
.col-lg-push-7 {
  left: 58.33333333%;
}
.col-lg-push-6 {
  left: 50%;
}
.col-lg-push-5 {
  left: 41.66666667%;
}
.col-lg-push-4 {
  left: 33.33333333%;
}
.col-lg-push-3 {
  left: 25%;
}
.col-lg-push-2 {
  left: 16.66666667%;
}
.col-lg-push-1 {
  left: 8.33333333%;
}
.col-lg-push-0 {
  left: auto;
}
1.1.3 響應式柵格

已知col-xs-* col-sm-* col-md-* col-lg-*

1.跨設備組合定義
一種樣式(比如col-md-9)在其定義的尺寸範圍以外是不起作用的,比如,在小型或者大型屏幕上,所有帶有md的樣式都不會生效。我們可以在一個元素上應用不同的樣式,以適配不同尺寸的屏幕。

<div class="container" style="border:1px solid black">
    <div class="row">
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div1 col-xs-6 col-sm-3 qwerwrgwefhsdgfsdfg</div>
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div2 col-xs-6 col-sm-3</div>
        <div class="clearfix visible-xs"></div>
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div3 col-xs-6 col-sm-3</div>
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div4 col-xs-6 col-sm-3</div>
    </div>
</div>

這裏寫圖片描述

如圖,由於div3換行時,但div1過高,則div3就右邊緊挨着顯示了。
所以需要利用clearfix樣式清除浮動,但前提是在超小型屏幕上才顯示(用visible-xs控制)

<div class="container" style="border:1px solid black">
    <div class="row">
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div1 col-xs-6 col-sm-3 qwerwrgwefhsdgfsdfg</div>
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div2 col-xs-6 col-sm-3</div>
        <div class="clearfix visible-xs"></div>
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div3 col-xs-6 col-sm-3</div>
        <div class="col-xs-6 col-sm-3" style="border:1px solid black"> div4 col-xs-6 col-sm-3</div>
    </div>
</div>

這裏寫圖片描述

//源代碼
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after {
  display: table;
  content: " ";
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after {
  clear: both;
}
//源代碼
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章