关于 JS 动画和 css3 动画的差异性
参考回答:
渲染线程分为 main thread 和 compositor thread,如果 css 动画只改变 transform 和 opacity,
这时整个 CSS 动画得以在 compositor trhead 完成(而 JS 动画则会在 main thread 执行,然
后出发 compositor thread 进行下一步操作),特别注意的是如果改变 transform 和 opacity
是不会 layout 或者 paint 的。区别:功能涵盖面,JS 比 CSS 大
实现/重构难度不一,CSS3 比 JS 更加简单,性能跳优方向固定
对帧速表现不好的低版本浏览器,css3 可以做到自然降级
css 动画有天然事件支持
css3 有兼容性问题
说一下块元素和行元素
参考回答:
块元素:独占一行,并且有自动填满父元素,可以设置 margin 和 pading 以及高度和宽
度行元素:不会独占一行,width 和 height 会失效,并且在垂直方向的 padding 和 margin
会失
效。
visibility=hidden, opacity=0,display:none
参考回答: opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些 事件,如 click 事件,那么点击该区域,也能触发点击事件的 visibility=hidden,该元素 隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件 display=none, 把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉一样。
双边距重叠问题(外边距折叠)
参考回答:
多个相邻(兄弟或者父子关系)普通流的块元素垂直方向 marigin 会重叠
折叠的结果为:
两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。
两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。
两个外边距一正一负时,折叠结果是两者的相加的和。