前端面试要点(三):CSS

148 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

前言

在面试和复习过程中总结的一些前端知识点,记录下来,风格较简洁,尽量涵盖内容要点和简单例子。本文是前端面试系列第三篇:CSS 相关要点,持续更新...

一、介绍下盒子模型

盒子模型从内到外包含:内容区域、内间距区域、边框区域、外边距区域。

box-sizing 属性决定了盒子的 width、height 涉及的范围:

  • box-sizing: content-box 代表 width、height 是内容区域的
  • box-sizing: border-box 代表 width、height 是边框区域的

二、css 选择器的优先级

  1. 第一优先级:!important 会覆盖页面内任何位置的元素样式
  2. 内联样式,如 style="color: green",权值为1000
  3. ID选择器,如 #app,权值为0100
  4. 类、伪类、属性选择器,如 .foo, :first-child, div[class="foo"],权值为0010
  5. 标签、伪元素选择器,如 div::first-line,权值为0001
  6. 通配符、子类选择器、兄弟选择器,如*, >, +,权值为0000
  7. 继承的样式没有权值

三、什么是 BFC,有什么作用,如何形成 BFC

BFC 全称:Block Formatting Context, 名为 "块级格式化上下文"。

BFC 是一个完全独立的空间(布局环境),让空间里的子元素不会影响到外面的布局。

列举几个触发 BFC 的 CSS 属性:

  • overflow: hidden
  • display: inline-block
  • position: absolute
  • position: fixed
  • display: table-cell
  • display: flex

四、position 有哪些值,作用分别是什么

  • static(静态定位) 对象遵循标准文档流,top, right, bottom, left 等属性失效。
  • relative(相对定位) 对象遵循标准文档流,top, right, bottom, left 等属性相对于该对象在标准文档流中的位置进行偏移。
  • absolute(绝对定位) 对象脱离标准文档流,使用 top, right, bottom, left 等属性进行绝对定位,相对于 static 以外的第一个父元素进行绝对定位。
  • fixed(固定定位) 对象脱离标准文档流,使用 top, right, bottom, left 等属性进行绝对定位,相对于浏览器窗口进行绝对定位。
  • sticky(粘性定位)一开始为  static,在一定的滚动高度时变成 fixed,常用于固定菜单。

五、flex 布局的好处

按行或者按列形成弹性布局,自适应,在内部触发 BFC,浏览器都支持。

六、双飞翼/圣杯布局是什么

圣杯布局也叫双飞翼布局,本质上是三栏布局,两边宽度固定,中间宽度自适应。

七、css3 有哪些新特性

transform、transition、animation

八、css 样式隔离手段

  • BEM:在命名上用前缀分开,优点是简单,缺点是容易出错;
  • css module:将 css 文件模块化,优点是简单易用,缺点是依赖 css-loader;
  • 使用 less 等预处理器,优点是可嵌套、可读性高,缺点是需要借助编译工具;
  • vue 的 <style> 标签有个 scoped 属性。

九、层叠上下文是什么

层叠上下文是 html 元素的一个三维概念,一般当一个元素的 position 不是 static,并且设置了 z-index 后,它的层级会比其他元素高。

十、浮动元素会造成什么影响,如何清除浮动

浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素。浮动会导致父元素高度坍塌。

清除浮动:在浮动元素下面添加空元素:

```
<div style="clear:both; height:0;"></div>
```

十一、让一个 div 上下居中对齐

body { display: flex; }
div { margin: auto; }