全面解析bootstrap格子布局
一、源碼文件
_grid.scss:格子系統(tǒng)類(lèi)文件
Mixins/_grid.scss:支持格子系統(tǒng)實(shí)現(xiàn)的mixin集合
Mixins/_grid-framework.scss:格子系統(tǒng)實(shí)現(xiàn)的核心mixin
二、支持的功能
1. 實(shí)現(xiàn)按百分比布局
2. 實(shí)現(xiàn)格子的定位
3. 實(shí)現(xiàn)格子的嵌套
4. 如果只使用格子系統(tǒng),可以只編碼bootstrap-grid.scss文件
三、實(shí)現(xiàn)原理
1、 按百分比布局,主要思考的問(wèn)題如何在不同的設(shè)備上平均分配的寬度,bootstrap只是用了簡(jiǎn)單的百分比,在任何尺寸設(shè)備下都是使用相同的百分比。
2、 格子的定位:解決了格子向左移動(dòng)、向右移動(dòng)、以格子向右偏移幾個(gè)單元格的能力
3、 格子的嵌套:實(shí)現(xiàn)了格子內(nèi)容再嵌套格子布局系統(tǒng)。
四、源碼分析
1、_grid.scss:格子系統(tǒng)生成的主類(lèi),引用了mixins/_grid.scss、mixins/_grid-framework.scss、variables.scss類(lèi)中的變量及相關(guān)方法。
首先:定義兩個(gè)容器類(lèi)
a) container:格子容器,根據(jù)不同設(shè)備定義不同的寬度,不會(huì)充滿全屏;
b) continaer-fluid:格子容器,在任何支持下都會(huì)充滿全屏
container和container-fluid都使用了make-container(mixins/_grid.scss),make-container只實(shí)現(xiàn)了居中、左右內(nèi)邊距、清除浮動(dòng)等控制;其中container根據(jù)不同設(shè)備定義了容器的寬度
然后:定義row(行):
調(diào)用了make-row(mixins/_grids.scss)實(shí)現(xiàn)清除浮動(dòng)、左右外邊距的定義,在4.0中,如果開(kāi)啟了flex布局的支持,就設(shè)定容器的display為flex和flex-wrap為wrap,并去掉清浮動(dòng)。
再則:直接調(diào)用make-grid-columns(mixins/_grid-framework.scss)實(shí)現(xiàn)單元格的建立
a) make-grid-columns:?jiǎn)卧裆傻娜肟诜椒?,傳遞所能支持的格子總數(shù)、外邊距寬度、所支持的幾種尺寸
b) make-grid-columns引用了mixins/_grid.scss中的許多方法:
a) 用到了map的map-key函數(shù),用于遍歷一個(gè)map的key集合;
用到了@extend函數(shù),用于繼承,實(shí)現(xiàn)所有col左浮動(dòng),以及所有col都相對(duì)定位。
@for $i from 1 through $columns { .col-#{$breakpoint}-#{$i} { @extend %grid-column; //extend是繼承,將此合并為一個(gè)樣式集合 //.col-xs-1,col-xs-2{ positiona:relative; .... } } }
a) Make-col-span函數(shù),實(shí)現(xiàn)col寬度的計(jì)算
b) 調(diào)用mixins/_grid.scss中的make-col-modifier方法,實(shí)現(xiàn)push、pull、offset的樣式的生成:
i. Push:向右推幾個(gè)格子,用的是left
ii. Pull:向左推幾個(gè)格子,用的是right
iii. Offset:利用的是margin-left實(shí)現(xiàn),向右推向個(gè)百分比。
@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); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。
- BootStrap框架個(gè)人總結(jié)(bootstrap框架、導(dǎo)航條、下拉菜單、輪播廣告carousel、柵格系統(tǒng)布局、標(biāo)簽頁(yè)tabs、模態(tài)框、菜單定位)
- bootstrap學(xué)習(xí)使用(導(dǎo)航條、下拉菜單、輪播、柵格布局等)
- 精彩的Bootstrap案例分享 重點(diǎn)在注釋!(選項(xiàng)卡、柵格布局)
- Bootstrap布局之柵格系統(tǒng)詳解
- Bootstrap每天必學(xué)之柵格系統(tǒng)(布局)
- 談一談bootstrap響應(yīng)式布局
- Bootstrap布局方式詳解
- JS組件Bootstrap Table布局詳解
- Bootstrap三種表單布局的使用方法
- Bootstrap 布局組件(全)
- 全面解析Bootstrap布局組件應(yīng)用
- 詳解BootStrap中Affix控件的使用及保持布局的美觀的方法
- Bootstrap實(shí)現(xiàn)的經(jīng)典柵格布局效果實(shí)例【附demo源碼】
相關(guān)文章
KnockoutJS 3.X API 第四章之事件event綁定
event綁定即為事件綁定,即當(dāng)觸發(fā)相關(guān)DOM事件的時(shí)候回調(diào)函數(shù),這篇文章主要介紹了KnockoutJS 3.X API 第四章之事件event綁定的相關(guān)知識(shí),感興趣的朋友一起看看吧2016-10-10純javascript實(shí)現(xiàn)四方向文本無(wú)縫滾動(dòng)效果
本文主要給大家分享了使用純javascript實(shí)現(xiàn)的可控制的四方向文本無(wú)縫滾動(dòng)的代碼,效果非常不錯(cuò),有需要的小伙伴可以參考下。2015-06-06基于 D3.js 繪制動(dòng)態(tài)進(jìn)度條的實(shí)例詳解
D3是一個(gè)被數(shù)據(jù)驅(qū)動(dòng)的文檔。這篇文章主要介紹了基于 D3.js 繪制動(dòng)態(tài)進(jìn)度條的方法,需要的朋友可以參考下2018-02-02