display,visibility,opcity的区别

202 阅读1分钟
visibilityopcitydisplay
是否占位置
是否可以响应事件
子元素是否可以显示
是否产生回流
是否发生重绘不一定

Q:为什么opacity并不一定发生重绘 页面的绘制并不一定为在内存中的单层画面绘制,又是浏览器会将一帧画面绘制为多层画面,然后将若干层画面合并成一张图片显示都爱屏幕上。

将页面分层可以更好地区分开页面的静态部分和动态部分的绘制

在Blink和WebKit内核的浏览器中,具有transition或animation的opacity元素,渲染层被提升为合成层。translateZ(0)或translate3d(0,0,0)可以人为强制创建合成层。

而元素提升为合成层后,transform和opacity不会触发重绘,如果不是合成层,则会触发重绘。