引言
当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~。缩减 HC、裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀。但博主始终相信,寒冬之中,人才更是尤为珍贵。只要有过硬的操作和装备,在逆风局下,同样也能来一波收割翻盘。
博主也是年前经历了一番厮杀,最终拿到多家大厂的 offer。在闭关修炼的过程中,自己整理出了一套面试秘籍供自己反复研究,后来给了多位有需要的兄台,均表示相当靠谱,理应在这寒冬之中回报于社会。于是决定花点精力整理成文,让大家能比较系统的反复学习,快速提升自己。
面试固然有技巧,但绝不是伪造与吹流弊,通过一段短时间沉下心来闭关修炼,出山收割,步入大厂,薪资翻番,岂不爽哉?
修炼原则
想必大家很厌烦笔试和考察知识点。因为其实在平时实战中,讲究的是开发效率,很少会去刻意记下一些细节和深挖知识点,脑海中都是一些分散的知识点,无法系统性地关联成网,一直处于时曾相识的状态。不知道多少人和博主一样,至今每次写阻止冒泡都需要谷歌一番如何拼写。。
以如此的状态,定然是无法在面试的战场上纵横的。其实面试就犹如考试,大家回想下高考之前所做的事,无非就是 理解 和 系统性关联记忆。本秘籍的知识点较多,花点时间一个个理解并记忆后,自然也就融会贯通,无所畏惧。
由于本秘籍为了便于记忆,快速达到应试状态,类似于复习知识大纲。知识点会尽量的精简与提炼知识脉络,并不去展开深入细节,面面俱到。有兴趣或者有疑问的童鞋可以自行谷歌下对应知识点的详细内容。
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 - opacticy - filter - will-change - -webkit-overflow-scrolling
层叠等级:层叠上下文在 z 轴上的排序 - 在同一层叠上下文中,层叠等级才有意义 - z-index的优先级最高
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 领域有自己的见解和经验,反而会为相当的加分和脱颖而出。