在以往的大多數(shù)網(wǎng)頁布局中,經(jīng)常要用到浮動或定位、居中,為了實現(xiàn)這些效果,我們通常會用到CSS中 display屬性 + position屬性 + float屬性來完成,但對于某些布局非常不方便,往往花費不必要的時間而達不到想要的效果,CSS3中新特性display: flex的出現(xiàn),使我們能節(jié)省時間和優(yōu)化代碼,并實現(xiàn)各種頁面簡單快速布局。Flex是Flexible Box的縮寫,意為"彈性布局",它的強大之處在為盒狀模型提供最大的靈活性。而且display: flex兼容大多數(shù)主流瀏覽器,有些瀏覽器使用時需要加上前綴,比如Webkit內(nèi)核的瀏覽器,必須加上-webkit前綴。
在使用display: flex布局父元素容器為指定彈性盒子時,只需在父元素中設(shè)置:display:flex;而父元素中所包含的子元素的屬性float、clear和vertical-align是沒有效果的;而行內(nèi)元素容器彈性盒子設(shè)置為display:inline-flex;彈性盒子有兩條軸,水平的主軸(橫軸)和垂直的交叉軸(縱軸)。默認(rèn)橫軸為主軸,默認(rèn)自左向右;縱軸為輔軸,默認(rèn)自上而下。
在設(shè)置了display: flex的父元素上,常常會用到的有關(guān)彈性布局的屬性主要有 flex-direction , flex-wrap , justify-content , align-items , align-content ,這幾個屬性分別從主軸的方向、是否換行、子元素在主軸上的對齊方式、子元素在交叉軸上的對齊方式、子元素在多根軸線上的對齊方式來規(guī)定了子元素在父元素中的彈性,從而來達到所想實現(xiàn)的效果。
在定義了父元素為彈性盒子后子元素所擁有的屬性都有:order,flex-grow,flex-shrink,flex-basis,align-self。order規(guī)定了子元素出現(xiàn)的排列循序,值越小,排列越靠前,默認(rèn)為0;flex-grow定義了子元素的放大比例,默認(rèn)為0,表示即使父元素還有剩余空間也不放大該子元素。設(shè)父元素的寬度為500px,三個子元素寬度分別為100px,如果所有子元素的flex-grow的值為1,則如果父元素有剩余空間,子元素會等比例放大,即剩余出來的200/3分給三個子元素;如果是一個子元素flex-grow為1,一個為2,第三個為3,則三個子元素分別多分到,200*(1/6),200*(2/6),200*(3/6);flex-shrink定義了子元素的縮小比例,默認(rèn)為1,當(dāng)父元素空間不足時,如果各個條目的flex-shrink值均為1,則表明等比例縮小,如果為0,則表示不縮小。
作者:方維網(wǎng)絡(luò)嚴(yán)成
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://m.oulysa.com/news/4322.html