幾個CSS3的flex彈性盒模型布局的簡單例子演示

Flexible Box(彈性盒子)能讓頁面的分布更合理和方便,
這是之前使用常規(guī)的布局方式所做不到的。
- <div class="warp">
- <div class="modular">1</div>
- <div class="modular">2</div>
- <div class="modular">3</div>
- <div class="modular">4</div>
- </div>
display:flex和display:box有什么區(qū)別?
前者是flex 2012年的語法,也將是以后標(biāo)準(zhǔn)的語法,大部分瀏覽器已經(jīng)實現(xiàn)了無前綴版本。
- /*父級*/
- .warp{
- width: 100%;
- height: 100px;
- /*這個是用來定義伸縮容器,是內(nèi)聯(lián)還是塊取決于設(shè)置的值。*/
- /*這個時候,他的所有子元素將變成flex文檔流,稱為伸縮項目。*/
- /*-------------------------------------------------------------*/
- display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */
- display: -moz-box; /* Firefox 17- */
- display: -webkit-flex; /* Chrome 21+, Safari 6.1+, iOS Safari 7+, Opera 15/16 */
- display: -moz-flex; /* Firefox 18+ */
- display: -ms-flexbox; /* IE 10 */
- display: flex; /* Chrome 29+, Firefox 22+, IE 11+, Opera 12.1/17/18, Android 4.4+ */
- /*-------------------------------------------------------------*/
- /*一起使用box-align 和 box-pack 屬性,對子元素進(jìn)行居中*/
- -webkit-box-pack:justify;
- -webkit-box-align: ustify;
- -moz-box-pack:justify;
- -moz-box-align:justify;
- box-pack:justify;
- box-align:justify;
- /*-------------------------------------------------------------*/
- /*定義了伸縮項目放置在伸縮容器的方向*/
- flex-direction:row;
- -webkit-flex-direction:row;
- /*定義伸縮容器里是單行還是多行顯示*/
- flex-wrap:nowrap;
- /*flex-direction”和“flex-wrap”屬性的縮寫版本,默認(rèn)row nowrap*/
- flex-flow:row nowrap;
- /*設(shè)置伸縮容器在橫向方向上的對齊方式。*/
- justify-content:center;
- /*設(shè)置伸縮容器在縱向方向上的對齊方式。*/
- align-items:center;
- /*當(dāng)伸縮容器的縱向還有多余空間時,可以用來調(diào)準(zhǔn)伸縮容器橫向在伸縮容器里的對齊方式*/
- align-content:center;
- }
- /*子級*/
- .warp .modular{
- width:80px;
- height:80px;
- background-color:#eee;
- text-align:center;
- /*設(shè)置伸縮項目出現(xiàn)的順序。*/
- order:-1;
- /*設(shè)置伸縮項目擴(kuò)展的比例。*/
- flex-grow:1;
- /*設(shè)置伸縮項目收縮的比例。*/
- flex-shrink:2;
- /*設(shè)置伸縮項目的伸縮基準(zhǔn)值。*/
- flex-basis:auto;
- /*flex-grow”、“flex-shrink”和“flex-basis”三個屬性的縮寫*/
- flex:1 2 100px;
- /*用來在單獨(dú)的伸縮項目上覆寫默認(rèn)的對齊方式。*/
- align-self:center;
- }
直接上代碼,寫了個Demo便于理解,其中warp為父元素,稱為“伸縮容器,modular為子元素,稱為“伸縮項目”。
1) Flexbox布局最適合應(yīng)用程序的組件和小規(guī)模的布局,而網(wǎng)格布局更適合那些更大規(guī)模的布局。
2) 目前沒有瀏覽器支持 box-flex 屬性,F(xiàn)irefox 支持替代的 -moz-box-flex 屬性,Safari、Opera 以及 Chrome 支持替代的 -webkit-box-flex 屬性。
3) CSS的columns在伸縮容器上沒有效果。
4) float、clear和vertical-align在伸縮項目上沒有效果。
例:移動端導(dǎo)航(居中,左右,自適應(yīng)居中,自適應(yīng)豎向排列)
- <style type="text/css">
- .nav{
- background:#00BFFF;
- display:-webkit-box;
- display:-moz-box;
- display:-ms-flexbox;
- display:-webkit-flex;
- display:flex;
- -webkit-flex-flow:row wrap;
- /*自適應(yīng)豎向排列*/
- -webkit-flex-flow:column wrap;
- /* 所有列面向主軸起始位置靠齊 */
- justify-content:flex-start;
- /* 所有列面向主軸終點(diǎn)位置靠齊 */
- justify-content:flex-end;
- }
- .nav a{
- text-decoration:none;
- display:block;
- padding:1em;
- color:#fff;
- /*居中平鋪*/
- flex:1;
- }
- @media all and (max-width: 800px) {
- .nav{
- /* 所有列面向主軸兩端位置平均分配 */
- justify-content:space-around;
- }
- }
- </style>
- <ul class="nav">
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li><a href="#">4</a></li>
- </ul>
例:移動端常用自適應(yīng)布局
- <style type="text/css">
- .wrapper{
- display:-webkit-box;
- display:-moz-box;
- display:-ms-flexbox;
- display:-webkit-flex;
- display:flex;
- -webkit-flex-flow:row wrap;
- flex-flow:row wrap;
- }
- .wrapper > *{
- padding:10px;
- flex:1 100%;
- }
- .header{
- background:#FF6347;
- }
- .footer{
- background:#90EE90;
- }
- .main{
- background:#00BFFF;
- }
- .aside-1{
- background:#FFD700;
- }
- .aside-2{
- background:#FF69B4;
- }
- @media all and (min-width: 600px) {
- .aside{
- flex:1 auto;
- }
- }
- @media all and (min-width: 800px) {
- .main{
- flex:3 0px;
- }
- .aside-1{
- order:1;
- }
- .main{
- order:2;
- }
- .aside-2{
- order:3;
- }
- .footer{
- order:4;
- }
- }
- </style>
- <div class="wrapper">
- <header class="header">頂部</header>
- <article class="main">
- <p>我在中間顯示的文字</p>
- </article>
- <aside class="aside aside-1">我在左邊顯示的文字</aside>
- <aside class="aside aside-2">我在右邊顯示的文字</aside>
- <footer class="footer">底部</footer>
- </div>
相關(guān)文章
純CSS3彈性框布局實現(xiàn)的漸變色波動列動畫效果源碼
這是一款基于純CSS3彈性框布局實現(xiàn)的漸變色波動列動畫效果源碼。畫面中的5塊漸變色區(qū)域連續(xù)排列在一起,并呈現(xiàn)出此消彼漲的彈性波動變換動畫效果2018-08-07- 這篇文章主要介紹了css flex 彈性布局詳解的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-02
CSS3彈性布局內(nèi)容對齊(justify-content)屬性使用詳解
這篇文章主要介紹了CSS3彈性布局內(nèi)容對齊(justify-content)屬性使用詳解,具有一定的參考價值,有興趣的可以了解一下2017-07-31- 這篇文章主要為大家詳細(xì)介紹了CSS3彈性伸縮布局之box布局,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-07-12
- flex布局毫無疑問是當(dāng)今Web頁面的最強(qiáng)大布局方式,box-flex彈性盒模型是其中的一個代表,這里我們就來以實例講解CSS3中的box-flex彈性盒模型布局2023-06-22
- 下面小編就為大家?guī)硪黄狢SS3彈性盒模型flex box快速入門心得(必看篇)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-24
- 這篇文章主要介紹了基礎(chǔ)的CSS3彈性盒Flexbox布局使用實例,文中最后也提到了解決兼容性問題的基本方法,需要的朋友可以參考下2016-04-08
- 這篇教程將引導(dǎo)大家如何使用“em”來創(chuàng)建一個基本的彈性布局,從而學(xué)習(xí)其如何計算?又是如何使用“em”對層進(jìn)行彈性擴(kuò)展?又是如何擴(kuò)展文本和圖像等內(nèi)容?下在我們就一起帶2013-04-07
- 這篇文章主要介紹了CSS3 Flex 彈性布局實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-11-01