【功能】transition不支持display属性以及display、opacity、visibility之间的区别
一、transition过渡不支持display属性
css3过渡transition不支持display属性,我们可以使用opacity或者visibility属性进行替换。相关的案例可以查看上一篇博文:【功能】关于页面加载进度条百分比实现的伪方法
二、display、opacity、visibility之间的关系
共同点:都让元素不可见
区别:
1、结构
display:none 从渲染树中消失,不占据空间,不能点击
visibility:hidden 从渲染树消失,占据空间,不能点击
opacity:0 从渲染树消失,占据空间,可以点击
2、继承
display:none和opacity:0 非继承属性,修改子孙节点属也无法显示
visibility:hidden 是继承属性,子孙节点由于继承了visibility:hidden才不显示,通过设置visibility:visible可以让子孙节点显示出来。
3、性能
display:none 引起页面重排 性能消耗大
visibility:hidden 只造成本元素的重绘,性能消耗较少
opacity:0 只造成本元素重绘,性能消耗较少
【参考文章】
分析比较opacity、visibility、display优劣和适用场景