display: none;与visibility: hidden;的区别
display: none;
和visibility: hidden;
都可以使元素不可见,但它们在实现上有一些区别。
区别:
display: none;
会使元素完全从渲染树中消失,不占据任何空间,而visibility: hidden;
不会使元素从渲染树中消失,仍然占据空间,只是内容不可见。display: none;
是非继承属性,子孙节点消失是因为元素本身从渲染树中消失,修改子孙节点的属性无法使其显示。而visibility: hidden;
是继承属性,子孙节点消失是因为继承了hidden
属性,通过设置visibility: visible;
可以使子孙节点显示。- 修改具有常规流的元素的
display
属性通常会导致文档重排(重新计算元素的位置和大小)。而修改visibility
属性只会导致本元素的重绘(重新绘制元素的可见部分)。 - 读屏器(屏幕阅读软件)不会读取
display: none;
元素的内容,但会读取visibility: hidden;
元素的内容。
综上所述,
display: none;
和visibility: hidden;
虽然都可以使元素不可见,但在元素在渲染树中的位置、对子孙节点的影响、性能方面有所不同。选择使用哪种方式取决于具体的需求和场景。
THE END
暂无评论内容