当前位置: 首页 > Web前端 > HTML

FlexLayout入门

时间:2023-04-03 00:33:55 HTML

介绍首先,我们来说说什么是FlexLayout?Flex布局表面上类似于块布局,但它缺少许多可以在块布局中使用的更复杂的文本或文档居中属性,例如浮动和列,同时它获得了一些简单而强大的布局工具,可以自动调整和计算容器空间中元素的大小重要概念Flex容器:父元素显式设置display:flex.Flexitem:flex容器中的子项有一个水平的主轴(mainaxis)和垂直交叉轴(crossaxis),主轴开始的位置称为mainstart,结束位置称为mainend,交叉轴开始的位置和crossstart的结束位置称为crossend,flex容器中的项目将沿主轴或交叉轴排列。介绍完几个重要的概念,下面结合代码介绍相应的属性。flex容器主要有六个属性:flex-direction排列方向可以取四个值:row(默认值):主轴沿水平方向从左到右排列row-reverse:主轴从righttoleftalongthehorizo??ntaldirectioncolumn:主轴沿垂直方向从上到下排列-reverse:主轴从下到上垂直排列1

2
3
.container{display:flex;flex-direction:行;}.item{flex:1;边距:10px;background-color:#ccc;}当flex-direction为row时(默认值):当flex-direction为column时(默认值):flex-wrap该属性决定是否换行,可以取三个值nowrap(默认value):nowrapwrap:wrap,第一行在上面wrap-reverse:linebreak,第一行在下面.container{display:flex;弹性包装:nowrap;宽度:400px;}.item{宽度:200px;边距:10px;background-color:#ccc;}当flex-wrap属性值为默认nowrap时,容器下面的元素不会换行,如果容器项的宽度超过容器,easyitem的宽度会在部分。当flex-wrap属性值为默认wrap时,容器下面的元素当元素超出容器宽度时,会wrap显示flex-flowflex-flow属性是flex-direction和flex-的简写wrap属性,默认为rownowrapjustify-content该属性定义了项目在主轴上的对齐方式,可以取五个值:flex-start(默认值):左对齐flex-end:右对齐center:水平居中space-between:两端对齐space-around:itemtwo边间距相等。container{display:flex;justify-content:flex-start;}当justify-content为flex-start时,主轴上的item会左对齐当justify-content为flex-end时,主轴上的item会左对齐当justify-content为flex-end时,主轴上的item会居中对齐当justify-content为space-between时,主轴上的item会等间距对齐当justify-content为space时-around,item两边的间距相等,item之间的间距是sidespacing的两倍。align-itemsalign-items控制项目在垂直交叉轴上的对齐方式。flex-start有五个值:横轴起点对齐,即上对齐flex-end:横轴终点对齐,即下对齐中心:横轴中间对齐,即垂直居中baseline:沿基线对齐,基线与其交叉起始边距边缘的最大距离Items放置在该行的交叉起始边缘上(即基线取自距交叉轴最远的项目的底部边框)。如果该项目在所需轴上没有基线,则基线是从弹性项目的边框合成的stretch(defaultvalue):默认值,如果没有设置item的高度,item的高度会被拉伸到和pre-container一样的高度,有height设置,以setting属性为准。容器{显示:flex;高度:400px;对齐项目:弹性启动;border:1pxsolid#000;}.item{宽度:200px;高度:200px;边距:010px;background-color:#ccc;}当align-items设置为flex-start时,靠近顶部当align-items的值为flex-end时,靠近底部对齐。当align-items的值为flex-center时,垂直居中。容器{显示:flex;高度:400px;对齐项目:弹性启动;border:1pxsolid#000;}.item{宽度:200px;高度:200px;边距:010px;背景色:#ccc;}.item:nth-child(1){height:100px;line-height:100px;}当align-items的值为baseline时,表示基线对齐。取值:flex-start:对齐横轴起点,即顶部对齐flex-end:对齐横轴终点,即对齐底部中心:对齐横轴中间,即垂直居中拉伸(默认值):item的高度与容器的高度相同space-between:两端对齐space-around:item两侧的间距相等。container{显示:弹性;高度:800px;宽度:400px;弹性包装:包装;对齐内容:flex-start;border:1pxsolid#000;}.item{宽度:200px;高度:200px;边距:10px;background-color:#ccc;}这个是当align-content的值为flex-start时,由于该值与align-item一致,所以其他属性不再举例Item属性order这个属性可以定义items的顺序排列方式,值越小越靠前,默认值为0.container{display:flex;高度:400px;对齐内容:flex-start;border:1pxsolid#000;}.item{width:200px;高度:200px;边距:10px;背景颜色:#ccc;}.item:nth-child(1){order:2;}.??item:nth-child(2){order:1;}.item:nth-child(3){order:-1;}flex-grow和flex-shrink这两个属性体现了Flex布局的灵活性。它们定义了容器中项目的放大和缩小。flex-grow默认值为0,即默认即使有剩余空间也不会自动放大。flex-shrink默认值为1,即在空间不足的情况下,容器项会自动收缩。container{display:flex;宽度:1000px;border:1pxsolid#000;}.item{宽度:200px;高度:200px;边距:10px;background-color:#ccc;}默认情况下,当容器的宽度大于项目的宽度时,当flex-grow的默认值为0时,项目不会自动拉伸当flex-grow的值为设置为1,项目将自动拉伸以填满剩余空间。item:nth-child(1){flex-grow:2;}如图,当容器中第一个item的flex-grow设置为2时,其他item的flex-grow为1时,容器的剩余空间会按照flex-grow.container{display:flex;的比例分配给各个item。宽度:500px;border:1pxsolid#000;}.item{宽度:200像素;高度:200px;边距:10px;background-color:#ccc;}当flex-shrink的值默认为1时,可以看到当容器的item宽度大于容器宽度时,会自动收缩。当flex-shrink手动设置为0时,不会收缩。如下图所示,flex-basis属性设置了item在主轴上占据的空间。不设置该值时,默认为auto,即item的原始大小。也可以手动设置主轴占用的空间。container{display:flex;宽度:500px;边框:1px实心#000;}.item{宽度:100px;高度:200px;边距:10px;背景色:#ccc;}.item:nth-child(1){flex-basis:150px;}flex简写flex属性是flex-grow、flex-shrink和flex-basis的简写形式。默认值为01自动。这个属性有两个shortcut值,auto(11auto),none(00auto)align-self这个属性定义了单个item的对齐方式,取值和表现与align-items基本一致,有一个附加值auto,默认值,表示继承容器-items属性的对齐方式,值auto|弹性启动|弹性端|中心|基线|stretch.container{显示:flex;宽度:500px;border:1pxsolid#000;}.item{宽度:100px;高度:200px;边距:10px;背景色:#ccc;}.item:nth-child(1){height:100px;align-self:center;}这里是一个align-self:center的例子,其余表现与align-items一致,除了align-self作用于单个项目