国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

關于CSS3中Flexbox布局的圖文代碼分享

來源:懂視網 責編:小采 時間:2020-11-27 18:51:50
文檔

關于CSS3中Flexbox布局的圖文代碼分享

關于CSS3中Flexbox布局的圖文代碼分享:CSS3為我們提供了一種可伸縮的靈活的web頁面布局方式-flexbox布局,它具有很強大的功能,可以很輕松實現很多復雜布局,在它出現之前,我們經常使用的布局方式是浮動或者固定寬度+百分比來進行布局,代碼量較大且難以理解。為了更好理解flexbox布局,這里
推薦度:
導讀關于CSS3中Flexbox布局的圖文代碼分享:CSS3為我們提供了一種可伸縮的靈活的web頁面布局方式-flexbox布局,它具有很強大的功能,可以很輕松實現很多復雜布局,在它出現之前,我們經常使用的布局方式是浮動或者固定寬度+百分比來進行布局,代碼量較大且難以理解。為了更好理解flexbox布局,這里
CSS3為我們提供了一種可伸縮的靈活的web頁面布局方式-flexbox布局,它具有很強大的功能,可以很輕松實現很多復雜布局,在它出現之前,我們經常使用的布局方式是浮動或者固定寬度+百分比來進行布局,代碼量較大且難以理解。

為了更好理解flexbox布局,這里首先要介紹幾個概念:

如果所示:

(1)主軸(側軸),flexbox布局里面將一個可伸縮容器按照水平和垂直方向分為主軸或側軸,如果你想讓這個容器中的可伸縮項目在水平方向上可伸縮展開,那么水平方向上就是主軸,垂直方向上是側軸,反之亦然;

(2)主軸(側軸)長度,當確定了哪個是主軸哪個是側軸之后,在主軸方向上可伸縮容器的尺寸(寬或高)就被稱作主軸長度,側軸方向上的容器尺寸(寬或高)就被稱作側軸長度;

(3)主軸(側軸)起點,主軸(側軸)終點,例如主軸方向是水平方向,通常在水平方向上網頁布局是從左向右的,那么可伸縮容器的左border就是主軸起點,右border就是主軸終點,側軸是在垂直方向,通常是從上到下的,所以上border就是側軸起點,下border就是側軸終點;

(4)伸縮容器:如果要構建一個可伸縮的盒子,這些可伸縮的項目必須要由一個display:flex的屬性的盒子包裹起來,這個盒子就叫做伸縮容器;

(5)伸縮項目:包含在伸縮容器中需要進行伸縮布局的元素被稱作伸縮項目;

明確以上概念之后就可以來構建flexbox布局了;

第一步,構建一個flexbox容器,并在容器中放置幾個可伸縮項目,如下:

css代碼:

.flex-container{
 display:flex;
 width:600px;
 height:230px;
 background-color: #ccc;
 }.flex-item{
 background-color:blue;
 width: 100px;
 margin: 5px; }

HTML代碼:

<p class="flex-container">
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 </p>

效果如下:

其中四個可伸縮的項目在水平方向上被排列成了一行,同時可伸縮項目相左對齊;

display:flex代表這個容器是一個可伸縮容器,還可以取值為inline-flex,兩者的區別在于前者將這個容器渲染為塊級元素,后者將其渲染為內聯元素。

這里有幾個默認的屬性雖然沒有設置,但是默認值確實起作用了,它們是:

flex-direction屬性,它的取值為row,column,column-reverse,row-reverse,默認值是row,表示在水平方向上展開可伸縮項,如果取column代表在垂直方向上展開可伸縮項目,column-reverse,row-reverse代表相反方向,通俗講,flex-direction屬性就是用來定義主軸側軸方向的。給以上效果添加flex-direction:column效果如下:

justify-content屬性,用來表示可伸縮項目在主軸方向上的對齊方式,可以取值為flex-start,flex-end,center,space-between,space-around,其中flex-start,flex-end,表示相對于主軸起點和終點對齊,center表示居中對齊,space-between表示兩端對齊并將剩余空間在主軸方向上進行平均分配,space-around表示居中對齊然后在主軸方向上將剩余空間平均分配

justify-content:space-between

css代碼:

.flex-container{
 display:flex;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-between;
 }.flex-item{
 background-color:blue;
 width: 100px;
 margin: 5px;
 }

效果如下:

可以看到它將各個可伸縮項目在主軸方向上兩端對齊并平分了剩余空間;

justify-content:space-around

css代碼:

.flex-container{
 display:flex;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 }.flex-item{
 background-color:blue;
 width: 100px;
 margin: 5px;
 }

效果如下:

可以看到這個屬性讓可伸縮項目沿著主軸方向進行了居中對齊并且均分了剩余空間;

align-items屬性:該屬性是用來表示可伸縮項目在側軸方向上的對齊方式,可取的值有flex-start,flex-end,center,baseline,stretch,需要解釋的是baseline值,它是按照一個計算出來的基準線然后讓這些項目沿這個基準線對齊,基準線的計算取決于可伸縮項目的尺寸及內容,如下:

align-items:baseline;

css代碼:

.flex-container{
 display:flex; 
 flex-direction: row;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 }
 .flex-item{
 background-color:blue;
 width: 100px;
 margin: 5px;; }
 .a{
 margin-top: 10px;
 height: 100px;
 }
 .b{
 margin-top: 20px;
 height: 150px;
 }
 .c{
 margin-top: 30px;
 height: 80px;
 }

HTML代碼:

 <p class="flex-container">
 <p class="flex-item a">A</p>
 <p class="flex-item b">B</p>
 <p class="flex-item c">A</p>
 <p class="flex-item a">B</p>
 </p>

效果如下:

可以看到四個可伸縮項目在側軸方向上(垂直方向)高度不一,margin不一樣,但是最后都按照計算出來的一個基準線對齊;

align-items:stretch;

這個是取值會讓可伸縮項目在側軸方向上進行拉伸,前提是這些項目在側軸方向上沒有設置尺寸,否則會按照你設置的尺寸來渲染。

css代碼:

.flex-container{
 display:flex;
 flex-direction: row;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:stretch;
 }
 .flex-item{
 background-color:blue;
 width: 100px; /*height: 100px;*/
 margin: 5px;; }

HTML代碼:

<p class="flex-container">
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 </p>

效果如下:

可以看到這些可伸縮項目在側軸方向上被拉伸了,因為在垂直方向上沒有設置高度。

到目前為止,我們所有的伸縮項目都是在一行或者一列上進行的,并沒有進行換行和換列,flex-wrap屬性表示是否支持換行或者換列,它有nowrap,wrap,wrap-reverse三個取值,nowrap是默認值,表示不換行或者換列,wrap表示換行或者換列,wrap-reverse表示支持換行或者換列,但是會沿著相反方向進行排列(如主軸是垂直方向換行后就按照先下后上的順序來排列伸縮項)

css代碼:

.flex-container{
 display:flex;
 flex-direction: row;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 flex-wrap: wrap;
 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }

HTML代碼:

<p class="flex-container">
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p>
 <p class="flex-item ">A</p>
 <p class="flex-item ">B</p></p>

效果如下:

可以看到伸縮項增多之后一行難以放下的時候會接著換行。wrap屬性保證換行后按照正常的從上到下順序排列

align-content屬性用來表示換行之后各個伸縮行的對齊方式,它的取值有 stretch,flex-start,flex-end,center,space-between,space-around,意義和align-items屬性取值意義相同,上面我們將7個伸縮項目分成了兩行來排列,

將css代碼添加align-content屬性,html代碼不變,如下:

CSS代碼:

.flex-container{
 display:flex;
 flex-direction: row;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 flex-wrap: wrap;
 align-content: space-between;
 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }

效果如下:

可以看到兩個伸縮行在側軸(垂直)方向上兩端對齊了。

flex-flow屬性,該屬性是個復屬性,它是flex-direction和flex-wrap的復合屬性,flex-direction:row;flex-wrap:wrap就等同于flex-flow:row wrap

order屬性,該屬性用來表示伸縮項目的排列方式,正常情況下伸縮項目會按照主軸起點到主軸終點排列,遇到換行或者換列會按照從側軸起點到終點進行排列(除非設置了某些 對齊方式的reverse),但是某些情況下這種默認顯示順序不符合要求,可以采用給伸縮項添加order屬性來指定排列順序,默認情況下,每個伸縮項的order都是0,改屬性可正可負,越大的值會被排列在越后面。

css代碼:

 .flex-container{
 display:flex;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline; 
 flex-flow: row wrap;
 align-content: space-between;

 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }
 .order1{
 order:1;
 }
 .order2{
 order:2;
 }

HTML代碼:

<p class="flex-container">
 <p class="flex-item order1">1</p>
 <p class="flex-item order2">2</p>
 <p class="flex-item ">3</p>
 <p class="flex-item ">4</p>
 <p class="flex-item ">5</p>
 <p class="flex-item ">6</p>
 <p class="flex-item ">7</p>
 <p class="flex-item ">8</p></p>

效果如下:

默認情況下,會按照HTML的順序1-8進行顯示,但是由于給p1和2設置了大于0的order,所以他們被放在了最后顯示(因為其他沒有被設置的p的order默認屬性都是0)

margin屬性在flexbox布局中有很強大的作用,如果給某個可伸縮項設置某個方向上的margin為auto,那么這個可伸縮項就會在這個方向上占用該方向的剩余空間來作為自己的這個方向上的margin。

css代碼:

.flex-container{
 display:flex;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 flex-flow: row wrap;
 align-content: space-between;

 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }
 .a{
 margin-right:auto;
 }

HTML代碼:

<p class="flex-container">
 <p class="flex-item a">1</p>
 <p class="flex-item ">2</p>
 <p class="flex-item ">3</p></p>

效果如下:

由于給伸縮項1添加了margin-right為auto,所以它獨占了本行的剩余空間作為它的right margin值。

利用這個特性,我們在flexbox布局中很容易實現可伸縮元素的垂直水平居中,

css代碼;

.flex-container{
 display:flex;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 flex-flow: row wrap;
 align-content: space-between;

 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }
 .a{
 margin:auto;
 }

HTML代碼:

<p class="flex-container">
 <p class="flex-item a">1</p></p>

效果如下:

align-self屬性,該屬性是給各個可伸縮項設置自己的在側軸上的對齊方式的,之前在容器上設置的align-item屬性是作為一個整體設置的,所有的元素對齊方式都一樣,align-self屬性會覆蓋之前的align-item屬性,讓每個可伸縮項在側軸上具有不同的對齊方式,取值和align-item相同:

css代碼:

.flex-container{
 display:flex;
 flex-direction: row;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 align-content: space-between;

 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }
 .a{
 align-self:flex-start ;
 }
 .b{
 align-self:flex-end;
 }
 .c{
 align-self:center;
 }

html代碼:

<p class="flex-container">
 <p class="flex-item a">1</p>
 <p class="flex-item b">2</p>
 <p class="flex-item c">3</p></p>

效果如下:

可以看到三個伸縮項在側軸上被賦予了不同的對齊方式。

flex屬性,這個屬性是加在伸縮項上面的,它定義了伸縮項如何分配主軸尺寸,通常取值為auto或者數字,auto瀏覽器會自動均分,數字會按照伸縮項所占的數字比重來分配空間,

這個屬性會覆蓋伸縮項在主軸上設定的尺寸,當給主軸上伸縮項設定了尺寸(寬或高)和這個屬性的時候,事實上還是會按照這個屬性來進行空間分配。

css代碼:

.flex-container{
 display:flex;
 flex-direction: row;
 width:600px;
 height:230px;
 background-color: #ccc;
 justify-content: space-around;
 align-items:baseline;
 align-content: space-between;

 }
 .flex-item{
 background-color:blue;
 width: 100px;
 height: 70px;
 margin: 5px;; }
 .a{
 align-self:flex-start ;
 flex:1;
 }
 .b{
 align-self:flex-end;
 flex:2;
 }
 .c{
 align-self:center;
 flex:1;
 }

HTML代碼:

<p class="flex-container">
 <p class="flex-item a">1</p>
 <p class="flex-item b">2</p>
 <p class="flex-item c">3</p></p>

效果如下:

可以看到伸縮項盡管設置了寬度,但是最終還是按照我們設置的flex比例對水平空間進行了分割。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

關于CSS3中Flexbox布局的圖文代碼分享

關于CSS3中Flexbox布局的圖文代碼分享:CSS3為我們提供了一種可伸縮的靈活的web頁面布局方式-flexbox布局,它具有很強大的功能,可以很輕松實現很多復雜布局,在它出現之前,我們經常使用的布局方式是浮動或者固定寬度+百分比來進行布局,代碼量較大且難以理解。為了更好理解flexbox布局,這里
推薦度:
標簽: 圖文 代碼 布局
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 天美传媒精品一区 | 久久国内精品 | 亚洲精品98久久久久久中文字幕 | 可播放的免费男男videos不卡 | 综合 欧美 亚洲日本 | 欧美日韩成人 | 欧美高清一区二区 | 97国产精品欧美一区二区三区 | 日韩午夜免费电影 | 国产精品高清一区二区三区不卡 | 日本成人一区二区 | 亚洲综合婷婷 | 免费大黄网站 | 国产一区二区三区免费在线观看 | 91插插插插插 | 亚洲第一视频网 | 国产日韩欧美在线观看不卡 | 欧美第5页 | 2021国产成人精品久久 | 亚洲图片国产日韩欧美 | 在线视频一二三区2021不卡 | 国产精品1区2区3区在线播放 | 国产v精品成人免费视频400条 | 亚洲精品午夜国产va久久成人 | 国产精品视_精品国产免费 国产精品视频第一区二区三区 | 日韩有码在线观看 | 国产一级二级三级 | 久久精品一区二区三区不卡牛牛 | 国产精品高清一区二区 | 看一级特黄a大片日本片 | 国内精品一区二区在线观看 | 91精品国产99久久 | 欧美日韩国产片 | 国内精品视频一区二区三区 | 亚洲日本一区二区三区高清在线 | 欧美一级色图 | 亚洲伊人网站 | 国产精品香蕉一区二区三区 | 国产高清不卡码一区二区三区 | 久久久久久91精品色婷婷 | 精品久久久一二三区 |