V-if与display:none的区别 (v-if v-show display:none visibility:hidden 辨析)

前言:网上有很多相似的内容,为啥我还再写一篇?因为那些文章千篇一律都说的是 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;视觉上消失,但是还占着位置。
visibility:hidden 虽然看不到,还是位置还占着

display:none;视觉上消失,也不占位置,但Dom节点还在。
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"的区别

### 如何通过外链实现 `display:none` 的隐藏显示效果 在 CSS 中,`display: none` 是一种常见的样式声明,用于完全隐藏指定的对象[^1]。这种方式不仅可以让对象不可见,还会使该对象不占据页面上的空间[^2]。 #### 使用外链 CSS 文件控制隐藏显示的效果 可以通过外部链接的 CSS 文件来管理样式的应用。以下是具体的方法: 1. **创建外链 CSS 文件** 创建一个名为 `styles.css` 的文件,在其中定义两个类:一个是用来隐藏元素的 `.hide { display: none; }` ,另一个是用来显示元素的 `.show { display: block; }` 或者其他适合的值。 ```css .hide { display: none; } .show { display: block; } ``` 2. **HTML 结构引入外链 CSS 并操作 DOM 元素** 在 HTML 文档中引入上述 CSS 文件,并利用 JavaScript 动态修改这些类名以达到切换显示状态的目的。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hide and Show Example</title> <!-- 引入外链CSS --> <link rel="stylesheet" href="styles.css"> </head> <body> <button id="toggleButton">Toggle Visibility</button> <div class="hide" id="contentToToggle">This is the content to toggle.</div> <script> document.getElementById('toggleButton').addEventListener('click', function () { var element = document.getElementById('contentToToggle'); if (element.classList.contains('hide')) { element.className = 'show'; // 切换到 show 类 } else { element.className = 'hide'; // 切换回 hide 类 } }); </script> </body> </html> ``` 此代码片段展示了如何借助外部样式表以及简单的脚本来改变目标 div 的可见性状态。每次点击按钮时,都会检查当前是否有 `hide` 类存在并相应调整其为 `show` 或反之亦然[^4]。 需要注意的是,虽然设置了 `display: none` 后元素无法被用户看到也不会占用布局位置,但它仍然存在于文档流之中并且能够响应某些交互行为比如鼠标悬停或者键盘焦点等特殊情况下可能触发的行为[^3]。 最后提醒一点关于 SEO 方面的影响——搜索引擎通常不喜欢遇到大量无意义地使用此类技术制造出来的虚假内容,因此建议合理运用这种技巧以免影响网站排名表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值