紫心巧克力 發表於 2026-5-3 22:17:00

CSS中visibility:hidden、display:none、opacity:0、rgba设置元素隐藏的区别

<h3>共同点:</h3>
<p>visibility:hidden、display:none、opacity:0三者都可以使元素隐藏</p>
<h3>区别在于:</h3>
<p>1、visibility:hidden 保留dom节点,元素在文档流中占据空间,不引起重排和回流;父元素设置该属性时,子元素同样会生效,但可以通过visibility:visible;修改子元素的显示效果;</p>
<p>2、display:none 不保留dom节点,元素直接从文档流中删除,引起重排和回流,子元素同样被删除;</p>
<p>3、opacity:0 设置元素透明度为0,保留dom节点,元素在文档流中占据空间,子元素会继承父元素的opacity特性,但是子元素设置opacity:1;同样不会显示出来。</p>
<p>4、通过给元素设置rgba(x,x,x,0)为透明隐藏效果,但仍然会占据一片空间,且子元素不会受到影响</p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
    &lt;title&gt;Document&lt;/title&gt;
    &lt;style&gt;
      .father1{
            height: 200px;
            width: 200px;
            background-color: #aabbcc;
            margin-top:20px;
            display: none;
      }
      .son1{
            height: 100px;
            width: 100px;
            background-color: #eeaaee;
            display: block;
      }
      .father2{
            opacity: 0;
            height: 200px;
            width: 200px;
            background-color: #aabbcc;
            margin-top:20px;
            opacity: 0;
      }
      .son2{
            height: 100px;
            width: 100px;
            background-color: #eeaaee;
            opacity: 1;
      }
      .father3{
            visibility: hidden;
            height: 200px;
            width: 200px;
            background-color: #aabbcc;
            margin-top:20px;
            visibility: hidden;
      }
      .son3{
            height: 100px;
            width: 100px;
            background-color: #eeaaee;
            visibility: visible;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div class="father1"&gt;
      &lt;div class="son1"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="father2"&gt;
      &lt;div class="son2"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="father3"&gt;
      &lt;div class="son3"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;script&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div>
頁: [1]
查看完整版本: CSS中visibility:hidden、display:none、opacity:0、rgba设置元素隐藏的区别