flex布局

flex的使用實例

摘自:http://www.cnblogs.com/lynnmn/p/6262941.html

之前的隨筆從阮一峰老師那里學到了flex的基本用法及作用,現(xiàn)在來把flex具體運用到實例中,看看flex的彈性布局效果。

1. flex設置元素垂直居中對齊

在之前的一篇文章中記載過如何垂直居中對齊,方法有很多,但是在學習了flex布局之后,垂直居中更加容易實現(xiàn)
HTML代碼:

<div class="demo">
  <div class="inner">
    <p>這是一個測試這是一個測試這是一個測試這是一個測試這是一個測試</p>
  </div>
</div>

CSS代碼:

.demo{
  width: 500px;
  height: 300px;
  border: 1px solid purple;
  display: flex;                /*設置為flex布局*/
  justify-content: center;   /*水平居中*/
  align-items: center;     /*垂直居中*/
}
.inner{
  width: 160px;
  height: 160px;
  font-size: 26px;
  border: 1px solid red;
}

效果如圖:


2. 用flex布局制作導航欄

以前在寫導航欄的時候,總是用float或者display:inline-block實現(xiàn),但是這兩種方法都會有各種問題,比如浮動會影響父元素以及兄弟元素的樣式,需要清除浮動
現(xiàn)在用flex會很方便,并且是彈性布局
HTML代碼:

<ul>
 <li>音樂</li>
 <li>影視</li>
 <li>旅游</li>
</ul>

CSS代碼:

ul{
  display: flex;         
}
li{
  flex: 1;
  text-align: center;
  line-height: 100px;
}

效果如圖所示:


我們只要在HTML代碼里面多加兩個li元素,導航便彈性變化



不需要改變css代碼,即可在導航欄中增加項目

3. 有時候需要做成左圖右文字的樣式,如下圖所示:


此時用flex會很方便
HTML代碼:

<div class="demo">
   <div class="left"></div>
   <div class="right">
      <p>Iphone7 PLUS XXXXXXXXXX</p>
      <span>總?cè)藬?shù)99</span>
      <span>剩余人數(shù)33</span>
      <div class="btn">立即參與</div>
   </div>
</div>

CSS代碼:

.demo{
  display: flex;                /*設置為flex布局*/
  justify-content: space-around;
}
.demo > div{
  flex: none;
}
.left{
  width: 200px;
  height: 200px;
  background: #d4cdcd;
}
.right{
  width: 380px;
  height: 200px;
}

甚至有多列布局,


HTML代碼:

<div class="demo">
   <div class="left"></div>
   <div class="center">
      <p>description</p>
      <p>description</p>
      <p>description</p>
      <span>description</span>
   </div>
   <div class="btn">確認</div>
   <div class="btn">取消</div>
</div>

CSS代碼:

.demo{
  width: 600px;
  height: 150px;
  border: 1px solid #b7b2b7;
  margin: 30px auto;
  padding-top: 17px;
  display: flex;                /*設置為flex布局*/
  justify-content: space-around;
}
.demo > div{
  flex: none;
}

4. 固定百分比布局:

HTML代碼:

<div class="demo">
   <div class="item item1"></div>
   <div class="item item2"></div>
   <div class="item item3"></div>
   <div class="item item4"></div>
</div>

(1) 等分布局:



CSS代碼:

.demo{
  display: flex;             
}
.item{
  flex: 1;
}

(2)某一個固定



CSS代碼:

.demo{
  display: flex;    
}
.item{
  flex: 1;
}
.item2{
  flex: 0 0 50%;
}

(3)某兩個固定



CSS代碼:

.demo{
  display: flex;    
}
.item{
  flex: 1;
}
.item2{
  flex: 0 0 50%;
}
.item4{
  flex: 0 0 20%;
}

(4)三個固定



CSS代碼:

.demo{
  display: flex;           
}
.item{
  flex: 1;
}
.item1{
  flex: 0 0 10%;
}
.item2{
  flex: 0 0 50%;
}
.item4{
  flex: 0 0 20%;
}

5. 圣杯布局,如圖所示


HTML代碼:

<div class="demo">
   <div class="header">頭部</div>
   <div class="body">
      <div class="left">left</div>
      <div class="center">center</div>
      <div class="right">right</div>
   </div>
   <div class="footer">底部</div>
</div>

CSS代碼:

.demo{
  display: flex;
  flex-direction: column;            
}
.demo div{
  flex: 1;
}
.body{
  display: flex;  
} 
.header,.footer,.left,.right{
  flex: 0 0 20%!important;
}

6. 輸入框布局,有時需要在輸入框的前部添加提示,或者后部添加按鈕,如圖所示:



HTML代碼:

<div class="demo">
   <span class="tip"></span>
   <input type="text" name="" />
   <button>search</button>
</div>

CSS代碼:

.demo{
  display: flex;
}
input{
  flex:1;
}

7. 底部footer固定在底部,但是不是fixed定位

頁面會經(jīng)常用到固定的底欄,但是當頁面內(nèi)容過少時,footer會到頁面中間,下面用flex來解決



HTML代碼:

<div class="demo">
   <div class="main">這是主要內(nèi)容</div>
   <div class="footer">這是底部</div>
</div>

CSS代碼:

.demo{
    display: flex;
    flex-direction: column;
}
.main{
    flex: 1;
}
.footer{
    width: 100%;
    height: 120px;
}
  1. 流式布局 ,如下如所示:



    HTML代碼如下:

<div class="demo">
   <div class="item"></div>
   <div class="item"></div>
   <div class="item"></div>
   <div class="item"></div>
</div>

CSS代碼:

.demo{
    width: 258px;
    height: 300px;
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
}
.item{
    flex: 0 0 33.333333%;
    height: 80px;
    box-sizing: border-box;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,083評論 1 92
  • 轉(zhuǎn)載自阮一峰博客 上一篇文章介紹了Flex布局的語法,今天介紹常見布局的Flex寫法。你會看到,不管是什么布局,F(xiàn)...
    林初盛閱讀 683評論 0 4
  • 轉(zhuǎn)自:《http://blog.csdn.net/magneto7/article/details/7085447...
    json_jie閱讀 5,313評論 0 5
  • 尋根溯源話布局 一切都始于這樣一個問題:怎樣通過 CSS 簡單而優(yōu)雅的實現(xiàn)水平、垂直同時居中。記得剛開始學習 CS...
    Gaizka閱讀 20,805評論 9 19
  • 1. class 和 id 的使用場景? class適用于類選擇器,設置元素的class屬性,為元素指定類名。多個...
    ShawnRong閱讀 321評論 0 0

友情鏈接更多精彩內(nèi)容