批改状态:合格
老师批语:下次记得在“我的课程作业”中提交作业
flex:Flexible Box 模型,通常被称为 flexbox,是一种一维的布局模型。它给 flexbox 的子元素之间提供了强大的空间分布和对齐能力。
flexbox 是一种一维的布局,是因为一个 flexbox 一次只能处理一个维度上的元素布局,一行或者一列。作为对比的是另外一个二维布局 CSS Grid Layout,可以同时处理行和列上的布局。
flex布局常用属性,分为容器属性和项目属性:
display:flex或display:inline-flex的元素;概念1:主轴:主轴由 flex-direction 定义,交叉轴垂直于它,布局的方向有行和列,例如
flex-direction:row,那么row就是主轴,垂直于row的column就是交叉轴。
概念2:交叉轴:垂直于flex-direction属性值定义的主轴的轴就是交叉轴概念3:起始线、终止线:
start/end。主轴是row的情况下,起始线是容器的最左边,终止线是容器的最右边;主轴是column的情况下,默认,起始线是容器的顶部,终止线是容器的底部。
display:flex:块容器dispaly:inline-flex:行内容器flex-direction:row/column/row-reverse/column-reverseflex:wrap/nowrap重点记忆一:
flex-flowflex-direction和flex-wrap可以由一个属性flex-flow代替row,不换行,代码表示为flex-flow:row nowrap;row:无论是否设置宽高,都能看到效果;column:只有设置容器和项目的宽高才能看到效果justify-content:stretch:所有项目元素沿主轴自动拉伸排列justify-content:flex-start:所有项目元素沿主轴起始线排列(默认值)justify-content:flex-end:所有项目元素沿主轴终止排列justify-content:center:所有项目元素排列在主轴中间位置justify-content:space-around:每个项目元素的左右空间相等。justify-content:space-between:项目元素排列好之后的剩余空间拿出来,项目在容器的两端对齐justify-content:evenly:容器的剩余空间平均分配到元素之间,所以所有元素之间间隔相等align-items属性设置所有项目元素在交叉轴上的对齐方式,其属性值主要有4个。align-itemesalign-items:stretchalign-items:flex-start:(默认值)align-items:flex-endalign-items:center为了与
grid布局同步记忆,我们可以:将上述5中的
justify-content可用place-content来代替;
将上述5中的align-items可用place-items来代替;
通过以上分析,我们可以将flex布局中主要的容器属性归纳如下
display: 容器类型(块或行内)flex-flow: 主轴方向与是否换行place-content: 项目在”主轴”上的排列方式place-items: 项目在”交叉轴”上的排列方式为了更好地控制单个flex项目元素的排列方式,有5个属性可以作用于它们:
min-width > || max-width > width > Content Size.flex代替,主要有以下几种形式flex:0 1 auto 默认值,也就是部分响应;flex:1 1 auto 完全响应;flex:0 0 auto 完全不响应align-items或place-items是设置全部的,而place-self是局部也就是单个项目元素的设置order属性主要用来设置单个项目元素的显示顺序,数值越大越靠后排列;**我们可以将flex项目元素的属性概括如下
flex: 项目在”主轴”上的缩放比例与宽度place-self 某项目在”交叉轴”上的排列方式order: 项目在”主轴”上的排列顺序
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>主轴与交叉轴的互换:align-contents与align-items</title><style>.box {display:flex;flex-direction:row-reverse;background-color: lightblue;width:500px;height:300px;/* 1.项目的主轴为row时 *//* flex-flow:row nowrap; *//* 所有项目元素起始线对齐 *//* justify-content:start; *//* 所有项目元素终止线对齐 *//* justify-content:end; *//* 所有项目主轴线中间对齐 *//* justify-content:center; *//* 两端对齐 *//* justify-content:space-between; *//* 每个元素左右分配同样的空间 *//* justify-content:space-around; *//* 每个间距左右空间大小相等,间距相等 *//* justify-content:space-evenly; *//* 2.项目的主轴为column时 */flex-flow:row nowrap;/* 所有项目元素起始线对齐 */justify-content:start;/* 所有项目元素终止线对齐 */justify-content:end;/* 所有项目主轴线中间对齐 */justify-content:center;/* 两端对齐 */justify-content:space-between;/* 每个元素左右分配同样的空间 */justify-content:space-around;/* 每个间距左右空间大小相等,间距相等 */justify-content:space-evenly;/* 3.项目在交叉轴上的对齐 */align-items:start;align-items:end;align-items:center;/* 交叉轴上的这三个属性不能用,无论交叉轴是横向的row还是纵向的column *//* align-items:space-between;align-items:space-around;align-items:space-evenly; */}.one,.two,.three {width:100px;height:100px;background-color: lightgreen;border:1px solid #000;/* flex-grow:1; */flex-shrink:1;flex-basis:1;}.three {order:2;place-self:center;}.two {order:1;}.one {order:3;place-self:end;place-self:start;place-self:center;}</style></head><body><div class="box"><div class="one">One</div><div class="two">Two</div><div class="three">Three<br>has<br>extra<br>text</div></div></body></html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号