CSS display:flex的示例


0.前言

在編寫下圖類似的HTML時,我最初使用的float,發現浮動的寫法很不方便,后面經百度改用display:flex進行布局,並對這一CSS屬性產生了濃厚的興趣。

 

通過幾行代碼輕松解決了左右對齊顯示,並且意外發現通過 align-items: center 還可以實現上下對齊居中

我正在使用 styled-components 去實現前端效果,所以代碼分為樣式部分style.js和頁面部分index.js

style.js:

 1 export const Legend = styled.div`
 2   width: 100%;
 3   display: flex;
 4   display: -webkit-flex;
 5   margin:10px 0px;
 6 
 7   .left {
 8     text-align: left;
 9     font-size: 16px;
10 
11     img{
12       margin-right: 5px;
13     }
14   }
15 
16   .right {
17     flex: 1;
18     display: flex;
19     display: -webkit-flex;    
20     align-items: center;          
21     justify-content: flex-end;
22   }
23 `;

index.js:

 1           <Divider>圖例</Divider>
 2           {
 3             this.state.thematicLayers.length>0?(
 4               this.state.thematicLayers.map(item => {
 5                 return (
 6                   <Legend>
 7                     <div className='left'>
 8                       <img src={item.tPic} />{item.tName}
 9                     </div>
10                     <div className='right'>
11                       <Switch />
12                     </div>
13                   </Legend>
14                 )
15               })
16             ):(
17               <div>暫無圖層數據</div>
18             )
19           }

 下面進入正題,Flex是彈性布局的意思,可以為任意元素指定為Flex布局

1 .box{
2     display: flex;
3     display: -webkit-flex;     /*兼容Safari(ios)*/
4 }

1.flex-direction 屬性

主要參數: row | row-reverse | column | column-reverse

主要代碼:

 1 export const FlexBox = styled.div`
 2   width: 1000px;
 3   margin: 0 auto;
 4   background: #7B68EE
 5   display: flex;
 6   display: -webkit-flex;
 7   flex-direction: row | row-reverse | column | column-reverse;
 8 `;
 9 
10 export const FlexBoxItem = styled.div`
11   background: #FFD700;
12   width: ${props => props.width?props.width:'100px'};
13   height: ${props => props.width?props.width:'100px'};
14   margin: 10px;
15 `;

row

(默認)水平方向,起點在左端

row-reverse

水平方向,起點在右端

column

垂直方向,起點在上邊沿

column-reverse
垂直方向,起點在下邊沿

 2.flex-warp 屬性

主要參數:nowrap | wrap | wrap-reverse

主要代碼:

 1 export const FlexBox = styled.div`
 2   width: 500px;
 3   margin: 0 auto;
 4   margin-top: 100px;
 5   background: #7B68EE
 6   display: flex;
 7   display: -webkit-flex;
 8   flex-warp: nowrap | wrap | wrap-reverse;
 9 `;
10 
11 export const FlexBoxItem = styled.div`
12   background: #FFD700;
13   width: ${props => props.width?props.width:'100px'};
14   height: ${props => props.width?props.width:'100px'};
15   margin: 10px;
16 `;

nowrap

不換行,會擠在一行,之前設定的寬度會失效,margin仍有效,圖一為三個,圖二為多個

     

wrap

換行,且第一行在上方

wrap-reverse

 換行,且第一行在下方

3.flex-flow屬性

(flex-direction和flex-wrap的簡寫)
主要參數:<flex-direction> || <flex-wrap>
主要代碼:這里不放代碼了和上面雷同,寫法比如flex-flow: wrap-reverse column | flex-flow: wrap兩個值都需要就以空格分開,或者可以寫其中一個默認為row nowrap,放幾個示例
wrap column
靠左,垂直
wrap-reverse column
靠右,垂直

 4.justify-content屬性

主要參數: flex-start | flex-end | center | left | right | space-between | space-around | space-evenly | stretch | safe | unsafe | baseline | first baseline | last baseline

主要代碼:雷同不放
flex-start
(默認)起點對齊

flex-end

終點對齊,注意這邊和上面的flex-direction:row-reverse不同,他並沒有調整子元素的順序

center

居中

space-between
兩端對齊,子元素之間間隔相等

space-around

均勻排列,每個元素周圍分配相同的空間(好了,是時候和margin說再見了)
 
space-evenly
均勻排列,每個元素之間的間隔相等
 

5.align-items 屬性

定義在交叉軸上的對齊方式

主要參數: flex-start | flex-end | center | baseline | stretch

主要代碼:雷同不放
flex-start
靠上對齊

flex-end

靠下對齊

center

垂直居中(賊好用,我不管我要標紅)

baseline

第一行文字對齊,這個可以用來做效果

 大致就是以上這些,連代碼帶查資料寫了2個多小時,腦殼疼


 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM