.content
flex:1 充滿剩余空間,形成自適應(yīng)效果,不設(shè)置的話默認(rèn)為內(nèi)容寬度
CSS-Layout
旨在打造詳盡的前端布局代碼學(xué)習(xí)庫(kù)(自從用了框架開發(fā),CSS生疏了不少,所以開這個(gè)庫(kù)練練手)
SF不能正確解析含有中文的網(wǎng)址,所以某些預(yù)覽鏈接無(wú)法跳轉(zhuǎn),請(qǐng)?jiān)L問我的博客閱讀此文
子元素為行內(nèi)元素還是塊狀元素,寬度一定還是寬度未定,采取的布局方案不同。
方案選擇基本思路:
子元素為
行內(nèi)元素:對(duì)父元素設(shè)置text-align:center;
定寬塊狀元素: 設(shè)置左右margin值為auto;
不定寬塊狀元素: 設(shè)置子元素為display:inline,然后在父元素上設(shè)置text-align:center;
通用方案: flex布局,對(duì)父元素設(shè)置display:flex;justify-content:center;
常用方法舉例:
NOTE:為了統(tǒng)一展示效果,在以下實(shí)例代碼中對(duì)父子元素設(shè)置了固定寬高,實(shí)際可以不設(shè)置,由子元素內(nèi)容來(lái)控制其寬度
方法一:text-align + inline-block
設(shè)置:對(duì)父元素設(shè)置text-align:center(將會(huì)對(duì)行內(nèi)元素起作用),子元素設(shè)置display:inline-block(兼容IE6、7 時(shí),替換為display:inline;zoom:1;);
優(yōu)點(diǎn):兼容性良好
缺點(diǎn): 需要額外代碼修復(fù)因繼承父元素的text-align:center對(duì)子元素內(nèi)容排列造成的影響,如需要添加.child{text-align:left}
方法二:table + margiin
設(shè)置:對(duì)子元素設(shè)置display:table(此元素會(huì)作為塊級(jí)表格來(lái)顯示,元素表現(xiàn)類似block,但是寬度跟隨內(nèi)容寬度)(兼容IE6、7 時(shí),替換div結(jié)構(gòu)為table結(jié)構(gòu)即可);
優(yōu)點(diǎn): 只需要對(duì)子元素進(jìn)行設(shè)置
缺點(diǎn): 向下兼容IE6、7時(shí),需要更改html結(jié)構(gòu)
方法三:absolute + transform
設(shè)置:對(duì)父元素設(shè)置position:realatve(使其作為參照物),對(duì)子元素設(shè)置position:absolute;left:50%(絕對(duì)定位元素的寬度也隨內(nèi)容而定),然后對(duì)子元素設(shè)置transform:translateX(-50%)(兼容IE6、7 時(shí),替換div結(jié)構(gòu)為table結(jié)構(gòu)即可);
優(yōu)點(diǎn): 居中元素不會(huì)對(duì)其他元素造成影響
缺點(diǎn):transform不兼容低版本IE
方法四:flex + justify-content
設(shè)置:對(duì)父元素設(shè)置display:flex;justify-content:center(這樣其內(nèi)部的元素會(huì)變?yōu)?b>align-items),align-items的寬度默認(rèn)為auto,所以跟隨內(nèi)容寬度變化,繼而justify-content:center屬性會(huì)使子元素居中
優(yōu)點(diǎn):只需要對(duì)父元素進(jìn)行設(shè)置
缺點(diǎn):flex不兼容低版本IE
垂直居中垂直居中對(duì)于子元素是單行內(nèi)聯(lián)文本、多行內(nèi)聯(lián)文本以及塊狀元素采用的方案是不同的。
常用方法舉例:父元素一定,子元素為單行內(nèi)聯(lián)文本:設(shè)置父元素的height等于行高line-height
父元素一定,子元素為多行內(nèi)聯(lián)文本:設(shè)置父元素的display:table-cell或inline-block,再設(shè)置vertical-align:middle;
塊狀元素:設(shè)置子元素position:absolute 并設(shè)置top、bottom為0,父元素要設(shè)置定位為static以外的值,margin:auto;
通用方案: flex布局,給父元素設(shè)置{display:flex; align-items:center;}
方法一:table-cell + vertical-align
設(shè)置:子容器高度不固定,對(duì)父元素設(shè)置display:table-cell(parent變?yōu)閱卧瘢?,繼續(xù)設(shè)置vertical-align:center(使inline元素垂直居中);
優(yōu)點(diǎn):兼容性好(支持 IE 8)
缺點(diǎn):IE 8 以下版本需要調(diào)整頁(yè)面結(jié)構(gòu)至 table
方法二:absolute + transform
設(shè)置:對(duì)父元素設(shè)置position:realatve(使其作為參照物),對(duì)子元素設(shè)置position:absolute;left:50%(絕對(duì)定位元素的寬度也隨內(nèi)容而定),然后對(duì)子元素設(shè)置transform:translateY(-50%)(兼容IE6、7 時(shí),替換div結(jié)構(gòu)為table結(jié)構(gòu)即可);
優(yōu)點(diǎn): 居中元素不會(huì)對(duì)其他元素造成影響
缺點(diǎn):transform不兼容低版本IE
方法三:flex + align-items
設(shè)置:對(duì)父元素設(shè)置display:flex(align-items默認(rèn)屬性為stretch),繼而設(shè)置align-items:center即可;
優(yōu)點(diǎn): 只需要對(duì)父元素進(jìn)行設(shè)置
缺點(diǎn):flex align-items不兼容低版本IE
水平居中且垂直居中結(jié)合以上介紹到的水平和垂直居中方法進(jìn)行設(shè)置
多列布局 一列定寬,一列自適應(yīng)寬度方法一:text-align + inline-block + table-cell + vertical-align
方法二:absolute + transform
方法三:flex + justify-content + align-items
1.一列定寬,一列自適應(yīng)寬度(float+margin)
預(yù)覽 源碼
2.一列定寬,一列自適應(yīng)寬度(float+margin)fix 改良版
預(yù)覽 源碼
NOTE:此方法不會(huì)存在 IE 6 中3像素的 BUG,但 .left 不可選擇, 需要設(shè)置 .left {position: relative} 來(lái)提高層級(jí)。 此方法可以適用于多版本瀏覽器(包括 IE6)。缺點(diǎn)是多余的 HTML 文本結(jié)構(gòu)。
3.一列定寬,一列自適應(yīng)寬度( float + overflow )
預(yù)覽 源碼
4.一列定寬,一列自適應(yīng)寬度( table + table-cell )
預(yù)覽 源碼
5.一列定寬,一列自適應(yīng)寬度( flex )
預(yù)覽 源碼
多列定寬,一列自適應(yīng)寬度基于上面對(duì)于一列定寬一列自適應(yīng)的需求實(shí)現(xiàn),多列定寬只需要在原有一列定寬的基礎(chǔ)上添加新的列即可,最后的列依然會(huì)自適應(yīng)剩余寬度。
以 flex 的實(shí)現(xiàn)為基礎(chǔ)可以作如下改造:
多列不定寬,一列自適應(yīng)寬度.left
左側(cè)定寬
.center
第二列定寬
.content
flex:1 充滿剩余空間,形成自適應(yīng)效果,不設(shè)置的話默認(rèn)為內(nèi)容寬度
基于以上一列定寬一列自適應(yīng)的實(shí)現(xiàn),進(jìn)行改造,左側(cè)不定寬區(qū)域的寬度任意(也可以由內(nèi)部的內(nèi)容來(lái)決定寬度就可以實(shí)現(xiàn)不定寬且自適應(yīng)),繼續(xù)增加一列即可變?yōu)槎嗔校己芊奖銓?shí)現(xiàn)
多列等分布局1.多列等分布局(float)
預(yù)覽 源碼
2.多列等分布局(table)
預(yù)覽 源碼
3.多列等分布局(flex)
預(yù)覽 源碼
多列等高布局1.多列等高布局(table)
預(yù)覽 源碼
2.多列等高布局(flex)
預(yù)覽 源碼
全屏布局1.彈性全屏布局(position)
預(yù)覽 源碼
2.彈性全屏布局(flex)
預(yù)覽 源碼
3.百分比布局,以上寬度設(shè)置更改為百分比即可
4.根據(jù)內(nèi)容完全自適應(yīng),position有限制無(wú)法滿足,flex可以做到
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/111772.html
摘要:前端面試每日題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)讓努力成為一種習(xí)慣,讓奮斗成為一種享受相信堅(jiān)持的力量項(xiàng)目地址推薦歡迎跟一起折騰前端,系統(tǒng)整理前端知識(shí),目前正在折騰,打算打通算法與數(shù)據(jù)結(jié)構(gòu)的任督二脈。 《論語(yǔ)》,曾子曰:吾日三省吾身(我每天多次反省自己)。 前端面試每日3+1題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)! 讓努力成為一種習(xí)慣,讓奮斗成為一種享受!相信 堅(jiān)持 的力量!!! 項(xiàng)目...
摘要:前端面試每日題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)讓努力成為一種習(xí)慣,讓奮斗成為一種享受相信堅(jiān)持的力量項(xiàng)目地址推薦歡迎跟一起折騰前端,系統(tǒng)整理前端知識(shí),目前正在折騰,打算打通算法與數(shù)據(jù)結(jié)構(gòu)的任督二脈。 《論語(yǔ)》,曾子曰:吾日三省吾身(我每天多次反省自己)。 前端面試每日3+1題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)! 讓努力成為一種習(xí)慣,讓奮斗成為一種享受!相信 堅(jiān)持 的力量!!! 項(xiàng)目...
摘要:默認(rèn)占滿整個(gè)頁(yè)面寬度,如果設(shè)置了指定寬度,則會(huì)用填充剩下的部分。關(guān)于浮動(dòng)的兩個(gè)特點(diǎn)浮動(dòng)的框可以向左或向右移動(dòng),直到它的外邊緣碰到包含框或另一個(gè)浮動(dòng)框的邊框?yàn)橹埂T试S浮動(dòng)元素出現(xiàn)在兩側(cè)。CSS介紹 CSS(CascadingStyleSheet,層疊樣式表)定義如何顯示HTML元素。 當(dāng)瀏覽器讀到一個(gè)樣式表,它就會(huì)按照這個(gè)樣式表來(lái)對(duì)文檔進(jìn)行格式化(渲染)。 CSS語(yǔ)法 CSS實(shí)例 每個(gè)CSS樣...
摘要:每個(gè)列表項(xiàng)始于標(biāo)簽。由動(dòng)作屬性定義的這個(gè)文件通常會(huì)對(duì)接收到的輸入數(shù)據(jù)進(jìn)行相關(guān)的處理。標(biāo)簽的屬性應(yīng)當(dāng)與相關(guān)元素的屬性相同。姓名性別姓名性別單元格標(biāo)簽可以定義表格中的一個(gè)單元格,表示一個(gè)單元格。 第一部分 HTML 第一章 職業(yè)規(guī)劃和前景 職業(yè)方向規(guī)劃定位: web前端開發(fā)工程師 web網(wǎng)站架構(gòu)師 自己創(chuàng)業(yè) 轉(zhuǎn)崗管理或其他 web前端開發(fā)的前景展望: 未來(lái)IT行業(yè)企業(yè)需求...
閱讀 1072·2021-11-25 09:43
閱讀 696·2021-11-22 14:45
閱讀 3815·2021-09-30 09:48
閱讀 1059·2021-08-31 09:41
閱讀 1970·2019-08-30 13:52
閱讀 1975·2019-08-30 11:24
閱讀 1340·2019-08-30 11:07
閱讀 949·2019-08-29 12:15