← 返回目录

flex布局

第 24 / 154 卷日期:

animation-iteration-count:动画执行次数,可以设置为一个整数,也可以设置为infinite,意思是无限循环 animation-direction:动画执行方向

animation-paly-state:动画播放状态 animation-fill-mode:动画填充模式

还有多列布局、媒体查询(@media)、混合模式等等,而CSS3如今有很多是我们日常使用到的,比如我们在处理文字溢出时会使用 text-overflow,比如我们需要文字突破限制12像素就可以使用 transform: scale(0.5)来调

整。

flex布局

弹性布局。可以简便、完整、响应式地实现各种页面布局。为盒模型提供最大的灵活性。

父容器和子容器构成,通过主轴和交叉轴控制子容器排列布局,子元素float、clear和vertical-align属性失效

父容器

flex-direction flex-wrap

flex-flow justify-content

align-items align-content

flex-direction

.container {

flex-direction: row | row-reverse | column | column-reverse;

}

决定主轴方向,子元素的排列方向

flex-wrap

.container {

flex-wrap: nowrap | wrap | wrap-reverse;

}

弹性元素永远沿主轴排列,那么如果主轴排不下,通过flex-wrap决定容器内项目是否可换行。

默认情况是不换行,但这里也不会任由元素直接溢出容器,会涉及到元素的弹性伸缩。

flex-flow

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

当flex-grow之和小于1时,只能按比例分配部分剩余空间,而不是全部。

.box {

定义了项目在主轴上的对齐方式

.box {

justify-content: flex-start | flex-end | center | space-between | space-around;

}

flex-start(默认值):左对齐 flex-end:右对齐

center:居中 space-between:两端对齐,项目之间的间隔都相等

space-around:两个项目两侧间隔相等

align-items

.box {

align-items: flex-start | flex-end | center | baseline | stretch;

}

定义项目在交叉轴上如何对齐

flex-start:交叉轴的起点对齐 flex-end:交叉轴的终点对齐

center:交叉轴的中点对齐 baseline: 项目的第一行文字的基线对齐

stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度

align-content

.box {

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

}

定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用

flex-start:与交叉轴的起点对齐 flex-end:与交叉轴的终点对齐

center:与交叉轴的中点对齐 space-between:与交叉轴两端对齐,轴线之间的间隔平均分布

space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍 stretch(默认值):轴线占满整个交叉轴

子容器

order flex-grow

align-self

order

定义item排列顺序,越小越靠前,默认0

flex-grow

定义项目的放大比例(容器宽度>元素总宽度时如何伸展)

默认为0,即如果存在剩余空间,也不放大。

flex-warp:nowrap;不换行的时候,container宽度不够分时,弹性元素会根据flex-grow来决定。

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)

如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍

弹性容器的宽度正好等于元素宽度总和,无多余宽度,此时无论flex-grow是什么值都不会生效。

flex-shrink

定义了项目的缩小比例(容器宽度<元素总宽度时如何收缩),默认为1,即如果空间不足,该项目将缩小。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。

如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

flex-basis

定义分配多余空间前,占据主轴空间默认auto。元素在主轴上的初始尺寸,所谓的初始尺寸就是元素在flex-grow 和flex-shrink生效前的尺寸

flex:1

等分剩余空间

flex: 1 相当于 flex-grow: 1、flex-shrink: 1 和 flex-basis: 0%。

flex 属性是 flex-grow, flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto。后两个属性可选。

优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

flex: 1 = flex: 1 1 0%

flex: 2 = flex: 2 1 0%

flex: auto = flex: 1 1 auto

flex: none = flex: 0 0 auto,常用于固定尺寸不伸缩

aline-self

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

flex-direction:row/column;

align-items:center

//水平局中

flex-direction:row/column;

justify-content:center;

flex: 1 = flex: 1 1 0%

flex: 2 = flex: 2 1 0%

flex: auto = flex: 1 1 auto

flex: none = flex: 0 0 auto,常用于固定尺寸不伸缩

隐藏元素

display:none

不会在页面占据位置渲染树不会包含该渲染对象

不会绑定响应事件会导致浏览器进行重排和重绘

visibility:hidden

占据位置,不更改布局不会响应绑定事件

不会重排但会重绘

opacity:0

元素透明度设置为0 占据位置

能响应绑定事件不能控制子元素展示

不会引发重排,一般会引发重绘

如果利用 animation 动画,对 opacity 做变化(animation会默认触发GPU加速),则只会触发 GPU 层面的 composite,不会触发重绘

设置height width为0

将影响元素盒模型的属性设置为0,若有元素内有子元素或内容,应该设置其overflow:hidden来隐藏其子元素。

元素不可见不占据空间

不响应点击事件

全站分卷索引 · 154 卷
  1. 1代码随想录知识星球精华(最强八股文)第五版(前端篇))
  2. 2html语义化
  3. 3src 和 href 的区别
  4. 4link 与 @import 的区别
  5. 5iframe
  6. 6CSS
  7. 7伪元素和伪类
  8. 8block,inline,inline-block
  9. 9重排、重绘和合成
  10. 10盒子模型
  11. 11margin 合并
  12. 12margin和padding 的值为百分比时
  13. 13浮动
  14. 14定位
  15. 15CSS选择器
  16. 16CSS选择器优先级
  17. 17选择器权重Specificity
  18. 18CSS属性继承
  19. 19不可/可继承属性
  20. 20display: none与 visibility: hidden的区别
  21. 21background-size
  22. 22client、offset&scroll
  23. 23CSS3新特性
  24. 24flex布局
  25. 25常见布局
  26. 26三栏布局
  27. 27垂直居中
  28. 28水平垂直居中
  29. 29CSS画三角形
  30. 30使chrome支持12px以下文字
  31. 31响应式布局
  32. 32媒体查询
  33. 33过渡与动画
  34. 34JavaScript 动画 和 CSS动画
  35. 35SCSS
  36. 36CSS性能优化
  37. 37有哪些数据类型
  38. 38判断数据类型
  39. 39类型转换
  40. 40parseInt&parseFloat
  41. 41浮点数求和步骤
  42. 42十进制小数转二进制
  43. 430.1+0.2 为什么不等于 0.3
  44. 44undefined 和 undeclared 的区别
  45. 45JavaScript NaN 属性
  46. 46isFinite()&isNaN()
  47. 47数组
  48. 48对原数组有影响
  49. 49对原数组无影响
  50. 50数组去重
  51. 51数组拍平
  52. 52ES6新增的数组方法
  53. 53判断是否存在某个值
  54. 54arguments为啥不是数组
  55. 55对象
  56. 56遍历对象的方法
  57. 57判断对象是否具有属性
  58. 58for in 和 for of 的区别
  59. 59继承方式
  60. 60instanceof
  61. 61深浅拷贝
  62. 62freeze属性
  63. 63函数
  64. 64函数柯里化
  65. 65函数的 length
  66. 66箭头函数和普通函数区别
  67. 67构造函数
  68. 68执行上下文
  69. 69作用域
  70. 70作用域和作用域链
  71. 71闭包和内存泄漏
  72. 72this
  73. 73关于 this 的指向问题
  74. 74改变this指向的方法(bind / call / apply)
  75. 75字符串
  76. 76DOM和事件
  77. 77哪些事件支持冒泡
  78. 78阻止冒泡
  79. 79HTMLCollection、NodeList
  80. 80dom.onclick 和 dom.addEventListener的区别
  81. 81e.target和e.currentTarget
  82. 82页面生命周期
  83. 83异步
  84. 84内存管理GC
  85. 85其它
  86. 86JavaScript 中日期时间格式转换
  87. 87input和object实现双向绑定
  88. 88JSON.stringify()
  89. 89escape、encodeURI&encodeURIComponent
  90. 90移动端滚动穿透和溢出
  91. 91ES6
  92. 92Map字典
  93. 93... 与rest
  94. 94proxy
  95. 95模块化
  96. 96Ajax、Fetch和Axios
  97. 97Webpack
  98. 98浏览器:事件循环
  99. 99浏览器内核
  100. 100浏览器同源策略
  101. 101输入URL回车后发生了什么
  102. 102HTTP
  103. 103HTTP 2.0
  104. 104浏览器存储
  105. 105鉴权
  106. 106Webstorage
  107. 107浏览器执行机制
  108. 108AST 抽象语法树
  109. 109性能优化
  110. 110CSS
  111. 111网络相关
  112. 112使用HTTP2.0
  113. 113图片
  114. 114CDN图片
  115. 115其他文件优化
  116. 116降低APP首页开屏渲染时间
  117. 117页面白屏
  118. 118HTTPS中间人攻击
  119. 119Web Worker
  120. 120Service Worker
  121. 121微前端
  122. 122Vue
  123. 123v-show 和 v-if 的区别
  124. 124双向数据绑定的原理
  125. 125Vue中的插槽使用
  126. 126Vue中的key
  127. 127Vue过滤器
  128. 128Vue中Scoped原理
  129. 129Vue中$nextTick的使用
  130. 130Vue中实现组件通信的方式
  131. 131Vue-router
  132. 132Vue路由传参
  133. 133前端路由
  134. 134Vuex
  135. 135虚拟DOM
  136. 136DIFF 算法
  137. 137Vue3和Vue2有哪些区别
  138. 138说一说你对React的理解
  139. 139React事件机制
  140. 140说一说你对react refs的理解
  141. 141react中key的作用
  142. 142组件开发
  143. 143有状态组件和无状态组件
  144. 144函数式组件和类组件的区别
  145. 145PureComponent&Component
  146. 146常见 Hooks
  147. 147状态管理
  148. 148redux toolkit
  149. 149React18新特性
  150. 150client中的createRoot取代以前的ReactDOM.render
  151. 151Suspense
  152. 152新的Hooks
  153. 153VDom一定更快吗
  154. 154Fiber