[css]flex布局和盒狀布局的記錄比較

flex

flex 中文意思為彈性布局幸乒。 display:flex

flex是w3s推出的,除盒狀布局之外的一種新布局邏輯隅茎。

flex將頁面視為主軸(main axis)和交叉軸(cross axis)裙盾,默認(rèn)水平為主軸,左為主軸起點(diǎn)(main start)叙甸,上為交叉軸起點(diǎn)(cross start)

設(shè)置為flex布局后,子元素的float位衩、clear裆蒸、vertical-align屬性將會(huì)失效。

我們將采用flex布局的元素稱為flex容器(flex container)糖驴。而它的所有子元素將成為容器成員僚祷,稱為項(xiàng)目(flex item)

項(xiàng)目默認(rèn)按主軸排列。單個(gè)項(xiàng)目占據(jù)的主軸空間叫做main size 遂赠,交叉軸空間成為 cross size

flex布局

> 容器的屬性

flex-direction 主軸方向 ????????????????????????????????????????????????默認(rèn):row 水平為主軸

flex-wrap ???? 如果交叉軸一條軸上排不下時(shí)久妆,如何換行 默認(rèn):nowwrap 不換行

flex-flow????????為dircetion 和wrap的簡(jiǎn)寫模式? ? ? ? ? ? ? ? ? 默認(rèn):row nowrap

justify-content 定義主軸上的對(duì)齊方式? ? ? ? ? ? ? ? ? ? ? ? ? ? 默認(rèn):flex-start 左對(duì)齊

align-items ????交叉軸上的對(duì)齊方式 ????????????????????????????????默認(rèn):stretch 占滿容器高度

align-content 多根軸線的對(duì)齊方式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?默認(rèn):stretch 占滿交叉軸

> 項(xiàng)目的屬性

order ????????????項(xiàng)目的排列順序

flex-grow? ? ? ?項(xiàng)目的放大比例

flex-shrink ????縮小比例

flex-basis? ? ? ?項(xiàng)目占用的主軸空間

flex-grow ????????shrink basis的簡(jiǎn)寫 ????????默認(rèn): 0 1 auto

align self ????????單個(gè)項(xiàng)目的對(duì)齊方式? ? ? ? 默認(rèn):繼承容器的align-item屬性

參考文檔:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html


盒狀布局

盒狀布局以元素+定位的搭配,實(shí)現(xiàn)頁面的布局跷睦。

盒狀布局將元素視為框筷弦。

框分為兩種類型、定位分為四種抑诸。

定位定義著框的所屬流烂琴。

所屬流分為三種:普通流、浮動(dòng)流蜕乡、絕對(duì)定位流奸绷。

不同流中的框互不影響。

盒狀布局的不同流

> 框的屬性

框的兩種類型為塊框和行內(nèi)框层玲。

display:block |inline

注:不同的元素有不同的默認(rèn)display屬性号醉,sapn和input 的display屬性為inline

> 定位屬性

position? ? ? ?定位的類型???? 默認(rèn):static

top? ? ? ? ? ? ? 上

right? ? ? ? ? ? 右

bottom? ? ? ? 下

left? ? ? ? ? ? ? ?左

overflow? ? ? ?溢出處理方式 ????默認(rèn):visible

clip? ? ? ? ? ? ????元素的形狀? ? ? ? 默認(rèn):auto

vertical- align 垂直對(duì)齊方式? ? 默認(rèn):baseline

z-index? ? ? ? ? ? 堆疊順序

> 框?qū)?yīng)定位的所屬流

position有四種屬性 static |relative|absolute|fixed

absolute 和fixed 的元素將會(huì)生成在絕對(duì)定位流中

剩余兩種會(huì)生成在普通流中

> 浮動(dòng)

float:left? 每個(gè)框向左浮動(dòng)。

此時(shí)元素將生成在浮動(dòng)流中

為了兼容浮動(dòng)流和普通流辛块,通過添加一個(gè)空元素畔派,并賦以clear屬性使得浮動(dòng)元素在普通流的容器中占據(jù)位置。

參考文檔:https://www.w3school.com.cn/css/css_positioning.asp


> 常用場(chǎng)景

* 令彈窗居中(flex應(yīng)用)

.box{

? display: flex; //彈性布局

? display: -webkit-flex;

? border: 1px solid #0000FF;

? height: 200px;

? width: 400px;

? align-items:center; //項(xiàng)目排列 居中

? justify-content:center;? //對(duì)齊方式 居中對(duì)齊

}

.item{

? width: 50px;

? height: 40px;

? border: 1px solid #00C1B3;

}

* 令彈窗居中(position:fixed應(yīng)用)

.box{

background:whitesmoke;

position:fixed;

top:50%;

left:50%;

transform:translateX(-50%)translateY(-50%);

min-width:700px;

border-radius:8px;

padding:0px

}

* 骰子布局

3的布局

.box {display:flex;}

.item:nth-child(2) {align-self:center;}.

item:nth-child(3) {align-self:flex-end;}

* 網(wǎng)格布局

根據(jù)頁面大小自動(dòng)縮放網(wǎng)格

.Grid {display:flex;}.Grid-cell {flex:1;}

* 圣杯布局(flex應(yīng)用)


頁面從上到下润绵,從左到右分為三個(gè)區(qū)域

html部分:

????<body class="HolyGrail">

? ????<header>...</header>

? ????<div class="HolyGrail-body">

? ????? <main class="HolyGrail-content">...</main>

? ????? <nav class="HolyGrail-nav">...</nav>

? ????? <aside class="HolyGrail-ads">...</aside>

????? </div>

????? <footer>...</footer>

????</body>

CSS部分:

????.HolyGrail {

????? display: flex;

????? min-height: 100vh;

????? flex-direction: column;

????}

????header,footer {

????? flex: 1;

????}

????.HolyGrail-body {

????? display: flex;

????? flex: 1;

????}

????.HolyGrail-content {

????? flex: 1;

????}

????.HolyGrail-nav, .HolyGrail-ads {

????? /* 兩個(gè)邊欄的寬度設(shè)為12em */

????? flex: 0 0 12em;

????}

????.HolyGrail-nav {

????? /* 導(dǎo)航放到最左邊 */

? ????order: -1;

????}

* 圣杯布局(position應(yīng)用)

html部分:

<body>

? <div id="header">#header</div>

? <div id="container">

? ? <div id="center" class="column">#center</div>

? ? <div id="left" class="column">#left</div>

? ? <div id="right" class="column">#right</div>

? </div>

? <div id="footer">#footer</div>

</body>

css部分:

body {

? ? min-width: 550px;? /* 2x leftContent width + rightContent width */

? ? font-weight: bold;

? ? font-size: 20px;

? }

? #header, #footer {

? ? background: rgba(29, 27, 27, 0.726);

? ? text-align: center;

? ? height: 60px;

? ? line-height: 60px;

? }

? #footer {

? ? clear: both;

? }

? #container {

? ? padding-left: 200px;? /* leftContent width */

? ? padding-right: 150px;? /* rightContent width */

? ? overflow: hidden;

? }

? #container .column {

? ? position: relative;

? ? float: left;

? ? text-align: center;

? ? height: 300px;

? ? line-height: 300px;

? }

? #center {

? ? width: 100%;

? ? background: rgb(206, 201, 201);

? }

? #left {

? ? width: 200px;? ? ? ? ? /* leftContent width */

? ? right: 200px;? ? ? ? ? /* leftContent width */

? ? margin-left: -100%;

? ? background: rgba(95, 179, 235, 0.972);

? }

? #right {

? ? width: 150px;? ? ? ? ? /* rightContent width */

? ? margin-left: -150px;? /* rightContent width */

? ? right: -150px;

? ? background: rgb(231, 105, 2);

? }


* 輸入框布局

.InputAddOn {display:flex;}.InputAddOn-field {flex:1;}

* 固定底欄

.Site {display:flex;min-height:100vh;flex-direction:column;}.Site-content {flex:1;}

* 流式布局

.parent {width:200px;height:150px;background-color:black;display:flex;flex-flow:row wrap;align-content:flex-start;}

.child {box-sizing:border-box;background-color:white;flex:0 0 25%;height:50px;border:1px solid red;}

參考文檔:

1.flex布局教程:實(shí)例篇.html

2.css經(jīng)典布局-圣杯布局.html

小記:flex和盒狀是兩種不同的布局思路线椰,flex設(shè)定了更多種對(duì)齊類型,減少了對(duì)長(zhǎng)寬等屬性的關(guān)注尘盼,只需對(duì)部分固定寬度的項(xiàng)目進(jìn)行設(shè)定憨愉,剩下就可以交由瀏覽器自行處理烦绳。盒裝更像是作畫的思路,設(shè)定好頁面上的每一像素配紫,最后就會(huì)得到一副畫径密。相對(duì)來說flex布局減少了對(duì)每個(gè)框的關(guān)注,對(duì)個(gè)人來說笨蚁,減少了工作量睹晒。

(但盒狀布局也很驚艷趟庄,如果有理解錯(cuò)誤的地方歡迎指出括细,謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市戚啥,隨后出現(xiàn)的幾起案子奋单,更是在濱河造成了極大的恐慌,老刑警劉巖猫十,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件览濒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拖云,警方通過查閱死者的電腦和手機(jī)贷笛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宙项,“玉大人乏苦,你說我怎么就攤上這事∮瓤穑” “怎么了汇荐?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)盆繁。 經(jīng)常有香客問我掀淘,道長(zhǎng),這世上最難降的妖魔是什么油昂? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任革娄,我火速辦了婚禮,結(jié)果婚禮上冕碟,老公的妹妹穿的比我還像新娘拦惋。我一直安慰自己,他們只是感情好鸣哀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布架忌。 她就那樣靜靜地躺著,像睡著了一般我衬。 火紅的嫁衣襯著肌膚如雪叹放。 梳的紋絲不亂的頭發(fā)上饰恕,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音井仰,去河邊找鬼埋嵌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俱恶,可吹牛的內(nèi)容都是我干的雹嗦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼合是,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼了罪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起聪全,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤泊藕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后难礼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娃圆,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蛾茉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讼呢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谦炬,死狀恐怖悦屏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吧寺,我是刑警寧澤窜管,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站稚机,受9級(jí)特大地震影響幕帆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赖条,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一失乾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纬乍,春花似錦碱茁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春蜓氨,著一層夾襖步出監(jiān)牢的瞬間聋袋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工穴吹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幽勒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓港令,卻偏偏與公主長(zhǎng)得像啥容,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顷霹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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