博客列表 >什么是flex布局,它的常用属性有哪些

什么是flex布局,它的常用属性有哪些

刚哥哥
刚哥哥原创
2020年12月24日 16:37:003145浏览

什么是flex 布局;

flex是 flexible box 的缩写,就是弹性布局的意思。

任何一个元素(块元素、行内块元素、行内元素),都可以设置为弹性盒子属性。

语法:块元素: display:flex; 行内元素:display:inline-flex;

注意:webkit 内核的浏览器,须要加上 -webkit 前缀;

  1. 须要注意的是:设置为flex 布局后,子元素 clear(清除浮动)、float(浮动)和vertical-align(垂直对齐方式)属性将失效;

flex布局的基本概念:

  1. 设置为flex布局的元素,称为flex容器,它的所有子元素就是容器成员,被称为项目。

flex容器默认有两个轴:

水平主轴(main axis)和垂直交叉轴(cross axis)。

  1. 主轴的开始位置叫做 main start(与容器边框的交叉点),结束位置叫做 main end;
  2. 交叉轴的开始位置叫做cross start,结束位置叫做 cross end;

项目(容器成员)默认沿着主轴排列,单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size;

容器的属性:

1、flex-direction 设置项目的排列方向;

值:

  1. row (默认值):主轴为水平方向,起点在左端;
  2. row-reverse: 主轴为水平方向,起点在右端;
  3. column:主轴为垂直方向,起点在上端。
  4. column-reverse: 主轴为垂直方向,起点在下端。

2、flex-wrap 设置项目换行方式;

值:

  1. nowrap(默认值) :不换换;
  2. wrap :换行,第一行在上方;
  3. wrap-reverse: 换行,第一行在下方;

3、flex-flow(常用,设置主轴方向和换行方式)

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

值;

  1. row(默认值):
  2. row-reverse
  3. column
  4. column-reverse
  5. nowrap | wrap | wrap-reverse

4、justify-content :(常用)定义项目在主轴上的对齐方式。

值:

  1. flex-start(默认值):左对齐
  2. flex-end:右对齐
  3. center 居中
  4. space-between:两端对齐,项目之间的间隔都相等。
  5. space-around:每个项目两侧的间隔相等。所以,项目之间的间 隔比项目与边框的间隔大一倍。

5、align-items: 定义项目在交叉轴上的对齐方式;

值:

  1. flex-start:交叉轴的起点对齐。
  2. flex-end:交叉轴的终点对齐。
  3. center:交叉轴的中点对齐。
  4. baseline: 项目的第一行文字的基线对齐。
  5. stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

6、align-content :定义项目在多行容器中的对齐方式;如果项目只有一行容器,该属性不起作用。

值:

  1. flex-start:与交叉轴的起点对齐。
  2. flex-end:与交叉轴的终点对齐。
  3. center:与交叉轴的中点对齐。
  4. space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  5. space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间 隔大一倍。
  6. stretch(默认值):轴线占满整个交叉轴。

项目的属性:

1、order属性;定义项目在主轴上的排列顺序;

  1. 语法: *{order: 1}数字1是根据需求自己定义的值,填写整数,*表示须要设置排序的项目;

2、flex属性:定义项目的缩放比例与基准款宽;

  1. flex-grow/flex-shrink/flex-basis的简写,默认值为0 1 auto,后面2各属性可选;
  2. flex属性有两个快捷值: noneautonone表示0 0 auto)(auto表示1 1 auto)

3、align-self: 定义单个项目在交叉轴上的对齐方式;可覆盖align-items属性。

  1. 默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

4、flex-grow属性

  1. flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
  2. flex-grow:1;默认值为0

5、flex-shrink属性

  1. flex-shrink:属性定义项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

6、flex-basis属性

  1. flex-basis属性定义项目在分配多余空间之前,项目占据的主轴空间(main size)。浏览 器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
  2. 语法:
  3. .项目 {
  4. flex-basis: <length> | auto; /* default auto */
  5. }
  6. 它可以设为跟widthheight属性一样的值(比如500px),则项目将占据固定空间。

代码练习:

  1. <title>flex布局示例代码</title>
  2. <style>
  3. * {
  4. margin: 0;
  5. padding: 0;
  6. box-sizing: border-box;
  7. }
  8. .rongqi {
  9. width: 480px;
  10. height: 180px;
  11. background-color: skyblue;
  12. display: flex;
  13. /* 设置项目排列方式 */
  14. /* flex-direction
  15. row(默认值):主轴为水平方向,起点在左端。
  16. row-reverse:主轴为水平方向,起点在右端。
  17. column:主轴为垂直方向,起点在上沿。
  18. column-reverse:主轴为垂直方向,起点在下沿。 */
  19. /* flex-direction: row;
  20. flex-direction:row-reverse;
  21. flex-direction: column-reverse;
  22. flex-direction: column; */
  23. /* 设置项目换行方式 */
  24. /* flex-wrap */
  25. /* nowrap: 默认值 不换行
  26. wrap:换行,第一行上方(向下换行)
  27. wrap-reverse: 换行,第一行在下方(向上换行) */
  28. /* flex-wrap:wrap;
  29. flex-wrap: nowrap;
  30. flex-wrap: wrap-reverse; */
  31. /* 设置主轴方向与换行方式 */
  32. /* flex-flow */
  33. /* 垂直(起点在下方),换行 */
  34. /* flex-flow:column wrap; */
  35. /* 水平从左往右排,不换行 */
  36. /* flex-flow: row nowrap; */
  37. /* 垂直(起点在上方),不换行 */
  38. /* flex-flow:column nowrap; */
  39. /* 设置项目在主轴上的对齐方式 */
  40. /* justify-content: */
  41. /* 从左往右排并且对齐,默认值 */
  42. /* justify-content: flex-start; */
  43. /* 从右往左排 并且对齐*/
  44. /* justify-content: flex-end; */
  45. /* 居中排列 */
  46. /* justify-content: center; */
  47. /* 两端对齐,并且项目之间的间隔都相等 */
  48. /* justify-content: space-between; */
  49. /* 每个项目两侧的间隔相等,项目之间的间隔比项目与边框的间隔大一倍 */
  50. /* justify-content: space-around; */
  51. /* 设置项目在交叉轴上的对齐方式 */
  52. /* align-items */
  53. /* flex-start 从交叉轴的起点对齐 */
  54. /* align-items: flex-start; */
  55. /* flex-end 从交叉轴的终点对齐 */
  56. /* align-items: flex-end; */
  57. /* center 从交叉轴的中间点对齐 */
  58. /* align-items: center; */
  59. /* flex-start 从交叉轴的起点对齐 */
  60. /* baseline 从项目的第一行文字基线对齐 */
  61. /* align-items: baseline; */
  62. /* 默认值,如果项目没有设置高度或者设置为auto时,将占满整个容器高度 */
  63. /* align-items:stretch; */
  64. /* 设置项目在多行容器中的对齐方式 */
  65. /* align-content:; */
  66. /* 与交叉轴的起点对齐 */
  67. /* align-content: flex-start; */
  68. /* 与交叉轴的终点对齐 */
  69. /* align-content:flex-end; */
  70. /* 与交叉轴的中间点对齐 */
  71. /* align-content: center; */
  72. /* 与交叉轴的两端(上下/左右)对齐,轴线之间的间隔平均分布 */
  73. /* flex-flow:column wrap; */
  74. /* align-content:space-between; */
  75. /* 每根轴线(水平)上下两侧的间隔相等,靠边框的一侧的间隔是轴线之间的间隔的一半 */
  76. /* align-content: space-around; */
  77. /* 占满整个交叉轴,默认值 */
  78. /* align-content: stretch; */
  79. /* 允许换行 */
  80. /* flex-wrap: wrap; */
  81. /* 设置主轴为水平方向 */
  82. flex-flow: row wrap;
  83. }
  84. .rongqi .xiangmu {
  85. width: 60px;
  86. height: 60px;
  87. background-color: red;
  88. border: 1px solid violet;
  89. }
  90. /* 项目属性 */
  91. /* 项目属性有:
  92. order(排序、默认为零,数字越小排名越靠前,可以为负数)
  93. flex-grow(定义项目的放大比例,默认为0,即如果存在剩余空间也不放大)
  94. flex-shrink(定义项目的缩小比例,默认为1,即如果空间不足,该项目将自动缩小)
  95. flex-basis(定义项目在分配多余空间之前,项目占据的主轴空间(main size),浏览器根据这个属性,计算主轴是否有多
  96. 余空间,它的默认值为auto,即项目原本的大小。值可以设置根宽高一样的值,这样它的空间会被固定)
  97. flex(这属性最常用,flex是 flex-frow、flex-shrink、flex-basis的简写语法,默认值为(0 1 auto),后面两个属性可选,
  98. 快捷值:[auto(1 1 auto)、none (0 0 auto)]语法:flex:flex-grow flex-shrink flex-basis;
  99. align-self(设置单个项目的对齐方式(与其它项目的对齐方式不一样,个性化定制对齐方式)可以覆盖align-itmes属性。默认
  100. 值为 auto,即继承父元素的align-itmes属性,如果没有父元素,则等同于stretch(占满整个容器高度)) */
  101. /* 排列顺序 */
  102. /* .rongqi .xiangmu:first-of-type {
  103. order: 2;
  104. }
  105. .rongqi .xiangmu:nth-of-type(2) {
  106. order: 3;
  107. }
  108. .rongqi .xiangmu:nth-of-type(5) {
  109. order: -1;
  110. } */
  111. /* 放大比例,0为默认,有剩余也不放大;都为1 有剩余空间 等分;某个项目为2,其它为1,为2的项目不为1的项目多占1倍的空间 */
  112. /* .rongqi .xiangmu:nth-of-type(1) {
  113. flex-grow: 0;
  114. flex-grow: 1;
  115. }
  116. .rongqi .xiangmu:nth-of-type(3) {
  117. flex-grow: 0;
  118. flex-grow: 1;
  119. }
  120. .rongqi .xiangmu:nth-of-type(2) {
  121. flex-grow: 2;
  122. flex-grow: 1;
  123. } */
  124. /* 定义项目缩小比例,默认为1,即如果空间不足,该项目将缩小,通过设置值来控制项目是否缩小,多个项目可以分别设置,值越小优先级越高(不缩小) */
  125. /* .rongqi .xiangmu:first-of-type{
  126. flex-shrink:0;
  127. } */
  128. /* 定义项目在分配多余空间之前,项目占据的主轴空间 */
  129. /* .rongqi .xiangmu:first-of-type{
  130. flex-basis: 200px;
  131. }
  132. */
  133. /* 语法:flex:flex-grow flex-shrink flex-basis; */
  134. /* .rongqi .xiangmu:nth-of-type(9){
  135. flex:auto;
  136. flex:auto;
  137. } */
  138. /* 定义单个项目的对齐方式 align-self */
  139. .rongqi .xiangmu:nth-of-type(9) {
  140. align-self: flex-end;
  141. align-self: flex-start;
  142. align-self: center;
  143. align-self: baseline;
  144. align-self: stretch;
  145. }
  146. </style>
  147. </head>
  148. <body>
  149. <div class="rongqi">
  150. <div class="xiangmu">1</div>
  151. <div class="xiangmu">2</div>
  152. <div class="xiangmu">3</div>
  153. <div class="xiangmu">4</div>
  154. <div class="xiangmu">5</div>
  155. <div class="xiangmu">6</div>
  156. <div class="xiangmu">7</div>
  157. <div class="xiangmu">8</div>
  158. <div class="xiangmu">8</div>
  159. <div class="xiangmu">7</div>
  160. </div>
  161. </body>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议