您好,登錄后才能下訂單哦!
很久不寫博文,之前的長時(shí)間不上都關(guān)閉了,但隨著工作時(shí)間長越來越長,對知識的積累和總結(jié)還真的是很重要的。所以奉勸碼農(nóng)們每天都還是要抽出來一點(diǎn)時(shí)間總結(jié)點(diǎn)東西,以后對你受益匪淺!!今天還是變談CSS3里的flex怎么處理兼容的
flex是個(gè)非常好用的屬性,如果說有什么可以完全代替 float 和 position ,那么肯定是非它莫屬了,雖然現(xiàn)在低版本瀏覽器不支持,可是對于移動(dòng)來說兼容性不是問題,可是在安卓4.3以后版本里。那就不好用了,今天咱們就說下如果寫flex才能保證兼容性。
flex之所以有兼容性。是因?yàn)閣3c從09到現(xiàn)在更新了很多次,所以有一些瀏覽器只是支持舊語法的書定方式,flex屬性有很多種,今天主要說常用的等比設(shè)置和居中這兩塊
一、舊語法
.box{ display: -moz-box; /*Firefox*/ display: -webkit-box; /*Safari,Opera,Chrome*/ display: box; }
2.容器屬性
1)box-pack box-pack屬性總共有4個(gè)值:
.box{ box-pack: start | end | center | justify; /*主軸對齊:左對齊(默認(rèn)) | 右對齊 | 居中對齊 | 左右對齊*/}
3.子元素屬性
box-flex 屬性:
.item{ -moz-box-flex: 1.0; /*Firefox*/ -webkit-box-flex: 1.0; /*Safari,Opera,Chrome*/ box-flex: 1.0;}
二、新語法
1.容器的display屬性
.item{ -moz-box-flex: 1; /*Firefox*/ -webkit-box-flex: 1; /*Safari,Opera,Chrome*/ box-flex: 1; } .box{ /*行內(nèi)flex*/ display: -webkit-inline-flex; /*webkit*/ display:inline-flex; }
2.容器樣式
.box{ flex-direction: row | row-reverse | column | column-reverse; /*主軸方向:左到右(默認(rèn)) | 右到左 | 上到下 | 下到上*/ flex-wrap: nowrap | wrap | wrap-reverse; /*換行:不換行(默認(rèn)) | 換行 | 換行并第一行在下方*/ flex-flow: <flex-direction> || <flex-wrap>; /*主軸方向和換行簡寫*/ justify-content: flex-start | flex-end | center | space-between | space-around; /*主軸對齊方式:左對齊(默認(rèn)) | 右對齊 | 居中對齊 | 兩端對齊 | 平均分布*/ align-items: flex-start | flex-end | center | baseline | stretch; /*交叉軸對齊方式:頂部對齊(默認(rèn)) | 底部對齊 | 居中對齊 | 上下對齊并鋪滿 | 文本基線對齊*/ align-content: flex-start | flex-end | center | space-between | space-around | stretch; /*多主軸對齊:頂部對齊(默認(rèn)) | 底部對齊 | 居中對齊 | 上下對齊并鋪滿 | 上下平均分布*/}
3.子元素屬性
.item{ order: <integer>; /*排序:數(shù)值越小,越排前,默認(rèn)為0*/ flex-grow: <number>; /* default 0 */ /*放大:默認(rèn)0(即如果有剩余空間也不放大,值為1則放大,2是1的雙倍大小,以此類推)*/ flex-shrink: <number>; /* default 1 */ /*縮小:默認(rèn)1(如果空間不足則會(huì)縮小,值為0不縮小)*/ flex-basis: <length> | auto; /* default auto */ /*固定大?。耗J(rèn)為0,可以設(shè)置px值,也可以設(shè)置百分比大小*/ flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] /*flex-grow, flex-shrink 和 flex-basis的簡寫,默認(rèn)值為0 1 auto,*/ align-self: auto | flex-start | flex-end | center | baseline | stretch; /*單獨(dú)對齊方式:自動(dòng)(默認(rèn)) | 頂部對齊 | 底部對齊 | 居中對齊 | 上下對齊并鋪滿 | 文本基線對齊*/}
兼容寫法:
1.盒子的兼容寫法
.box{ display: -webkit-box; /* 老版本語法: Safari, iOS, Android browser, older WebKit browsers. */ display: -moz-box; /* 老版本語法: Firefox (buggy) */ display: -ms-flexbox; /* 混合版本語法: IE 10 */ display: -webkit-flex; /* 新版本語法: Chrome 21+ */ display: flex; /* 新版本語法: Opera 12.1, Firefox 22+ */}
2.子元素的兼容寫法:
.flex1 { -webkit-box-flex: 1 /* OLD - iOS 6-, Safari 3.1-6 */ -moz-box-flex: 1; /* OLD - Firefox 19- */ -webkit-flex: 1; /* Chrome */ -ms-flex: 1 /* IE 10 */ flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */ }
我要說的主要部分來了。。
這種兼容寫法不一定起效的。尤其是在底版本安卓系統(tǒng)中。因?yàn)槭裁茨?因?yàn)樗卸际窍蛳录嫒莸?,所以寫法的順序一定要寫好了才起作用。就是把舊語法寫在底下,個(gè)別不兼容的移動(dòng)設(shè)置才會(huì)識別,哪些是舊的語法,你懂的。那些帶box的一定要寫在最下面即可。所以上面的兼容寫法應(yīng)該是這樣的才對
.box{ display: -webkit-flex; /* 新版本語法: Chrome 21+ */ display: flex; /* 新版本語法: Opera 12.1, Firefox 22+ */ display: -webkit-box; /* 老版本語法: Safari, iOS, Android browser, older WebKit browsers. */ display: -moz-box; /* 老版本語法: Firefox (buggy) */ display: -ms-flexbox; /* 混合版本語法: IE 10 */ }
.flex1 { -webkit-flex: 1; /* Chrome */ -ms-flex: 1 /* IE 10 */ flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */ -webkit-box-flex: 1 /* OLD - iOS 6-, Safari 3.1-6 */ -moz-box-flex: 1; /* OLD - Firefox 19- */ }
如果你不把握好這個(gè)先后順序,總是調(diào)整不出來完整的兼容樣式。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。