目录
1.Flex布局的介绍:
Flex布局(Flexible Box Layout)是CSS中用来创建灵活布局的一种布局方式。它设计用来处理一维布局,可以很好地解决各种屏幕尺寸和不同设备的问题。在Flex布局中,元素可以自动调整大小并排列,以适应不同的屏幕尺寸和设备。
Flex布局主要基于一个容器,可以是任何HTML元素,例如div、section、article等。该容器中包含若干个项目(item),可以是任何子元素,例如div、span、p等。
2.Flex布局原理
Flex布局的原理主要是通过给父盒子添加flex属性,来控制子盒子的位置和排列方式。采用flex布局的元素,称为flex容器(flex container),简称“容器”,它的所有子元素自动成为容器成员,称为flex项目(flex item)简称“项目”。
在Flex布局中,子元素的float、clear和vertical-align属性将失效。Flex布局通过主轴和侧轴来确定元素的位置和排列方式。主轴方向就是项目的排列方向,可以是水平方向(row)或垂直方向(column)。侧轴方向则是与主轴方向垂直的方向,对于row主轴,侧轴是垂直向下(vertical),对于column主轴,侧轴是水平向右(horizontal)。
通过设置flex属性,可以控制子元素在主轴和侧轴上的排列方式和对齐方式。例如,通过设置flex-direction属性来决定主轴的方向,从而决定子元素的排列方式;通过设置justify-content属性来决定子元素在主轴上的对齐方式;通过设置align-items属性来决定子元素在侧轴上的对齐方式。
总之,Flex布局的原理是通过给父盒子添加flex属性,并设置相关属性来控制子盒子的位置和排列方式,从而实现灵活的页面布局。
3.常见父元素属性
3.1 flex-direction
决定主轴的方向,即项目的排列方向。可选值有:row(默认值,水平方向)、row-reverse(水平方向,反向排列)、column(垂直方向)和column-reverse(垂直方向,反向排列)。
3.2 justify-content
设置的是主轴方向的子元素排列方式。定义了在主轴上如何对齐项目。可选值有:flex-start(默认值,起点对齐)、flex-end(终点对齐)、center(居中对齐)和space-between(两端对齐,项目之间的间距相等)、space-around(每个项目两侧的间距相等)和space-evenly(每个项目之间的间距和两端的间距相等)。
3.3 flex-wrap
flex布局子元素默认是不换行的,需要设置才能实现换行。决定项目在主轴上是否换行。可选值有:nowrap(默认值,不换行)、wrap(换行)和wrap-reverse(反向换行)。
3.4 align-items
设置的是侧轴上的子元素排列方式(单行)。定义了在交叉轴上如何对齐项目。可选值有:stretch(默认值,项目伸展以占据整个容器)、flex-start(起点对齐)、flex-end(终点对齐)、center(居中对齐)和baseline(项目的第一行文字的基线对齐)。
3.5 align-content
设置的是侧轴上的子元素,针对于多行,在单行中没有效果。定义了在交叉轴上如何对齐多行。只有在项目在主轴上换行时才有效。可选值有:stretch(默认值,多行在交叉轴上伸展以占据整个容器)、flex-start、flex-end、center和space-between、space-around和space-evenly。
3.6 flex-flow
是flex-direction和flex-wrap的简写形式,用于设置主轴和交叉轴的排列方式。
4.Flex布局中子元素属性
4.1 flex属性
用于设置项目的弹性大小。可以设置1个值(主轴上的弹性大小)、2个值(主轴和交叉轴上的弹性大小)或3个值(主轴、交叉轴和弹性比例)。
4.2 flex-slfe属性
用于设置项目的弹性生长空间。其值表示当空间有多余时,项目可以占用多少空间。
4.3 flex-shrink
用于设置项目的弹性缩小空间。其值表示当空间不足时,项目可以缩小多少空间。
4.4 flex-basis
用于设置项目在交叉轴上的初始大小。
5. 每个属性的代码示例:
<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: flex-end;
align-content: center;
}
.flex-item {
flex: 1 1 200px;
background-color: #ccc;
margin: 10px;
text-align: center;
}
</style>
</head>
<body>
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
</div>
</body>
</html>
在上面这个例子中,我们创建了一个名为"flex-container"的div元素,它使用Flex布局并包含五个名为"flex-item"的子div元素。我们使用了以下Flex布局的属性:
display: flex;
:将容器设置为Flex布局。flex-direction: row;
:设置主轴方向为水平方向。flex-wrap: wrap;
:设置项目在主轴上是否换行。justify-content: flex-start;
:在主轴上对齐项目。align-items: flex-end;
:在交叉轴上对齐项目。align-content: center;
:在交叉轴上对齐多行项目。flex: 1 1 200px;
:设置项目的弹性大小,这里表示每个项目占用200px的空间,当空间有多余时,项目不会增长,当空间不足时,项目可以缩小。
通过调整这些属性的值,您可以实现不同的布局效果。
6.总结:
学习Flex布局能把网页一些复杂的布局,简单化,比如之前学的float浮动,一般在使用浮动以后我们需要考虑消除浮动,要是内容进行修改,可能会导致之前的内容改变。但是使用Flex布局以后,这些影响会少很多,当然还是会存在一些问题,这个时候我们就要考虑在什么时候使用float,和flex布局了。总的来说,flex布局还是很有必要学习的。