CSS学习笔记

22 阅读3分钟

为了使一个固定定位的元素不相对于视口进行定位,你需要为容器元素设置transform、perspective、filter三个属性之一(不为默认值none)。这样固定的元素就会相对于该块级元素偏移,而非视口。

组合选择器 相邻兄弟选择器:A + B 普通兄弟选择器:A ~ B 子选择器:A > B 后代选择器:A B

文档中的层叠上下文由满足以下任意一个条件的元素形成:

根元素 () z-index 值不为 auto 的 position 值为非 static

position 值为非 static

一个 z-index 值不为 auto 的 Flex 项目 (Flex item),即:父元素display: flex|inline-flex

opacity 属性值小于 1 的元素

transform 属性值不为 none 的元素

mix-blend-mode 属性值不为 normal 的元素

filter 、perspective 、clip-path 、mask 、motion-path 值不为 none 的元素

perspective 值不为 none 的元素

isolation 属性被设置为 isolate 的元素

在 will-change 中指定了任意 CSS 属性,即便你没有直接指定这些属性的值

CSS继承:

  • 字体相关:font-family、font-style、font-size、font-weight 等;
  • 文本相关:text-align、text-indent、text-decoration、text-shadow、letter-spacing、word-spacing、white-space、line-height、color 等;
  • 列表相关:list-style、list-style-image、list-style-type、list-style-position 等;
  • 其他属性:visibility、cursor 等; 属性选择器
  • [attr]:指定属性的元素;
  • [attr=val]:属性等于指定值的元素;
  • [attr*=val]:属性包含指定值的元素;
  • [attr^=val] :属性以指定值开头的元素;
  • [attr$=val]:属性以指定值结尾的元素;
  • [attr~=val]:属性包含指定值(完整单词)的元素(不推荐使用);
  • [attr|=val]:属性以指定值(完整单词)开头的元素(不推荐使用);

符合以下任一条件的元素都会产生层叠上下文:

  • html 文档根元素
  • 声明 position: absolute/relative 且 z-index 值不为 auto 的元素;
  • 声明 position: fixed/sticky 的元素;
  • flex 容器的子元素,且 z-index 值不为 auto;
  • grid 容器的子元素,且 z-index 值不为 auto;
  • opacity 属性值小于 1 的元素;
  • mix-blend-mode 属性值不为 normal 的元素;
  • 以下任意属性值不为 none 的元素:
    • transform
    • filter
    • perspective
    • clip-path
    • mask / mask-image / mask-border
  • isolation 属性值为 isolate 的元素;
  • -webkit-overflow-scrolling 属性值为 touch 的元素;
  • will-change 值设定了任一属性而该属性在 non-initial 值时会创建层叠上下文的元素;
  • contain 属性值为 layout、paint 或包含它们其中之一的合成值(比如 contain: strict、contain: content)的元素。

如何比较两个元素的层叠等级?

  • 在同一个层叠上下文中,比较两个元素就是按照上图的介绍的层叠顺序进行比较。
  • 如果不在同一个层叠上下文中的时候,那就需要比较两个元素分别所处的层叠上下文的等级。
  • 如果两个元素都在同一个层叠上下文,且层叠顺序相同,则在 HTML 中定义越后面的层叠等级越高。

常见面试题: 1、div居中、弹窗居中 2、多列自适应布局,两列布局 3、rem适配方案 4、多行居左,单行居中 5、页面性能优化,图片,iconfont 6、css3动画,动画卡顿

•	说下你常用的几种布局方式,集中往盒模型、flex布局说(至于grid布局,这个我看过没有用到过)
•	实现水平居中的几种方法?
•	animate和translate有没有用过,一些常见的属性说下?
•	CSS实现宽度自适应100%,宽高16:9的比例的矩形。
•	如何实现左边两栏一定比例,左栏高度随右栏高度自适应