整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

决战“金三银四”,中高级Web前端大厂面试秘籍:CS

决战“金三银四”,中高级Web前端大厂面试秘籍:CSS篇

又到了一年一度的“金三银四的季节了”。不过恐怕大家都有感觉,当下,正面临着近几年来的最严重的互联网寒冬,因此今天的“金三银四”肯定又是一场更为惨烈的江湖厮杀。

为了提升在厮杀中的“生存率”,让我们从面经开始如果吧。这将是一个长篇系列。这篇文章让我们先从CSS开始。

CSS

1. 盒模型

页面渲染时,dom 元素所采用的 布局模型。可通过box-sizing进行设置。根据计算宽高的区域可分为:

  • content-box (W3C 标准盒模型)
  • border-box (IE 盒模型)
  • padding-box
  • margin-box

2. BFC

块级格式化上下文,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。

IE下为 Layout,可通过 zoom:1 触发

  • 触发条件:
  • 根元素
  • positon: absolute/fixed
  • display: inline-block / table
  • float 元素
  • ovevflow !==visible
  • 规则:
  • 属于同一个 BFC 的两个相邻 Box 垂直排列
  • 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠
  • BFC 中子元素不会超出他的包含块
  • BFC 的区域不会与 float 的元素区域重叠
  • 计算 BFC 的高度时,浮动子元素也参与计算
  • 文字层不会被浮动层覆盖,环绕于周围
  • 应用:
  • 阻止margin重叠
  • 可以包含浮动元素 —— 清除内部浮动(清除浮动的原理是两个div都位于同一个 BFC 区域之中)
  • 自适应两栏布局
  • 可以阻止元素被浮动元素覆盖

3.层叠上下文

元素提升为一个比较特殊的图层,在三维空间中 (z轴) 高出普通元素一等。

  • 触发条件
  • 根层叠上下文(html)
  • position
  • css3属性
  • flex
  • transform
  • opacity
  • filter
  • will-change
  • -webkit-overflow-scrolling
  • 层叠等级:层叠上下文在z轴上的排序
  • 在同一层叠上下文中,层叠等级才有意义
  • z-index的优先级最高(从高往低排,顺序如下:)
  • z-index正直
  • z-index 0 / auto
  • 行内元素
  • 浮动元素
  • 块级元素
  • z-index为负
  • background / border

4. 居中布局

  • 水平居中
  • 行内元素: text-align: center
  • 块级元素: margin: 0 auto
  • absolute + transform
  • flex + justify-content: center
  • 垂直居中
  • line-height: height
  • absolute + transform
  • flex + align-items: center
  • table
  • 水平垂直居中
  • absolute + transform
  • flex + justify-content + align-items

5. 选择器优先级

  • !important > 行内样式 > #id > .class > tag > * > 继承 > 默认
  • 选择器 从右往左 解析

6.去除浮动影响,防止父级高度塌陷

  • 通过增加尾元素清除浮动
  • :after /
  • : clear: both
  • 创建父级 BFC
  • 父级设置高度

7.link 与 @import 的区别

  • link功能较多,可以定义 RSS,定义 Rel 等作用,而@import只能用于加载 css
  • 当解析到link时,页面会同步加载所引的 css,而@import所引用的 css 会等到页面加载完才被加载
  • @import需要 IE5 以上才能使用
  • link可以使用 js 动态引入,@import不行

8. CSS预处理器(Sass/Less/Postcss)

CSS预处理器的原理: 是将类 CSS 语言通过 Webpack 编译 转成浏览器可读的真正 CSS。在这层编译之上,便可以赋予 CSS 更多更强大的功能,常用功能:

  • 嵌套
  • 变量
  • 循环语句
  • 条件语句
  • 自动前缀
  • 单位转换
  • mixin复用

面试中一般不会重点考察该点,一般介绍下自己在实战项目中的经验即可~

9.CSS动画

  • transition: 过渡动画
  • transition-property: 属性
  • transition-duration: 间隔
  • transition-timing-function: 曲线
  • transition-delay: 延迟
  • 常用钩子: transitionend
  • animation / keyframes
  • animation-name: 动画名称,对应@keyframes
  • animation-duration: 间隔
  • animation-timing-function: 曲线
  • animation-delay: 延迟
  • animation-iteration-count: 次数
  • infinite: 循环动画
  • animation-direction: 方向
  • alternate: 反向播放
  • animation-fill-mode: 静止模式
  • forwards: 停止时,保留最后一帧
  • backwards: 停止时,回到第一帧
  • both: 同时运用 forwards / backwards
  • 常用钩子: animationend
  • 动画属性: 尽量使用动画属性进行动画,能拥有较好的性能表现
  • translate
  • scale
  • rotate
  • skew
  • opacity
  • color

总结

通常,CSS 并不是重点的考察领域,但这其实是由于现在国内业界对 CSS 的专注不够导致的,真正精通并专注于 CSS 的团队和人才并不多。因此如果能在 CSS 领域有自己的见解和经验,反而会为相当的加分和脱颖而出。

TML基本结构
基本文件格式:一般写的代码需要存储在文件中,比如html代码存储在.html文件中
什么是HTML标签:HTML标签也称为HTML标记,由开始标签和结束标签组成,用于表现结构化的内容,将内容构造成为一个完整的网页。

HTML标签组成
双标签:是指由开始标签和结束标签组成
单标签:是指没有结束标签的标签,由一个标签构成即为开始也是结束
理解:开始标签是被括号包围的元素名,结束标签是被括号包围的斜杠和元素名,如<h1></h1><b></b> 注意:有些HTML元素没有结束标签,比如<br/>

HTML详细说明
html:告诉页面这是一个HTML文档,并声明这个网页是面向那种语言的用户lang=”zh-CN” <!DOCTYPE html>
文档声明:位于文档的首航,告知浏览器文档使用哪种HTML或XHTML规范。让浏览器通过正确的方式解析我们的网页,使网页能正常显示。<!DOCTYPE html>
head标签:就是一个网页的头,头部中的内容一般存放描述文档的信息 <head>
body:就是一个身体,一般来说 body里面的内容要显示出来<body>


<html>页面基础元素
简介:HTML标签也称为HTML标记,由开始标签和结束标签组成,用于表现结构化的内容,将内容构造成为一个完整的网页
规范:1.HTML标签是由尖括号包围的关键词,比如<html>
2.HTML标签通常是成对出现的,比如<b>和</b>
3.HTML不区别大小写(建议使用小写)
4.HTML可以嵌套,但是不允许交叉嵌套。正确<b><i>内容<i></b> 错误 <b><i>内容</b> <i>

<head>元素
简介:是所有头部元素的容器。
能包含哪些:<title><base><link><mate><script><style>
连接样式表:<link>元素
规定呈现样式:<style>元素
指定字符集:<mate>元素,关键词 name,content
本质:优化页面,利于搜索,设置字符集,防止乱码,引外部样式方便,规定呈现样式。

<title>元素
简介:标签定义文档的标题。
用途:定义浏览器工具栏中的标题,提供页面被添加到收藏夹时显示的标题,显示在搜索引擎结果中的页面标题。

name 元信息元素名称属性
简介:name属性用来指定文档中附加信息的名称,通常用keywords来定义关键字
用法:<mate name=”信息名称”/>
理解:在<mate>元素中,名称必须对应有相关的值才能生效

content 元信息元素的值
简介:用来指定文档中附加信息的值
搭配:content属性是与name属性成对出现
用法:<mate name=”信息名称” content=”附加信息的值” />

6. Doctype作?? 严格模式与混杂模式如何区分?它们有何意义?

  • ??被加载的时, link 会同时被加载,? @imort ??被加载的时, link 会同时被加 载,? @import 引?的 CSS 会等到??被加载完再加载 import 只在 IE5 以上才能识 别,? link XHTML 标签,?兼容问题 link ?式的样式的权重 ?于 @import 的权重
  • <!DOCITYPE>声明位于?档中的最前?,处于标签之前。告知浏览器的解析 器, ?什么?档类型 规范来解析这个?档
  • 严格模式的排版和 JS 运作模式是 以该浏览器?持的最?标准运?
  • 在混杂模式中,??以宽松的向后兼容的?式显示。模拟?式浏览器的?为以防?站点? 法?作。 DOCTYPE 不存在或格式不正确会导致?档以混杂模式呈现

17. ?内元素有哪些?块级元素有哪些? 空(void)元素有那些??内元 素和块级元素有什么区别?

  • ?内元素有: a b span img input select strong
  • 块级元素有: div ul ol li dl dt dd h1 h2 h3 h4… p
  • 空元素:<br><hr> <img><input><link><meta>

  • ?内元素不可以设置宽?,不独占??
  • 块级元素可以设置宽?,独占??

18. HTML全局属性(global attribute)有哪些

  • class :为元素设置类标识
  • data-* : 为元素增加?定义属性
  • draggable : 设置元素是否可拖拽
  • id : 元素 id ,?档内唯?
  • lang : 元素内容的的语?
  • style : ?内 css 样式
  • title : 元素相关的建议信息

19. Canvas和SVG有什么区别?

  • svg 绘制出来的每?个图形的元素都是独?的 DOM 节点,能够?便的绑定事件或?来修 改。 canvas 输出的是?整幅画布
  • svg 输出的图形是?量图形,后期可以修改参数来?由放?缩?,不会失真和锯?。?canvas 输出标量画布,就像?张图??样,放?会失真或者锯?

20. HTML5 为什么只需要写

  • HTML5 不基于 SGML ,因此不需要对 DTD 进?引?,但是需要 doctype 来规范浏览器 的?为
  • ?HTML4.01 基于 SGML ,所以需要对 DTD 进?引?,才能告知浏览器?档所使?的?档 类型