【CSS相关】display: none;与visibility: hidden;的区别(约298字)

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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容