CSS收获

136 阅读2分钟

position:fixed失效

正常按照视口的定位,出现元素所有的父级transformperspective 或 filter不为null会出现positon:fixed失效

  • 解决 将元素直接插入操作dom到body下

背景模糊 filter/backdrop-filter

  • filter 作用于当前元素,并且它的后代元素也会继承这个属性
  • backdrop-filter 作用于元素背后的所有元素

BFC

  • 根元素,也就是 HTML 元素

  • 浮动元素,即使用了 float 属性且值不为 none

  • 绝对定位元素

  • 块级容器(如 display 的值为 inline-blocks、table-cells、table-captions)

  • overflow 的值不为 visible 的元素

  • 使用了 display: flow-root 的元素。这是新出的值,专门用来创建无副作用的 BFC。兼容性存疑,比较少用。

处理水平居中问题

margin:auto
margin-inline: auto; /* 真正的只是水平居中 */
margin-block   /* 真正的只是竖直居中 */

定位insert

类似于top、left、bottom、right合集

- top: 0; 
- bottom: 0;
- left: 0; 
- right: 0; 
+ inset: 0;

clamp

clamp() 函数的作用是把一个值限制在一个上限和下限之间,当这个值超过最小值和最大值的范围时,在最小值和最大值之间选择一个值使用。它接收三个参数:最小值、首选值、最大值。

last-child不生效的原因

可能同类型的元素后面出现了一个其他类型的标签

  • 选中倒数第二个元素 :nth-last-child(2)

clamp兼容性css

clamp(MIN, VAL, MAX) 其实就是表示 max(MIN, min(VAL, MAX))

样式百分比

  • 如果widthheight的值为百分比,那么他的值的参照为父元素的宽高
  • margin和padding 父元素的宽度来进行计算的
  • topbottom是相对于父元素的高 leftright是相对于父元素的宽
  • 定位
  1. 先找到有没有定位的元素
  2. 如果向上找到了定位元素,以定位元素的宽高为参照
  3. 如果向上没有找到定位元素,就以html标签为参照
  • translate 根据元素自身的大小

fixed定位失效,transform影响普通元素

只要position:fixed;元素的父元素有transform样式,那么这个元素的fixed定位就会失效;无论是transform:translate(),scale()还是rotate()。