今天正好复习到flex布局,因为flex弹性盒布局在咱们前端开发中尤其重要因此拿出来单独总结一下,顺便讲一下常见的几种居中方式前端
<style>
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.flexBox {
/* display: flex; */
width: 200px;
height: 200px;
margin: 10px;
background-color: aqua;
}
.item {
height: 100px;
width: 100px;
border: 1px solid black;
background-color: rgb(116, 226, 42);
}
</style>
<div class="flexBox">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
复制代码
这是没加flex布局时的子元素排列状况↓bash
.item {
float: left;//添加浮动
height: 100px;
width: 100px;
border: 1px solid black;
background-color: rgb(116, 226, 42);
}
复制代码
.flexBox {
display: flex;//给父容器添加flex盒子模型
width: 200px;
height: 200px;
margin: 10px;
background-color: aqua;
}
复制代码
.flexBox {
display: flex;
flex-wrap: wrap;//容许换行排列
width: 200px;
height: 200px;
margin: 10px;
background-color: aqua;
}
复制代码
display: flex
设置为flex盒子模型,在父容器下设置这个,此时在父容器下的全部元素都具备弹性,也就是能够伸缩了。flex-direction: row
此属性设置flex布局中主轴方向(子元素的排列方向),默认row即从左到右,还有row-reverse从右到左,column从上到下,column-reverse从下到上,提及flex布局中有2个轴,元素就是依靠这2个轴进行对齐,一个是主轴,也就是子元素的排列方向,默认row即为水平轴。默认从左到右排序。如今把主轴方向改成row-reverse
即为水平从右到左排列↓布局
如今子元素调了一个头开始排序。接下来使用column
试试↓学习
column-reverse
也同样↓
flex-wrap: nowrap
这个属性上面也接触过了,也就是设置flex布局中子元素的换行状况,默认nowrap是不换行若是空间够好说,空间不够就要挤压元素了。可选值为:nowrap不换行,wrap可换行,wrap-reverse换行且反转。先试试wrap于nowrap区别↓wrap-reverse
是怎么回事↓
wrap-reverse
就是新行的位置变了,变成了上面,通常咱们写字,新行都在下面,而这个反转,就把新行写在了上方。
flex-flow: row nowrap
这是一个复合属性,也就是把flex-direction
和flex-wrap
合并在一个属性上。这个属性能够同时设置flex的主轴方向和换行方式。也能够分开单独设置。justify-content: flex-start
这是属性设置的是主轴的对齐方式,以前没有设置对齐方式就是一个挨着一个排列,看图最容易明白。align-items:stretch
此属性设置flex布局下单行时的侧轴对齐状况。align-content:stretch
设置flex布局中多行时的侧轴对齐状况,把每一行看做一个元素进行对齐,与justify-content相似。flex:0 1 auto
这是一个复合属性,能够同时设置flex-grow、flex-shrink、flex-basis,分别为子元素扩展比例、收缩比例、基础比例。接下来依次讲解flex-grow:0
设置子元素的扩展比例默认0,不容许负值。说白了就是当设置了扩展比例以后,若是父元素还有剩余空间,则这部分空间由全部设置扩展比例的子元素按比例分配。flew-shrink:1
设置子元素的收缩比例,默认为1,不容许负。如今知道为何,空间不足的时候子元素会默认收缩吗,由于有默认收缩比例,而扩展比例默认为0即不分配额外空间。flex-basis:auto
设置元素的基准伸缩比例,默认auto状况下,元素的宽度由width或者内容决定。若是全部子元素的基准值之和大于剩余空间,则会根据每项设置的基准值,按比率伸缩剩余空间。align-self:auto
设置子元素自身的侧轴对齐方式,此属性能够单独设置每一个子元素在侧轴上的对齐。order:0
设置每一个元素的排列顺序,数值越小排在越前面,也就是按照给定优先级排列元素。margin:0 auto
+text-align:center
这个设置前提是父元素要有宽高,只设置元素的水平居中以及此元素的子元素水平居中。
line-height:子元素高度
父元素设置display:flex
+justify-content:center
子元素自动水平居中,若是要垂直也居中则还要设置align-items:center
或者align-content:center
此时子元素都水平垂直居中 flex
align-self:center
,垂直轴为主轴时也是同样。 父元素给个定位属性和高宽,子元素设置position:absolute
+left:50%
+top:50%
+transform:translate(-50%,-50%)
,transform属性能够换成margin-left:-(子元素宽度一半)
和margin-top:-(子元素高度一半)
这样就能水平垂直居中了ui
position:absolute
+margin:auto
+top:0
+left:0
+right:0
+bottom:0
,这样也能实现水平垂直居中了,过有些繁琐就是了