国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

全面解析bootstrap格子布局

2019-11-20 09:58:01
字體:
來源:轉載
供稿:網友

一、源碼文件

_grid.scss:格子系統類文件
Mixins/_grid.scss:支持格子系統實現的mixin集合
Mixins/_grid-framework.scss:格子系統實現的核心mixin

二、支持的功能

1. 實現按百分比布局

2. 實現格子的定位

3. 實現格子的嵌套

4. 如果只使用格子系統,可以只編碼bootstrap-grid.scss文件

三、實現原理

1、 按百分比布局,主要思考的問題如何在不同的設備上平均分配的寬度,bootstrap只是用了簡單的百分比,在任何尺寸設備下都是使用相同的百分比。

2、 格子的定位:解決了格子向左移動、向右移動、以格子向右偏移幾個單元格的能力

3、 格子的嵌套:實現了格子內容再嵌套格子布局系統。

四、源碼分析

1、_grid.scss:格子系統生成的主類,引用了mixins/_grid.scss、mixins/_grid-framework.scss、variables.scss類中的變量及相關方法。
首先:定義兩個容器類

     a) container:格子容器,根據不同設備定義不同的寬度,不會充滿全屏;

     b) continaer-fluid:格子容器,在任何支持下都會充滿全屏
container和container-fluid都使用了make-container(mixins/_grid.scss),make-container只實現了居中、左右內邊距、清除浮動等控制;其中container根據不同設備定義了容器的寬度

然后:定義row(行):
調用了make-row(mixins/_grids.scss)實現清除浮動、左右外邊距的定義,在4.0中,如果開啟了flex布局的支持,就設定容器的display為flex和flex-wrap為wrap,并去掉清浮動。

再則:直接調用make-grid-columns(mixins/_grid-framework.scss)實現單元格的建立

    a) make-grid-columns:單元格生成的入口方法,傳遞所能支持的格子總數、外邊距寬度、所支持的幾種尺寸

    b) make-grid-columns引用了mixins/_grid.scss中的許多方法:

    a) 用到了map的map-key函數,用于遍歷一個map的key集合;

用到了@extend函數,用于繼承,實現所有col左浮動,以及所有col都相對定位。

@for $i from 1 through $columns {   .col-#{$breakpoint}-#{$i} {    @extend %grid-column; //extend是繼承,將此合并為一個樣式集合    //.col-xs-1,col-xs-2{ positiona:relative; .... }   }  }

a) Make-col-span函數,實現col寬度的計算

b) 調用mixins/_grid.scss中的make-col-modifier方法,實現push、pull、offset的樣式的生成:

i. Push:向右推幾個格子,用的是left

ii. Pull:向左推幾個格子,用的是right

iii. Offset:利用的是margin-left實現,向右推向個百分比。

@mixin make-col-offset($size, $columns: $grid-columns) { margin-left: percentage($size / $columns);}@mixin make-col-push($size, $columns: $grid-columns) { left: if($size > 0, percentage($size / $columns), auto);}@mixin make-col-pull($size, $columns: $grid-columns) { right: if($size > 0, percentage($size / $columns), auto);}@mixin make-col-modifier($type, $size, $columns) { // Work around the lack of dynamic mixin @include support  @if $type == push {  @include make-col-push($size, $columns); } @else if $type == pull {  @include make-col-pull($size, $columns); } @else if $type == offset {  @include make-col-offset($size, $columns); }}

以上就是本文的全部內容,希望對大家學習javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 星座| 乳源| 弥渡县| 许昌市| 甘洛县| 昌宁县| 绍兴县| 澄迈县| 嫩江县| 永城市| 顺平县| 定襄县| 鄂伦春自治旗| 海门市| 三河市| 五台县| 汽车| 来宾市| 信阳市| 南开区| 亚东县| 平阳县| 德钦县| 饶阳县| 清河县| 铁岭县| 南木林县| 马山县| 阿尔山市| 莎车县| 平定县| 厦门市| 英山县| 湖北省| 山西省| 永寿县| 交城县| 巢湖市| 原阳县| 广元市| 云林县|