Blogger Information
Blog 94
fans 0
comment 0
visits 92712
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
【CSS】布局技术一:Flex 布局技术(一维)
可乐随笔
Original
670 people have browsed it

Flex 布局(一维)

flex: 弹性盒布局

Flex 术语

  1. flex 容器: display: flex / inline-flex
  2. flex 项目: flex 容器的子元素(仅限子元素,可嵌套)
  3. flex 主轴: 项目排列参考线
  4. flex 交叉轴: 与主轴垂直的参考线

主轴,交叉轴不可见, 仅供布局参考

Flex 属性

(一) 容器属性

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

(二) 项目属性

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

更多: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout

示例代码

  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>flex属性简介</title>
  8. </head>
  9. <body>
  10. <div class="container">
  11. <div class="item">item1</div>
  12. <div class="item">item2</div>
  13. <div class="item">item3</div>
  14. </div>
  15. <style>
  16. /* flex容器 */
  17. .container {
  18. width: 450px;
  19. height: 50px;
  20. /* flex: 行内块 */
  21. display: flex;
  22. /* 1. 默认状态 */
  23. /* 主轴方向 */
  24. /* flex-direction: row; */
  25. /* 是否换行 */
  26. /* flex-wrap: nowrap; */
  27. /* 主轴排列 */
  28. /* justify-content: start; */
  29. /* 单行(不换行) */
  30. align-items: stretch;
  31. /* 多行(换行) */
  32. align-content: start;
  33. /* ---------------------------- */
  34. /* flex-flow: flex-direction flex-wrap; */
  35. flex-flow: row nowrap;
  36. /* 为了与grid统一记忆,使用`place-`为前缀的属性替换原来flex- */
  37. /* justify-content -> place-content 替换; */
  38. place-content: start;
  39. /* ( align-items, align-content ) -> place-items 替换; */
  40. place-items: stretch;
  41. /* 将 5 个 容器属性 , 减少到 3 个 */
  42. /* ---------------------------- */
  43. /* 3. 自定义属性值 */
  44. /* (1) flex-flow:主轴方向, 多行容器 */
  45. /* flex-flow: row nowrap;
  46. flex-flow: column nowrap;
  47. flex-flow: column wrap; */
  48. /* (2) place-content: 主轴排列与"对齐"(通过分配剩余空间实现) */
  49. place-content: start;
  50. /* 居右 */
  51. place-content: end;
  52. /* 居中 */
  53. place-content: center;
  54. /* 二端对齐 */
  55. place-content: space-between;
  56. /* 分散对齐 */
  57. place-content: space-around;
  58. /* 平均对齐 */
  59. place-content: space-evenly;
  60. /* (3) place-items: 交叉轴排列 */
  61. place-items: stretch;
  62. /* place-items: start;
  63. place-items: end;
  64. place-items: center; */
  65. /* 因为是单行容器,所以不涉及对齐方式 */
  66. }
  67. /* flex项目 */
  68. .container > .item {
  69. /* width: 100px; */
  70. background-color: lightgreen;
  71. /* 项目属性 */
  72. /* (1) flex : 项目缩放比例与宽度 */
  73. /* flex: flex-grow flex-shrink flex-basis */
  74. /* flex: 放大比例 缩小比例 计算宽度 */
  75. /* 1. 默认状态(部分响应): 不放大,允许缩小,宽高自动 */
  76. flex: 0 1 auto;
  77. flex: initial;
  78. /* 2. 完全响应: 允许放大,允许缩小,宽高自动 */
  79. flex: 1 1 auto;
  80. flex: auto;
  81. /* 3. 完全不响应: 禁止放大,禁止缩小,宽高自动 */
  82. flex: 0 0 auto;
  83. /* flex: 0 0 200px; */
  84. /* min-width > flex-basis > width */
  85. /* min-width: 250px; */
  86. flex: none;
  87. /* 常用缩写 */
  88. flex: 1;
  89. /* 完整 */
  90. /* flex: 1 1 auto;
  91. flex: auto; */
  92. /* flex: 1; */
  93. /* flex: 2; */
  94. /* flex: 9; */
  95. }
  96. /* 例如, 有一个三列布局, 中间一列的宽度,是二边的3倍 */
  97. .container .item:first-of-type,
  98. .container .item:last-of-type {
  99. flex: 1;
  100. background-color: yellow;
  101. }
  102. .container .item:first-of-type + * {
  103. background-color: wheat;
  104. flex: 3;
  105. /* 自定义某个项目在交叉轴上的排列 */
  106. /* place-self: start;
  107. place-self: end; */
  108. }
  109. /* 第一个 */
  110. .container .item:first-of-type {
  111. order: -1;
  112. background-color: violet;
  113. }
  114. /* 第二个 */
  115. .container .item:first-of-type + * {
  116. order: 1;
  117. }
  118. /* 第三个 */
  119. .container .item:last-of-type {
  120. order: 0;
  121. }
  122. </style>
  123. </body>
  124. </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