CSS —— 元素hidden与opacity=0的区别

之前调试页面时偶然发现,hidden与opacity看似都不可见,但实有区别:

visibility:hidden则相当于完全从文档流中删除了该元素,但所占据的尺寸仍然保留。

opacity:0则仅仅不可见,但仍可被浏览器发现,也就能触发各种事件。通过浏览器调试工具即可得出此结论。

简单的验证:

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <title>研究透明度与隐藏的区别</title>  
  5.     <meta charset=“utf-8”>  
  6.     <style type=“text/css”>  
  7.         body{  
  8.             text-align: center;  
  9.         }  
  10.         .divHolder{  
  11.             display: inline-block;  
  12.             width: 200px;  
  13.             height: 300px;  
  14.             background-color: yellow;  
  15.             border:1px solid black;  
  16.         }  
  17.         .divHolder > div{  
  18.             display: block;  
  19.             width: 100%;  
  20.             height: 100px;  
  21.         }  
  22.         .hiddenDiv{  
  23.             visibility: hidden;  
  24.         }  
  25.         .invisibleDiv{  
  26.             opacity: 0.0;  
  27.         }  
  28.         .visibleDiv{  
  29.             background-color: gray;  
  30.         }  
  31.     </style>  
  32.     <script type=“text/javascript”>  
  33.         function mouseevent() {  
  34.             alert(“触发了事件!”);  
  35.         }  
  36.     </script>  
  37. </head>  
  38. <body>  
  39.     左右两个大div中各有三个小div,小div尺寸相同。  
  40.     第一个hidden,第二个opacity=0,第三个正常显示。  
  41.     通过调试窗口可发现,浏览器能发现不透明度为0的div,  
  42.     但发现不了隐藏的div!  
  43.     <div class=“divHolder”>  
  44.         <div class=“hiddenDiv” onclick=“mouseevent()”>点击触发事件</div>  
  45.         <div class=“invisibleDiv” onclick=“mouseevent()”>点击触发事件</div>  
  46.         <div class=“visibleDiv” onclick=“mouseevent()”>鼠标点击触发事件</div>  
  47.   
  48.     </div>  
  49.     <div class=“divHolder”>  
  50.         <div class=“hiddenDiv” onmouseover=“mouseevent()”>覆盖触发</div>  
  51.         <div class=“invisibleDiv” onmouseover=“mouseevent()”>覆盖触发</div>  
  52.         <div class=“visibleDiv” onmouseover=“mouseevent()”>鼠标覆盖时触发事件</div>  
  53.   
  54.     </div>  
  55. </body>  
  56. </html>  
<!DOCTYPE html>
<html>
<head>
    <title>研究透明度与隐藏的区别</title>
    <meta charset="utf-8">
    <style type="text/css">
        body{
            text-align: center;
        }
        .divHolder{
            display: inline-block;
            width: 200px;
            height: 300px;
            background-color: yellow;
            border:1px solid black;
        }
        .divHolder > div{
            display: block;
            width: 100%;
            height: 100px;
        }
        .hiddenDiv{
            visibility: hidden;
        }
        .invisibleDiv{
            opacity: 0.0;
        }
        .visibleDiv{
            background-color: gray;
        }
    </style>
    <script type="text/javascript">
        function mouseevent() {
            alert("触发了事件!");
        }
    </script>
</head>
<body>
    左右两个大div中各有三个小div,小div尺寸相同。
    第一个hidden,第二个opacity=0,第三个正常显示。
    通过调试窗口可发现,浏览器能发现不透明度为0的div,
    但发现不了隐藏的div!
    <div class="divHolder">
        <div class="hiddenDiv" οnclick="mouseevent()">点击触发事件</div>
        <div class="invisibleDiv" οnclick="mouseevent()">点击触发事件</div>
        <div class="visibleDiv" οnclick="mouseevent()">鼠标点击触发事件</div>

    </div>
    <div class="divHolder">
        <div class="hiddenDiv" οnmοuseοver="mouseevent()">覆盖触发</div>
        <div class="invisibleDiv" οnmοuseοver="mouseevent()">覆盖触发</div>
        <div class="visibleDiv" οnmοuseοver="mouseevent()">鼠标覆盖时触发事件</div>

    </div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值