三種布局(盒模型,flex,grid)

一也搓、布局方式

1和媳、盒模型

盒模型由外而內(nèi)包括:邊距(margin)、邊框(border)狠鸳、填充(padding)揣苏、內(nèi)容(content)。

盒模型整個(gè)在頁(yè)面中所占的地方是margin + border + padding + content件舵。

盒模型有標(biāo)準(zhǔn)盒模型和IE的盒模型——通過(guò)css3屬性box-sizing設(shè)置

標(biāo)準(zhǔn)盒模型(W3C)content-box width=content;? ? ? ? ? ? ? 默認(rèn)模式

IE盒模型(IE)border-box width=content+padding+border

目前使用此屬性需要前綴如下:

-webkit-box-sizing: content-box;

-moz-box-sizing: content-box;

自己的理解:

.box {

/* box-sizing: border-box; */

float: left;

margin: 20px;

padding: 30px;

border: 10px solid rebeccapurple;

width: 300px;

height: 200px;

}

<div class="box">

這個(gè)是標(biāo)準(zhǔn)模型test 300+20+60? 380*280

這個(gè)是怪異模型test 300? 300*200

</div>

整個(gè)盒模型所占的位置就是content+border+padding+margin

而盒子的寬度對(duì)于標(biāo)準(zhǔn)來(lái)說(shuō),width=content;對(duì)于IE盒模型來(lái)說(shuō),就是width=content+border+padding;

2卸察、flex布局

任何一個(gè)容器都可以為flex布局,行內(nèi)元素也可以使用flex布局

display: flex? ? ? ? ? ? ? ? display: inline-flex

webkit內(nèi)核瀏覽器,必須加上-webkit前綴? display:-webkit-flex;? ? float、clear和vertical-align屬性將失效铅祸。

flex彈性布局

display: flex | inline-flex

寬高不確定的情況下能夠指定對(duì)齊方式

display 屬性用來(lái)將父元素定義為 Flex 布局的容器坑质,設(shè)置 display 值為display: flex容器對(duì)外表現(xiàn)為塊級(jí)元素;display: inline-flex容器對(duì)外表現(xiàn)為行內(nèi)元素临梗,對(duì)內(nèi)兩者表現(xiàn)是一樣的涡扼。

Flex 布局的容器,我們有以下六個(gè)屬性可以設(shè)置的容器上:

flex-direction

flex-wrap

flex-flow

justify-content

align-items

align-content

flex-direction: row | row-reverse | column | column-reverse;

row(默認(rèn)值):主軸在水平方向盟庞,起點(diǎn)在左側(cè)壳澳,也就是我們常見的從左到右;

row-reverse:主軸在水平方向茫经,起點(diǎn)在右側(cè);

column:主軸在垂直方向萎津,起點(diǎn)在上沿卸伞;

column-reverse: 主軸在垂直方向,起點(diǎn)在下沿锉屈。

如圖1荤傲,圖2

圖1
圖2

flex-wrap: nowrap | wrap | wrap-reverse;

假設(shè)此時(shí)主軸是從左到右的水平方向:

nowrap(默認(rèn)):不換行;不管你有沒(méi)有對(duì)子元素設(shè)置寬度颈渊,都不會(huì)換行遂黍,只會(huì)對(duì)子元素的寬度進(jìn)行壓縮

wrap:換行,第一行在上面俊嗽;會(huì)根據(jù)你設(shè)置的子元素寬度展示雾家,如果超過(guò)會(huì)換行。

wrap-reverse:換行绍豁,第一行在下面芯咧。

如圖3

圖3

flex-flow: flex-direction | flex-wrap;

默認(rèn):? ? ? flex-flow: row nowrap;

justify-content 定義了項(xiàng)目在主軸上的對(duì)齊方式。

.container {

? ? justify-content: flex-start | flex-end | center | space-between | space-around;

}

flex-start(默認(rèn)):與主軸的起點(diǎn)對(duì)齊;

flex-end:與主軸的終點(diǎn)對(duì)齊敬飒;

center:項(xiàng)目居中邪铲;

space-between:兩端對(duì)齊,項(xiàng)目之間的距離都相等无拗;

space-around:每個(gè)項(xiàng)目的兩側(cè)間隔相等带到,所以項(xiàng)目與項(xiàng)目之間的間隔是項(xiàng)目與邊框之間間隔的兩倍。

如圖4

圖4

align-items 定義了項(xiàng)目在交叉軸上如何對(duì)齊英染。

.container {

? ? align-items: flex-start | flex-end | center | baseline | stretch;

}

flex-start:與交叉軸的起點(diǎn)對(duì)齊揽惹;

flex-end:與交叉軸的終點(diǎn)對(duì)齊;

center:居中對(duì)齊税迷;

baseline:項(xiàng)目第一行文字的基線對(duì)齊永丝;

stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或者為 auto,項(xiàng)目將占滿整個(gè)容器的高度

如圖5箭养,圖6慕嚷,圖7

圖5
圖6
圖7

align-content 定義了多根軸線的對(duì)齊方式,若此時(shí)主軸在水平方向毕泌,交叉軸在垂直方向喝检,align-content 就可以理解為多行在垂直方向的對(duì)齊方式。項(xiàng)目排列只有一行時(shí)撼泛,該屬性不起作用挠说。

.container {

? ? align-content: flex-start | flex-end | center | space-between | space-around | stretch;

}

flex-start:與交叉軸的起點(diǎn)對(duì)齊;

flex-end: 與交叉軸的終點(diǎn)對(duì)齊愿题;

center:居中對(duì)齊损俭;

space-between:與交叉軸兩端對(duì)齊,軸線之間的距離相等潘酗;

space-around:每根軸線兩側(cè)的間隔都相等杆兵,所以軸線與軸線之間的間隔是軸線與邊框之間間隔的兩倍;

stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或者為 auto仔夺,項(xiàng)目將占滿整個(gè)容器的高度琐脏。

----------------------------------------

對(duì)項(xiàng)目設(shè)置屬性,可以更靈活地控制 Flex 布局缸兔。以下六種屬性可以設(shè)置在項(xiàng)目上:

order

flex-grow

flex-shrink

flex-basis

flex

align-self

order

order 定義了項(xiàng)目的排列順序日裙,默認(rèn)值為 0,數(shù)值越小惰蜜,排列越靠前昂拂。

給哪個(gè)order設(shè)置了負(fù)值就排在最前面

flex-grow

flex-grow 定義了項(xiàng)目的放大比例,默認(rèn)為 0抛猖,也就是即使存在剩余空間政钟,也不會(huì)放大路克。

如果所有項(xiàng)目的 flex-grow 都為 1,則所有項(xiàng)目平分剩余空間养交;如果其中某個(gè)項(xiàng)目的 flex-grow 為 2精算,其余項(xiàng)目的 flex-grow 為 1,則前者占據(jù)的剩余空間比其他項(xiàng)目多一倍碎连。

flex-shrink

flex-shrink 定義了項(xiàng)目的縮小比例灰羽,默認(rèn)為 1,即當(dāng)空間不足時(shí)鱼辙,項(xiàng)目會(huì)自動(dòng)縮小廉嚼。

如果所有項(xiàng)目的 flex-shrink 都為 1,當(dāng)空間不足時(shí)倒戏,所有項(xiàng)目都將等比縮械≡搿;如果其中一個(gè)項(xiàng)目的 flex-shrink 為 0杜跷,其余都為 1傍念,當(dāng)空間不足時(shí),flex-shrink 為 0 的不縮小葛闷。

負(fù)值對(duì)該屬性無(wú)效憋槐。

flex-basis

flex-basis 定義了在分配多余的空間之前,項(xiàng)目占據(jù)的主軸空間淑趾,默認(rèn)值為 auto阳仔,即項(xiàng)目原來(lái)的大小。瀏覽器會(huì)根據(jù)這個(gè)屬性來(lái)計(jì)算主軸是否有多余的空間扣泊。

flex-basis 的設(shè)置跟 width 或 height 一樣近范,可以是像素,也可以是百分比延蟹。設(shè)置了 flex-basis 之后评矩,它的優(yōu)先級(jí)比 width 或 height 高。

flex

flex 屬性是 flex-grow等孵、flex-shrink、flex-basis 的縮寫蹂空,默認(rèn)值是 0 1 auto俯萌,后兩個(gè)屬性可選。

該屬性有兩個(gè)快捷值:auto(1 1 auto)和 none(0 0 auto)上枕。auto 代表在需要的時(shí)候可以拉伸也可以收縮咐熙,none 表示既不能拉伸也不能收縮。

.item {

? ? flex: auto | none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

}

align-self 用來(lái)定義單個(gè)項(xiàng)目與其他項(xiàng)目不一樣的對(duì)齊方式辨萍,可以覆蓋 align-items 屬性棋恼。默認(rèn)屬性值是 auto返弹,即繼承父元素的 align-items 屬性值。當(dāng)沒(méi)有父元素時(shí)爪飘,它的表現(xiàn)等同于 stretch义起。

align-self 的六個(gè)可能屬性值,除了 auto 之外师崎,其他的表現(xiàn)和 align-items 一樣默终。

3、grid布局

它將網(wǎng)頁(yè)劃分成一個(gè)個(gè)網(wǎng)格犁罩,可以任意組合不同的網(wǎng)格齐蔽,做出各種各樣的布局。

Grid 布局與?Flex 布局有一定的相似性床估,都可以指定容器內(nèi)部多個(gè)項(xiàng)目的位置含滴。 。

Flex 布局是軸線布局丐巫,只能指定"項(xiàng)目"針對(duì)軸線的位置谈况,可以看作是一維布局。

Grid 布局則是將容器劃分成"行"和"列"鞋吉,產(chǎn)生單元格鸦做,然后指定"項(xiàng)目所在"的單元格,可以看作是二維布局谓着。

注意:項(xiàng)目只能是容器的頂層子元素泼诱,不包含項(xiàng)目的子元素,比如上面代碼的<p>元素就不是項(xiàng)目赊锚。Grid 布局只對(duì)項(xiàng)目生效治筒。

設(shè)為網(wǎng)格布局以后,容器子元素(項(xiàng)目)的float舷蒲、display: inline-block耸袜、display: table-cell、vertical-align和column-*等設(shè)置都將失效牲平。

.container {

? ? width: 500px;

? ? height: 500px;

? ? display: grid;

? ? grid-template-columns: 40px 50px auto 50px 40px;

? ? grid-template-rows: 25% 100px auto;

}

.container div {

? ? border: 1px solid #000;

}

通過(guò)grid-template-columns和grid-template-rows兩個(gè)屬性可以看出布局是三行五列

如下圖


grid內(nèi)容太多堤框,不怎么好理解,后續(xù)再更新纵柿!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜈抓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昂儒,更是在濱河造成了極大的恐慌沟使,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渊跋,死亡現(xiàn)場(chǎng)離奇詭異腊嗡,居然都是意外死亡着倾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門燕少,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卡者,“玉大人,你說(shuō)我怎么就攤上這事棺亭』⒄#” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵镶摘,是天一觀的道長(zhǎng)嗽桩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)凄敢,這世上最難降的妖魔是什么碌冶? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮涝缝,結(jié)果婚禮上扑庞,老公的妹妹穿的比我還像新娘。我一直安慰自己拒逮,他們只是感情好罐氨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滩援,像睡著了一般栅隐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玩徊,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天租悄,我揣著相機(jī)與錄音,去河邊找鬼恩袱。 笑死泣棋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畔塔。 我是一名探鬼主播潭辈,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼澈吨!你這毒婦竟也來(lái)了把敢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棚辽,失蹤者是張志新(化名)和其女友劉穎技竟,沒(méi)想到半個(gè)月后冰肴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈藐,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榔组,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了联逻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搓扯。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖包归,靈堂內(nèi)的尸體忽然破棺而出锨推,到底是詐尸還是另有隱情,我是刑警寧澤公壤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布换可,位于F島的核電站,受9級(jí)特大地震影響厦幅,放射性物質(zhì)發(fā)生泄漏沾鳄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一确憨、第九天 我趴在偏房一處隱蔽的房頂上張望译荞。 院中可真熱鬧,春花似錦休弃、人聲如沸吞歼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)篙骡。三九已至,卻和暖如春桥帆,著一層夾襖步出監(jiān)牢的瞬間医增,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工老虫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶骨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓祈匙,卻偏偏與公主長(zhǎng)得像忽刽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夺欲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,488評(píng)論 0 26
  • 移動(dòng)開發(fā)基本知識(shí)點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,466評(píng)論 0 6
  • 一跪帝、Flex 布局是什么? CSS3引入了一種新的布局模式——Flexbox布局些阅,即伸縮盒模型布局(Flexibl...
    俠客有情劍無(wú)情QAQ閱讀 5,744評(píng)論 7 94
  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案伞剑? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評(píng)論 1 92
  • 一、什么是Flex布局市埋? Flex是Flexible Box的縮寫黎泣,意為"彈性布局"恕刘,用來(lái)為盒狀模型提供最大的靈活...
    shadow123閱讀 767評(píng)論 0 2