1. display: none和visiblity:hidden
- display:none隐藏的内容,在文档布局中不分配空间,它各边的元素会合拢,相当于不存在
 visibility:hidden隐藏对应的内容,但是在文档中仍然保留原来的空间
2. link 和 import 区别
link是写在html标签,import是css里面支持的
link引入的css文件会被立即加载,import会在页面加载完之后加载
如果样式相同,import里面的样式会被link引入的覆盖3. css伪类和伪元素
伪类: 操作元素中已经存在的元素 :
伪元素:需要添加元素才能实现的 ::4. 选择器和权重
相邻兄弟
A + B- 普通兄弟 
A ~ B - 子选择器 
A > B - 后代选择器 
A B| 行内 | 1 0 0 0 | | —- | —- | | id | 0 1 0 0 | | class :hover :nth-child 属性选择器[type=’attr’] | 0 0 1 0 | | 标签 ::after ::before | 0 0 0 1 | 
5. position和float
- position和float都会脱离文档流
 - position会覆盖文档流中的其他元素(position里面的内容会被覆盖掉)
 float仍会占据位置(浮动元素不会覆盖其他元素)
** float ** ** position**<br />
6. box-sizing: content-box / border-box
content-box: 只包含content的宽高
border-box: 符合ie的合资模型,包含content + padding + border
7. position的absolute/relative相对定位
absolute:相对于最近的一级父元素不是static的定位
- 
8. nth-child 和nth-of-type
 nth-child: 指父元素下的第n个元素,且这个元素为ele,就符合,否则选择失败
- 
9. flex
flex:弹性盒子布局,分为container和item。 container分为主轴和侧轴,默认主轴是x方向,侧轴是-y方向。
那container包含的属性一半就是改变轴的一些属性container父元素常用属性
 flex-direction: 设置主轴方向
- justify-content:设置主轴上的排列方式
 

- flex-wrap:设置子元素是否换行
 - align-items: 设置侧轴上子元素的排列方式(单行)
 - align-content:设置侧轴上子元素的排列方式(多行)
 flex-flow: 复合属性,相当于flex-direction和flex-wrap
item常用属性
flex: 复合属性 默认值: 1 1 0%
- flex-grow: 剩余空间是否放大
 - flex-shrink:空间不足是否缩小
 - flex-basis:设置项目宽度,权重比width高.
- auto: 如果父flex有设置width/height,就用父的,如果没有就自动应用content
 - content:由内容撑开
 
 
- order: 控制排列顺序
10. grid布局
display:grid
缺点:兼容性不好,chrome需要57以上,IE需要加上-ms-,而且只兼容10以及以上版本容器属性
grid-template-column:repeat(3, 1fr)/ 1fr 2fr 3fr设置多少列
grid-template-row:同理,设置多少行
justify-items:水平方向
align-items: 垂直方向item属性
grid-column-start/grid-column-end:列从第几根网格线开始,第几根网格线结束
grid-row-start/grid-row-end:同上
align-self:只针对自己
justify-self:只针对自己水平方向 
11. BFC
BFC:块级格式化上下文,符合条件的都属于BFC,然后BFC有一些自己的规则
条件: 
- float不为none
 - position不为relative、static
 - display为inline-block、flex等
 - overflow不为visible
 
规则:
- 内部的box会在垂直方向排列
 - 垂直方向的距离由margin决定,两个盒子的margin会重叠
 - BFC的区域不会和float的区域重叠
 - BFC会计算浮动元素的高度
 
用途
- 清除浮动,解决父元素高度坍塌问题
 
只要把父元素设置成BFC,就能清楚浮动
原理: BFC会计算浮动元素的高度
- 解决外边距重叠问题
 
创建一个BFC就能解决外边距重叠问题
原理: 同一个BFC内的box外边距会重叠,那我们就设置两个不同的BFC,就不会重叠了
12. 那些性能开启了性能加速
硬件加速是指把浏览器渲染交给GPU渲染,减少对CPU的负担。
GPU加速原理:
13. 居中
垂直居中
line-height:设置跟父元素相等(产生行距),缺点不适合多行文字
flex: IE9以上兼容
grid: display:grid
align-items:center
justify-content:center
position: 定位和transform结合使用
vertical-align结合伪元素
div.child {display:inline-block;vertical-align: middle;}div.parent::after{content:"",height: 100%;width:0;display: inline-block;vertical-align: middel;}
水平居中
text-align: 行内元素
margin: 0 auto;(必须要有宽度)
浮动元素设置居中样式:position:relative进行偏移
14. 三列布局
圣杯布局
<div class="header">Header</div><div class="main-content"><div class="main">Main</div><div class="left">Left</div><div class="right">right</div></div><div class="footer">Footer</div>
html,body{margin: 0;height: 100%;}.header{height: 100px;background-color: red;}.footer{height: 100px;background-color: red;}.main-content{height: 500px;padding: 0 150px 0 50px;overflow: hidden;}.main,.left,.right{float: left;margin-bottom: -99999px;padding-bottom: 99999px;}.main{width: 100%;background-color: gold;}.left{width:50px;margin-left: -100%;position: relative;left: -50px;background-color: gray;}.right{width: 150px;margin-right: -150px;background-color: hotpink;}
双飞翼布局
<div class="header">Header</div><div class="main-content"><div class="main-container"><div class="main">Main</div></div><div class="left">Left</div><div class="right">right</div></div><div class="footer">Footer</div>
.header {height: 100px;background-color: red;}.footer {height: 100px;background-color: red;}.main-content {height: 500px;overflow: hidden;.main-container{width: 100%;float: left;.main {width: 100%;background-color: gold;margin: 0 150px 0 50px;}}.left {float: left;width: 50px;margin-left: -100%;background-color: gray;}.right {float: left;width: 150px;margin-left: -150px;background-color: hotpink;}}
flex布局
<div class="header">Header</div><div class="main-content"><div class="main">Main</div><div class="left">Left</div><div class="right">right</div></div><div class="footer">Footer</div>
.header {height: 100px;background-color: red;}.footer {height: 100px;background-color: red;}.main-content {height: 500px;overflow: hidden;display: flex;flex-direction: column;.left {order: -1;flex: 50px}.right {flex: 150px}}
position布局
<div class="header">Header</div><div class="main-content"><div class="main">Main</div><div class="left">Left</div><div class="right">right</div></div><div class="footer">Footer</div>
.header {height: 100px;background-color: red;}.footer {height: 100px;background-color: red;}.main-content {height: 500px;overflow: hidden;position: relative;.main {position: absolute;left: 50px;right: 150px;}.left {position: absolute;left: 0px;width: 50px;background-color: hotpink;}.right {position: absolute;right: 0;width: 150px;background-color: indigo;}}
float布局
<div class="header">Header</div><div class="main-content"><div class="main">Main</div><div class="left">Left</div><div class="right">right</div></div><div class="footer">Footer</div>
.header {height: 100px;background-color: red;}.footer {height: 100px;background-color: red;}.main-content {height: 500px;overflow: hidden;.main {margin: 0 150px 0 50px;}.left {float: left;width: 50px;background-color: hotpink;}.right {float: right;width: 150px;background-color: indigo;}}
Grid布局
<div class="header">Header</div><div class="main-content"><div class="left">Main</div><div class="main">Left</div><div class="right">right</div></div><div class="footer">Footer</div>
.header {height: 100px;background-color: red;}.footer {height: 100px;background-color: red;}.main-content {height: 500px;display: grid;justify-content: center;align-items: center;grid-template-columns: 50px auto 150px;.main {background-color: red;}.left {background-color: hotpink;}.right {background-color: indigo;}}
15. scss
@extend %placeholder: 不会编写相同的css代码块,抽离出来
@mixin @include: 会编译出相同的css代码块,使得css更加臃肿
@function
mixin支持传参可以选择,mixin支持{}动态传classname
