前言:网上有很多相似的内容,为啥我还再写一篇?因为那些文章千篇一律都说的是 v-if 与 v-show, display:none 与 visibility:hidden各自的关系,而对于v-if与display,v-show与display的关系说得不是很清楚,所以写下这篇小记。
v-if :让Dom 节点直接消失。(即:视觉上看不到,也没有位置,dom节点也不在。)
v-show: 调用display:none 来控制元素是否展示。
display:none --> 物理空间消失,但是dom还在(即:视觉上看不到,也没有位置,但是dom节点还在)。
visibility:hidden; -->物理空间以及dom都还在(即:视觉上看不到,但位置它还占着,dom节点也在)。
综上所述:V-if与display:none的区别就是:
v-if = display:none + 干掉其Dom节点。
示意图:
visibility:hidden;视觉上消失,但是还占着位置。
display:none;视觉上消失,也不占位置,但Dom节点还在。
拓展:
Html style="visibility:hidden"与style="display:none"的区别
<html>
<head>
<title>style="visibility:hidden"与style="display:none"的区别</title>
</head>
<body>
<span style="visibility:hidden; background-color:Blue">隐藏区域</span><span style="background-color:Green">显示区域</span>
<span style="display:none; background-color:Blue">隐藏区域</span><span style="background-color:Green">显示区域</span><br/>
</body>
</html>
参考资料:
Html style="visibility:hidden"与style="display:none"的区别