基礎(chǔ)的CSS3彈性盒Flexbox布局使用實(shí)例

flexbox是一個(gè)新的盒子模型,當(dāng)你給一個(gè)元素使用了flexbox模塊,那么它的子元素就會(huì)指定的方向在水平或者縱向方向排列。這些子元素會(huì)按照一定的比例進(jìn)行擴(kuò)展或收縮來(lái)填補(bǔ)容器的可用空間。flexbox有許多很好用的地方,下面就著重講述一下它的一些使用場(chǎng)景:
Example 1: flexbox等分布局
如果你要實(shí)現(xiàn)以下所示的樣式,你可能首先想到的是用float:
- <ul id="ranktop3">
- <li>
- <div class="ranktab">1</div>
- <p>fdeg</p>
- <p>霸氣值:170</p>
- </li>
- <li>
- <div class="ranktab">2</div>
- <p>bling</p>
- <p>霸氣值:160</p>
- </li>
- <li>
- <div class="ranktab">3</div>
- <p>lea</p>
- <p>霸氣值:150</p>
- </li>
- </ul>
- ul li {
- width: 32.9%;
- float: left;
- border-right: 1px solid #fa9900;
- padding: 5px 0;
- }
但當(dāng)只有2個(gè)排名后,少了一個(gè)li節(jié)點(diǎn)后,就會(huì)展示如下:
刪除兩個(gè)li節(jié)點(diǎn)后如下:
但是用戶以及設(shè)計(jì)師肯定不希望看到這樣的界面。他們肯定希望界面是這樣的:
減少一個(gè)li節(jié)點(diǎn)后:
刪除兩個(gè)li節(jié)點(diǎn)后如下:
那么這里用display:flex布局是最好不過(guò)的了,新的flexbox布局模式被用來(lái)重新定義CSS中的布局方式:
- ul {
- display:flex;//表示改直接子元素用flex布局,默認(rèn)橫向布局
- }
- ul li {
- /*width: 32.9%;*/
- /*float: left;*/
- border-right: 1px solid #fa9900;
- padding: 5px 0;
- flex: 1;表示子元素之間平均分配
- }
可見(jiàn)用flex布局非常完美,這就是flex布局的牛逼之處。很遺憾的是最近規(guī)范變動(dòng)過(guò)多,導(dǎo)致各個(gè)瀏覽器對(duì)它的實(shí)現(xiàn)也有所不同。為了兼容更多的瀏覽器,也可以這樣寫:
display: flex;display: -webkit-box;這兩個(gè)屬性的方法作用相同。
Example 2: flexbox不等分布局
- <div class="container">
- <section class="initial">
- <p>
- 空間足夠的時(shí)候,我的寬度是200px,如果空間不足,
- 我會(huì)變窄到100px,但不會(huì)再窄了。
- </p>
- </section>
- <section class="none">
- <p>
- 無(wú)論窗口如何變化,我的寬度一直是200px。
- </p>
- </section>
- <section class="flex1">
- <p>
- 我會(huì)占滿剩余寬度的1/3。
- </p>
- </section>
- <section class="flex2">
- <p>
- 我會(huì)占滿剩余寬度的2/3。
- </p>
- </section>
- </div>
- .container {
- display: -webkit-flex;
- display: flex;
- }
- .initial {
- -webkit-flex: initial;
- flex: initial;
- width: 200px;
- min-width: 100px;
- /*空間足夠的時(shí)候,該div的寬度是200px,如果空間不足,該div會(huì)變窄到100px,但不會(huì)再窄了。*/
- }
- .none {
- -webkit-flex: none;
- flex: none;
- width: 200px;
- /*無(wú)論窗口如何變化,我的寬度一直是200px。*/
- }
- .flex1 {
- -webkit-flex: 1;
- flex: 1;
- /*改div會(huì)占滿剩余寬度的1/3。*/
- }
- .flex2 {
- -webkit-flex: 2;
- flex: 2;
- /*改div會(huì)占滿剩余寬度的2/3。*/
- }
效果如下圖所示:
Example 3: flexbox基本頁(yè)面布局
- <div class="container">
- <nav>
- <div class="container">
- <nav>
- <ul>
- <li>
- <a href="http://www.alloyteam.com/">menu1</a>
- </li>
- </ul>
- </nav>
- <div class="content">
- <section >
- ...
- </section>
- <section>
- ...
- </section>
- </div>
- </div>
- .container {
- display: -webkit-flex;
- display: flex;
- }
- nav {
- width: 200px; /*固定寬度*/
- }
- .content{
- -webkit-flex: 1; /*除去nav的固定寬度后,剩下的寬度都是屬于content的*/
- flex: 1;
- }
效果如下圖所示:
Example 4: flexbox的居中布局
- <div class="vertical-container">
- <section class="vertically-centered">
- <p>
- CSS里總算是有了一種簡(jiǎn)單的垂直居中布局的方法了!
- </p>
- </section>
- </div>
- .vertical-container {
- display: -webkit-flex;
- display: flex;
- height: 300px;
- }
- .vertically-centered {
- margin: auto;
- }
PS:解決兼容性問(wèn)題
對(duì)于Flexbox 以前的幾個(gè)版本可以使用Autoprefixer后處理程序來(lái)實(shí)現(xiàn)css3代碼自動(dòng)補(bǔ)全。比如:
- display: flex;
編譯后:
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
如果你使用Sass,那么可以使用@mixin來(lái)解決flexbox版本兼容,直接@include進(jìn)來(lái)就可以輕松解決三個(gè)版本的兼容問(wèn)題;這樣可以支持到IE10 +, 移動(dòng)端瀏覽器和最新的FF, Safari, Chrome, IE11, Opera等。
github項(xiàng)目地址:sass-flex-mixin
相關(guān)文章
- 這篇文章主要介紹了10分鐘理解CSS3 FlexBox彈性布局的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-20
- 這篇文章主要介紹了CSS3 Flex 彈性布局實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-11-01
- 這篇文章主要介紹了css flex 彈性布局詳解的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-02
實(shí)例講解CSS3中的box-flex彈性盒屬性布局
flex布局毫無(wú)疑問(wèn)是當(dāng)今Web頁(yè)面的最強(qiáng)大布局方式,box-flex彈性盒模型是其中的一個(gè)代表,這里我們就來(lái)以實(shí)例講解CSS3中的box-flex彈性盒模型布局2023-06-22- 下面小編就為大家?guī)?lái)一篇CSS3彈性盒模型flex box快速入門心得(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-24
flex彈性盒布局最后一行左對(duì)齊的實(shí)現(xiàn)思路
這篇文章主要介紹了flex彈性盒布局最后一行左對(duì)齊的實(shí)現(xiàn)思路,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-08