可适应移动,PC端灵巧的弹性盒子——Flex
可适应移动,PC端灵巧的弹性盒子——Flex
一、felx属性
1.display:flex; 就是将元素设置为弹性容器。若子元素过多时,会有缩放,相当于浮动,但是区别于浮动的一点是其宽高仍然存在。
display:inline-flex; 类似于行内元素。 设置flex之后,子元素的float clear vertical 都会失效
2.设置主轴方向
flex-direction:row; 默认,横向一行排列
row-reverse; 反转,横向一行排列
flex-direction:column; 纵向一行排列
column-reverse 反转纵向一行排列
要和主轴的反转区别:比如反转是主轴跑到了右边,从右到左为box1 box2 box3。这个是从左到右box1 box2 box3 /
主轴方向上的对齐方式
justify-content:flex-start; 子元素位于弹性盒的开头
flex-end; 子元素位于弹性盒的结尾,
center; 子元素位于弹性盒中间
justify-content: space-around; 子元素之前之后中间都有空白空间
justify-content: space-between; 子元素之前之后都没有空白空间,只有子元素中间有空白空间
侧轴方向上的对齐方式:
align-items: stretch; / stretch的英文翻译是拉长、撑大、有弹性 默认值 如果子元素没有高度或者高度为自动(auto)时,将占满整个容器的高。 //
align-items: flex-start; / 子元素在交叉轴的起点对齐 /
align-items: flex-end; / 子元素在交叉轴的终点对齐 /
align-items: center; /子元素在交叉轴的中点对齐 /
align-items: baseline; / 子元素在第一行文字的基线对齐 /
交叉轴方向上的留白空间:没有
设置弹性子元素在一根轴线上排不下时的换行方式。
flex-wrap: nowrap; / 默认值,不换行 /
flex-wrap: wrap; / 换行 ,换行之后宽度都变的一致,即为自己设置的宽度,它不再会对自己做压缩/
flex-wrap: wrap-reverse; / 换行,换行之后宽度一致,即为自己设置的宽度,它不再会对自己做压缩,而且第一行显示在下方 /
设置多根轴线的对齐方式:
align-content属性: 设置多根轴线的对齐方式,如果只有一根轴线,属性失效。
flex-wrap: wrap ;/这是换行操作,换行之后宽度都变的一致,即为自己设置的宽度,它不再会对自己的宽高做压缩/
align-content: stretch; /默认值,轴线占满整个交叉轴.这个属性曾在交叉轴垂直对齐方式出现过/
align-content: flex-start; / 与交叉轴的起点对齐 /
align-content: flex-end; / 与交叉轴的终点对齐 /
align-content: center; / 与交叉轴的中点对齐 /
align-content: space-around; / 在交叉轴的之上、中间、之下都有空间
align-content: space-between; /* 只在交叉轴的轴线中间有留白 /
下面这些都是添加在子元素上的属性
order属性: 调整子元素的排列次序
order:数值; 数值不加单位,默认值为0,数值越大,排列越靠后
flow-grow属性: 调整子元素的放大比例。
flex-grow: 0; / 0表示正常状态,不放大 /
/ 1表示一旦发生变化,弹性子元素的宽度也会做出相应的调整。
1表示把剩下的剩余空间分成三份,一个子元素都占其中的一份 /
flex-grow: 2; / nth-child(2)相当于是挑出子元素中的第二个盒子进行设置,设置为2之后,发现wrap2相当于分成了四份,box2自己占了两份。 /
flex-shrink: 0; / 因为弹性盒子display:flex设置之后,当盒子个数过多时,小盒子会自动缩放,当拉着浏览器的右侧伸缩时,盒子会跟着伸缩,一起缩放。但是加了flex-shrink之后,盒子就不会跟着缩放了,实实在在的有多宽就是多宽,会出现水平滚动条 /
flex-shrink: 1; / 设置为1之后就可以缩放了 /
align-self属性: 调整弹性容器中被选中的子元素的对齐方式
align-self: auto; / 默认值,继承了父容器的align-items属性,如果没有父元素,值为stretch /
align-self: stretch; / 占满整个容器的高度 /
align-self: flex-start; / 交叉轴的起点对齐 /
align-self: flex-end; / 交叉轴的终点对齐 /
align-self: center;
align-self: baseline ;/ 子元素的第一行文字的基线对齐 */
二、使用步骤
1.详细讲解
可以自行感受flex的妙用,所有的代码如下
2.具体代码
代码如下(示例):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
#father{
display: flex;
flex-direction:row;
flex-direction:row-reverse;
flex-direction:column;
flex-direction:column-reverse;
justify-content:flex-start;
justify-content:flex-end;
justify-content:center;
justify-content:space-around;
justify-content:space-between;
align-items: stretch;
align-items: flex-start;
align-items: flex-end;
align-items: center;
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;
flex-wrap: wrap ;
align-content: stretch;
align-content: flex-start;
align-content: flex-end;
align-content: center;
align-content: space-around;
align-content: space-between;
flex-grow: 0;
flex-grow: 0;
flex-grow: 2;
flex-shrink: 0;
flex-shrink: 1;
align-self: auto;
align-self: stretch;
align-self: flex-start;
align-self: flex-end;
align-self: center;
align-self: baseline;
align-items: baseline;
width: 500px;
height: 500px;
border: 1px solid black;
}
.son{
width: 100px;
height: 100px;
background: yellow;
border: 1px solid black;
margin: 1px;
}
</style>
</head>
<body>
<div id="father">
<div class="son">1</div>
<div class="son">2</div>
<div class="son">3</div>
<!-- <div class="son">4</div>-->
<!-- <div class="son">5</div>-->
<!-- <div class="son">6</div>-->
<!-- <div class="son">7</div>-->
<!-- <div class="son">8</div>-->
</div>
</body>
</html>
总结:
灵活运用flex弹性盒子对页面开发大有益处

浙公网安备 33010602011771号