1. 程式人生 > >CSS —— 元素hidden與opacity=0的區別

CSS —— 元素hidden與opacity=0的區別

之前除錯頁面時偶然發現,hidden與opacity看似都不可見,但實有區別:

visibility:hidden則相當於完全從文件流中刪除了該元素,但所佔據的尺寸仍然保留。

opacity:0則僅僅不可見,但仍可被瀏覽器發現,也就能觸發各種事件。通過瀏覽器除錯工具即可得出此結論。

簡單的驗證:

<!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" onclick="mouseevent()">點選觸發事件</div>
		<div class="invisibleDiv" onclick="mouseevent()">點選觸發事件</div>
		<div class="visibleDiv" onclick="mouseevent()">滑鼠點選觸發事件</div>

	</div>
	<div class="divHolder">
		<div class="hiddenDiv" onmouseover="mouseevent()">覆蓋觸發</div>
		<div class="invisibleDiv" onmouseover="mouseevent()">覆蓋觸發</div>
		<div class="visibleDiv" onmouseover="mouseevent()">滑鼠覆蓋時觸發事件</div>

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