Blogger Information
Blog 14
fans 0
comment 0
visits 7486
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2022.10.26第十课:flex容器与项目常用属性的学习
启动未来
Original
635 people have browsed it

flex容器与项目常用属性

一、笔记

flex:Flexible Box 模型,通常被称为 flexbox,是一种一维的布局模型。它给 flexbox 的子元素之间提供了强大的空间分布和对齐能力。

flexbox 是一种一维的布局,是因为一个 flexbox 一次只能处理一个维度上的元素布局,一行或者一列。作为对比的是另外一个二维布局 CSS Grid Layout,可以同时处理行和列上的布局。

flex布局常用属性,分为容器属性和项目属性:

  • 容器元素指的是显性声明display:flexdisplay:inline-flex的元素;
  • 项目元素指的是容器元素的子元素,注意,只是子元素,孙元素及之后的都不是
  • 容器元素也可以成为父级容器元素的项目元素,同理,项目元素也可以成为下级元素的容器元素

概念1:主轴:主轴由 flex-direction 定义,交叉轴垂直于它,布局的方向有行和列,例如flex-direction:row,那么row就是主轴,垂直于rowcolumn就是交叉轴。
概念2:交叉轴:垂直于flex-direction属性值定义的主轴的轴就是交叉轴

概念3:起始线、终止线:start/end。主轴是row的情况下,起始线是容器的最左边,终止线是容器的最右边;主轴是column的情况下,默认,起始线是容器的顶部,终止线是容器的底部。


二、flex布局常用属性-容器属性

1、display

  • display:flex:块容器
  • dispaly:inline-flex:行内容器

2、flex-direction

  • 语法:flex-direction:row/column/row-reverse/column-reverse
  • 表示flex容器的排列方向:行/列/行逆序/列逆序

3、flex-wrap

  • 语法:flex:wrap/nowrap
  • 对于flex容器,项目的子元素总宽度大于容器最大宽度。如果flex-wrap的值设置为wrap,所以项目的子元素换行显示。

重点记忆一:

4、语法糖:flex-flow

  • 2和3中的两个属性:flex-directionflex-wrap可以由一个属性flex-flow代替
  • 例:设置弹性布局的方向为row,不换行,代码表示为flex-flow:row nowrap;

5、justify-content

  • justify-content属性用来设置所有项目元素在主轴方向上对齐,主轴方向是通过 flex-direction 设置的方向
  • 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:容器的剩余空间平均分配到元素之间,所以所有元素之间间隔相等

6、align-items

  • align-items属性设置所有项目元素在交叉轴上的对齐方式,其属性值主要有4个。
  • 这个属性的初始值为stretch,这就是为什么flex 元素会默认被拉伸到最高元素的高度。实际上,它们被拉伸来填满 flex 容器 —— 最高的元素定义了容器的高度。
  • 语法:align-itemes
  • align-items:stretch
  • align-items:flex-start(默认值)
  • align-items:flex-end
  • align-items:center

—- 注意—-

为了与grid布局同步记忆,我们可以:

将上述5中的justify-content可用place-content来代替;
将上述5中的align-items可用place-items来代替;

—-总结—-

通过以上分析,我们可以将flex布局中主要的容器属性归纳如下

  • display: 容器类型(块或行内)
  • flex-flow: 主轴方向与是否换行
  • place-content: 项目在”主轴”上的排列方式
  • place-items: 项目在”交叉轴”上的排列方式

三、flex布局常用属性-项目属性

为了更好地控制单个flex项目元素的排列方式,有5个属性可以作用于它们:

1、 flex-grow

  • 用来表示项目元素在主轴上有剩余空间时,是否自动增大,以占满剩余空间,(默认0)

2、 flex-shrink

  • 用来表示项目元素在主轴空间不不够时候是否自动缩小,以适应容器空间大小,(默认是1)

3、 flex-basis

  • 用来表示或计算项目元素的宽高,(默认值是auto),表示自动,也就是完全根据子列表项自身尺寸渲染。在Flex布局中,flex-basis优先级是比width高的(可以理解为覆盖),渲染的优先级为min-width > || max-width > width > Content Size.

4、语法糖:flex

  • 1\2\3中的三个属性,可以统一由一个属性或简写flex代替,主要有以下几种形式
  • 明确概念:响应指的是项目大小是否自动适应容器大小调整而自动调整大小
  • flex:0 1 auto 默认值,也就是部分响应;
  • flex:1 1 auto 完全响应;
  • flex:0 0 auto 完全不响应

4、 place-self

  • 主要用来设置单个项目元素在交叉轴上的对齐方式
  • 主要的值有3个:start、end、center。注意align-itemsplace-items是设置全部的,而place-self是局部也就是单个项目元素的设置

5、order

  • order属性主要用来设置单个项目元素的显示顺序,数值越大越靠后排列;
  • 值可以是负数。

—-总结—-

**我们可以将flex项目元素的属性概括如下

  • flex: 项目在”主轴”上的缩放比例与宽度
  • place-self 某项目在”交叉轴”上的排列方式
  • order: 项目在”主轴”上的排列顺序

—-实例代码如下—-

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>主轴与交叉轴的互换:align-contents与align-items</title>
  8. <style>
  9. .box {
  10. display:flex;
  11. flex-direction:row-reverse;
  12. background-color: lightblue;
  13. width:500px;
  14. height:300px;
  15. /* 1.项目的主轴为row时 */
  16. /* flex-flow:row nowrap; */
  17. /* 所有项目元素起始线对齐 */
  18. /* justify-content:start; */
  19. /* 所有项目元素终止线对齐 */
  20. /* justify-content:end; */
  21. /* 所有项目主轴线中间对齐 */
  22. /* justify-content:center; */
  23. /* 两端对齐 */
  24. /* justify-content:space-between; */
  25. /* 每个元素左右分配同样的空间 */
  26. /* justify-content:space-around; */
  27. /* 每个间距左右空间大小相等,间距相等 */
  28. /* justify-content:space-evenly; */
  29. /* 2.项目的主轴为column时 */
  30. flex-flow:row nowrap;
  31. /* 所有项目元素起始线对齐 */
  32. justify-content:start;
  33. /* 所有项目元素终止线对齐 */
  34. justify-content:end;
  35. /* 所有项目主轴线中间对齐 */
  36. justify-content:center;
  37. /* 两端对齐 */
  38. justify-content:space-between;
  39. /* 每个元素左右分配同样的空间 */
  40. justify-content:space-around;
  41. /* 每个间距左右空间大小相等,间距相等 */
  42. justify-content:space-evenly;
  43. /* 3.项目在交叉轴上的对齐 */
  44. align-items:start;
  45. align-items:end;
  46. align-items:center;
  47. /* 交叉轴上的这三个属性不能用,无论交叉轴是横向的row还是纵向的column */
  48. /* align-items:space-between;
  49. align-items:space-around;
  50. align-items:space-evenly; */
  51. }
  52. .one,.two,.three {
  53. width:100px;
  54. height:100px;
  55. background-color: lightgreen;
  56. border:1px solid #000;
  57. /* flex-grow:1; */
  58. flex-shrink:1;
  59. flex-basis:1;
  60. }
  61. .three {
  62. order:2;
  63. place-self:center;
  64. }
  65. .two {
  66. order:1;
  67. }
  68. .one {
  69. order:3;
  70. place-self:end;
  71. place-self:start;
  72. place-self:center;
  73. }
  74. </style>
  75. </head>
  76. <body>
  77. <div class="box">
  78. <div class="one">One</div>
  79. <div class="two">Two</div>
  80. <div class="three">Three
  81. <br>has
  82. <br>extra
  83. <br>text
  84. </div>
  85. </div>
  86. </body>
  87. </html>
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:下次记得在“我的课程作业”中提交作业
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post