檢驗(yàn)前端的一個(gè)基本功就是考查他的布局 。很久之前圣杯布局風(fēng)靡一時(shí),這里就由圣杯布局開始,到最流行的Bootstrap柵格布局 。
圣杯布局先來看看圣杯布局 , 這是一種三列布局,兩邊定寬,中間自適應(yīng)的布局,案例如下
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><meta http-equiv="window-target" content="_top"><title>布局案例1</title><style type="text/css">* {box-sizing: border-box;}html, body{width: 100%;height: 100%;margin: 0;}.container{width:100%;}.container:after{display: table;content:".";clear:both;}.container .cl{float:left;border: 1px solid red;height: 200px;}.main{width:100%;padding 0 290px 0 320px;background-color: blue;}.sub{width: 320px;margin-left:-100%;background-color: white;}.extra{width: 290px;margin-left:-290px;background-color: yellow;}</style></head><body><div class="container"><div class="cl main"></div><div class="cl sub"></div><div class="cl extra"></div></div></body>

文章插圖
圣杯布局的原理就是當(dāng)子元素處于浮動(dòng)狀態(tài)時(shí),設(shè)置負(fù)margin,子元素會(huì)疊蓋到兄弟元素之上 。
那么能否用現(xiàn)在想要將其中藍(lán)色區(qū)域再次劃分成三個(gè)區(qū)域,相信有很多種辦法 。但能否通過嵌套的方式實(shí)現(xiàn)呢?我們可以試一下:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><meta http-equiv="window-target" content="_top"><title>布局案例2</title><style type="text/css">* {box-sizing: border-box;}html, body{width: 100%;height: 100%;margin: 0;}.container{width:100%;}.container:after{display: table;content:".";clear:both;}.container .cl{float:left;border: 1px solid red;height: 200px;}.main{width:100%;padding: 0 290px 0 320px;background-color: blue;}.sub{width: 320px;margin-left:-100%;background-color: white;}.extra{width: 290px;margin-left:-290px;background-color: yellow;}</style></head><body><div class="container"><div class="cl main"><div class="container"><div class="cl main"></div><div class="cl sub"></div><div class="cl extra"></div></div></div><div class="cl sub"></div><div class="cl extra"></div></div></body></html>
文章插圖
可以看到藍(lán)色區(qū)域已被劃分成三個(gè)區(qū)域 。這個(gè)過程是不是很像bootstrap中的柵格嵌套?誠(chéng)然,利用圣杯布局我們可以實(shí)現(xiàn)一套簡(jiǎn)單的柵格系統(tǒng),但柵格布局就是簡(jiǎn)單地嵌套出來的嗎,很明顯答案是否定的 。柵格設(shè)計(jì)系統(tǒng)(又稱網(wǎng)格設(shè)計(jì)系統(tǒng)、標(biāo)準(zhǔn)尺寸系統(tǒng)、程序版面設(shè)計(jì)、瑞士平面設(shè)計(jì)風(fēng)格、國(guó)際主義平面設(shè)計(jì)風(fēng)格),是一種平面設(shè)計(jì)的方法與風(fēng)格 。運(yùn)用固定的格子設(shè)計(jì)版面布局,其風(fēng)格工整簡(jiǎn)潔 , 已成為今日出版物設(shè)計(jì)的主流風(fēng)格之一 。那么如何來設(shè)計(jì)柵格系統(tǒng)呢?我們往下看
柵格系統(tǒng)的原理

文章插圖
假設(shè):Flowline的寬度為W , column的寬度為c,Gutter的寬度為g , Margin的寬度為m,柵格列數(shù)為N
W = c*N + g*(N-1) + 2m;g的寬度通常為m的兩倍,所以:
W = (c+g) * N;把c+g記為C,得:
W = C * N;
大部分的柵格系統(tǒng)都是此公式的變體 。
Bootstrap的柵格系統(tǒng)下面我們將一起來看一下常見的柵格布局的設(shè)計(jì)和bootstrap中的設(shè)計(jì)實(shí)現(xiàn) 。BootStrap中合理的使用柵格布局,必須將列放入row中,而row必須放入container中 。container類在布局中主要有兩個(gè)作用:
- 在不同的寬度區(qū)間內(nèi)(響應(yīng)式斷點(diǎn))提供寬度限制 。當(dāng)寬度變化時(shí) , 采用不同的寬度 。
- 提供一個(gè)padding,阻止內(nèi)部?jī)?nèi)容觸碰到瀏覽器邊界 。

文章插圖
Row是column的容器,每個(gè)row中的column之和必須為12,不過我們可以通過嵌套的方式擴(kuò)展 。Row的左右margin都為-15px,用來抵消container中的padding,如下圖藍(lán)色部分所示:

文章插圖
row的這種設(shè)計(jì)主要為了方便嵌套 , 后文中會(huì)提到 。
Colomn是柵格系統(tǒng)的主角 , 每個(gè)column左右padding都為15px,上文中row的負(fù)margin抵消了container的padding , 所以為每個(gè)column設(shè)置padding就是為了防止內(nèi)容直接觸碰邊界,同時(shí)不同的column之間擁有30px的卡槽(Gutter) 。如下圖黃色部分所示:

文章插圖
現(xiàn)在想想上文中提到的公式:W = C * N;
上文提到row的負(fù)margin設(shè)計(jì)主要為了嵌套,如果要在column中嵌套column首先要把被嵌套的column放到row中,把row放到作為容器的column中,而不需要在放置一個(gè)container 。如下圖中藍(lán)色所示,是放入column中的row的負(fù)margin區(qū)域 。

文章插圖
現(xiàn)在將被嵌套的column放入row中,如下圖所示,上層column便是起到了container的作用 。

文章插圖
【關(guān)于圣杯布局詳解 css圣杯布局原理】如此我們便看到了Bootstrap柵格系統(tǒng)的精妙所在 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 關(guān)于離婚協(xié)議書怎么寫 離婚協(xié)議書怎么寫
- 二十首關(guān)于冬至的詩(shī)詞 冬至的古詩(shī)
- 翡翠手鐲保養(yǎng)小知識(shí) 關(guān)于翡翠手鐲知識(shí)
- 關(guān)于勞動(dòng)節(jié)的由來 勞動(dòng)節(jié)的由來
- DataGrip設(shè)置布局后調(diào)整內(nèi)容的步驟
- 如何將CAD布局的背景顏色改為黑色
- 關(guān)于ecco這個(gè)品牌你了解多少 ECCO什么牌子
- 關(guān)于助聽器價(jià)格的說明 一個(gè)助聽器大約要多少錢
- 元旦放假安排 元旦
- 8k紙尺寸是多少? 8K的紙是多大的紙
