css
推荐阅读-灵活使用css开发
目录
1.BFC是什么有什么作用
- bfc特点:
- bfc内的元素不会影响外面元素
 - bfc内的浮动元素也会参与高度计算
 - 同一个bfc内的元素垂直方向的margin会出现重叠
 - bfc内的元素按照水平方向依次排列
 - bfc元素不会与float元素重叠
 
 - 形成bfc:
- 根元素
 - position为fixed、absolute
 - float不为none
 - overflow不为visible
 - display为inline-block、flex、inlin-flex、table-cell
 
 
2.盒模型
- 特点:
- 标准盒模型构成:content+padding+border+margin,盒模型宽度:content部分
 - ie盒模型:content+padding+border+margin,盒模型宽度:content+padding+border
 
 - box-siziing:
- content-box,设置为标准盒模型
 - border-box,设置为ie盒模型的宽高计算方式
 
 
3.link和@import的不同
- link可以用于加载除css外还可以用于定义rss、定义ref等属性,不存在兼容性问题,
 - import只能用于加载css
 - 当页面被加载时,link引用的css会同时被加载,而import则会等到页面被全部下载完才会加载,会出现闪烁
 
3.居中布局
- position: absolute;top:50%;left: 50%;margin回移一半
 - display:flex;justifiy-content: center;align-items: center;
 - position: absolute;top:50%;left: 50%;transform: translate(-50%,-50%);
 
4.选择器优先级
- important,10000
 - 行内样式,1000
 - id,#选择器,100
 - class,伪类、属性选择器,10
 - 标签选择器、伪元素选择器,
 - 通配符选择器
 
5.清浮动
- 伪类清浮动,#box::after{ content:'';display: inline-block;clear:both; }
 - 变更为bfc元素
 - 在末尾添加清浮动元素,并增加clear:both属性
 
6.层叠上下文
- 
概述:在web页面渲染时,某些元素会受z-index值得影响,这些受z-index影响的元素称职之为层叠上下文
 - 
形成层叠上下文的条件:根元素是层叠上下文、position:absolute/fixed、grid、flex
 - 
特点:
- 当容器的z-index为有效数值并生效时,容器内的子元素无法穿过容器否则反之
 - 当父容器的z-index为有效数值并生效时,子元素的层级由父元素决定,这种变化后的容器元素我们称之为层叠上下文
 - 层叠上下文元素可嵌套,层叠上下文子元素均受层叠上下文外层元素影响
 - 每个层叠上下文和兄弟元素独立,当进行层叠变化或渲染时,可以需要考虑子元素
 - 层叠上下文未指定z-index时,其层叠上下文等级与z-index: 0相同,要普通元素高,指定z-index时按照层叠等级应该是z-index: 0
 
 - 
当处于同一个层叠上下文时按照以下顺序判断:
- z-index为负、block块状水平盒子、float浮动元素、inline-block水平盒子、z-index: auto、z-index: 0、z-index:为正
 
 
7.rem适配方案
- 通过动态获取屏幕宽度,以375宽度、字体大小50为基准
 - 通过监听resize的变化等比缩放
 - 设计图750为标准,则按照
 - 1rem=根字体px
 - 以750为基准,7.5rem为屏幕宽度,根字体大小=(width/750)*100+'px';
 
8.flex模型
- flex中项目的flex属性有什么作用
- 深入理解flex
 - 分别可以定义为:flex-grow、flex-shrink、flex-base
- flex-grow:容器存在剩余空间,若单个项目或多个项目为1等分剩余空间、其他项目为1,一个为2,另一个等分空间是其他的两倍。默认为auto不占据剩余空间
 - flex-shrink:默认为1,空间不足缩小。其他项目都为1,单个为0,则表示单个不缩放
- shrink压缩规则:
- 所有单个项目*压缩比例宽度相加=压缩总量值
 - 单个项目压缩比例=项目宽度*压缩比例/压缩总量值
 - 项目宽 度=项目原width-压缩比例*溢出宽度
 
 
 - shrink压缩规则:
 - flex-base:默认为auto表示项目原大小。可以设置为像素值,这个值将在flex-grow前生效,表明项目占据的空间
 
 
 - order作用域项目上
- 值越大排在越后面
 
 
9.1px
10.input遮挡
11.css性能优化
- 
部分主要内容内联
 - 
通过will-change: transform,或者transform:translateZ、translate3d开启GPU渲染
 - 
将复杂动画脱离文档里,或同一个dom节点,减少对兄弟节点,父节点影响
 - 
选择器,减少使用通配符,或者选择器过程,在合并成render tree时会造成查找性能问题
 - 
media,在适当时期加载对应的css
 - 
使用transfrom
 - 
preload降级不必要css加载顺序
 - 
减少使用import
 - 
requestAnimationFrame,在下一次重绘前调用指定函数来重绘
 
12.实现动画的方式
- animation
 - transition
 - animationRequestFrame
 - SVG
 - canvas
 - gif