Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【前端】display:none和visibility:hidden两者的区别

【前端】display:none和visibility:hidden两者的区别

作者头像
程序员洲洲
发布于 2024-06-07 06:52:41
发布于 2024-06-07 06:52:41
62303
代码可运行
举报
文章被收录于专栏:项目文章项目文章
运行总次数:3
代码可运行

前言

CSS布局中,display和visibility属性是控制元素显示状态的两个重要工具。尽管它们在某些情况下可以互换使用,但它们之间存在一些关键的区别。本文将深入探讨这两个属性,并提供代码示例来帮助理解它们之间的差异。

一、display与元素的隐藏

display:none属性用于完全隐藏一个元素,并且不保留该元素在页面上所占的空间。当元素的display属性设置为none时,它不会在文档流中占据任何位置,就好像它从未存在过一样。 这里给出两个示例代码进行一个讲解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="hiddenElement">这个元素将被隐藏</div>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#hiddenElement {
  display: none;
}

在上面的例子中,#hiddenElement将完全从页面上消失,并且不会留下任何空间。

我们也可以用图像来说明。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
    <div>
        <strong>给元素设置display:none样式</strong>
        <p>A元素</p>
        <p style='display:none;'>B元素</p>
        <p>C元素</p>
    </div>
</body>

二、visibility与元素的隐藏

visibility:hidden属性将元素设置为不可见,但元素仍然保留其在页面上所占的空间。这意味着,即使元素不可见,它仍然会影响页面的布局。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="invisibleElement">这个元素仍然占据空间,但不可见</div>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#invisibleElement {
  visibility: hidden;
}

在上述示例中,#invisibleElement将不可见,但它原本占据的空间仍然保留,这可能会影响其他元素的布局。

大家可以运行下面的代码简单实验一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
    <div>
        <strong>给元素设置visibility:hidden样式</strong>
        <p>A元素</p>
        <p style='visibility:hidden;'>B元素</p>
        <p>C元素</p>
    </div>
</body>

三、两者区别

3.1 性能方面对比

display:none:由于元素完全从文档流中移除,可能对性能有积极影响,尤其是在处理大量隐藏元素时。

visibility:hidden:由于元素仍然占据空间,对性能的影响较小,但可能需要额外的布局计算。

另外,很多人认为visibility: hidden和display: none的区别仅仅在于display: none隐藏后的元素不占据任何空间,而visibility: hidden隐藏后的元素空间依旧保留 ,实际上没那么简单,visibility是一个非常有故事性的属性

1、visibility具有继承性,给父元素设置visibility:hidden;子元素也会继承这个属性。但是如果重新给子元素设置visibility: visible,则子元素又会显示出来。这个和display: none有着质的区别

2、visibility: hidden不会影响计数器的计数,如图所示,visibility: hidden虽然让一个元素不见了,但是其计数器仍在运行。这和display: none完全不一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <body>
        <div>
            <strong>给元素设置visibility:hidden样式</strong>
            <ol>
                <li>元素1</li>
                <li style="visibility:hidden;">元素2</li>
                <li>元素3</li>
                <li>元素4</li>
            </ol>
        </div>
        <div>
            <strong>给元素设置display:none样式</strong>
            <ol>
                <li>元素1</li>
                <li style="display:none;">元素2</li>
                <li>元素3</li>
                <li>元素4</li>
            </ol>
        </div>
    </body>

3.2 动画方面对比

display:none:不适用于动画或过渡效果,因为元素不存在于文档流中。

visibility:hidden:可以与opacity属性结合使用,创建平滑的显示和隐藏效果。

我们可以试下下面的代码示例,平滑隐藏元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button id="toggleVisibility">Toggle Visibility</button>
<div id="smoothElement">平滑隐藏的元素</div>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#smoothElement {
  transition: visibility 0.5s, opacity 0.5s linear;
  opacity: 1;
}

#smoothElement.hidden {
  visibility: hidden;
  opacity: 0;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.getElementById('toggleVisibility').addEventListener('click', function() {
  var element = document.getElementById('smoothElement');
  element.classList.toggle('hidden');
});

我们使用JavaScript来切换#smoothElement的hidden类,从而实现平滑的显示和隐藏效果。

四、总结

display:none和visibility:hidden各有其用途和特点。选择哪一个取决于你的具体需求:如果你需要完全隐藏元素并释放其空间,display:none是更好的选择;如果你只是想让元素不可见但保留其空间,visibility:hidden将是一个合适的选项。理解这些差异将帮助你更有效地使用CSS来控制元素的显示和隐藏。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
display:none和visibility:hidden的区别
空间占据上的区别 如果用文字来描述,简单一句话就是display:none的元素是彻底消失,也就是说该元素的宽度、高度等各种属性值都将“丢失”,不在文档流中占位,浏览器也不会解析该元素;而visibility:hidden只是视觉上消失了,可以理解为透明度为0(opacity:0)的效果,它仍具有高度、宽度等属性值,因此在文档流中占位,浏览器会解析该元素。 因此,我们可以知道display:none的元素隐藏后不占据额外空间,状态切换会产生回流和重绘,而visibility:hidden的元素虽然隐藏了,但
pitaojin
2018/05/25
1.8K0
关于opacity、visibility、display属性的一道CSS面试题
鼠标移入div,显示菜单ul,移出后隐藏菜单ul,只使用CSS,如何实现既有淡入淡出的效果,而又不影响其他元素,不产生回流?
FEWY
2019/05/29
1.2K0
关于opacity、visibility、display属性的一道CSS面试题
display: none、visibility: hidden和opacity: 0的区别
display: none 和 opacity: 0,子元素会和父元素一样保持不可见。
lonelydawn
2022/09/27
8940
display: none、visibility: hidden和opacity: 0的区别
[Web] CSS 中 Display(显示) 与 Visibility(可见性)的区别与用法
如果你想隐藏一个元素可以通过把display属性设置为”none”,或把visibility属性设置为"hidden"。但是请注意,这两种方法会产生不同的结果。
泰坦HW
2020/07/22
2.2K0
CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析
opacity 用来设置透明度 display 定义建立布局时元素生成的显示框类型 visibility 用来设置元素是否可见。 opacity、visibility、display 这三个属性分别取值 0、hidden、none 都能使元素在页面上看不见,但是他们在方方面面都还是有区别的。
FEWY
2019/05/26
1.8K0
js显示隐藏 display visibility以及jquery里的show hide的区别
display和visibility都是css样式,而show hide则是jquery的方法
坚毅的小解同志的前端社区
2022/11/28
5.6K0
js显示隐藏 display visibility以及jquery里的show hide的区别
CSS魔法堂:display:none与visibility:hidden的恩怨情仇
 还记得面试时被问起"请说说display:none和visibility:hidden的区别"吗?是不是回答完display:none不占用原来的位置,而visibility:hidden保留原来的位置后,面试官就会心一笑呢?其实不止那么简单呢!本文我们将一起深究它俩的恩怨情仇,下次面试时我们可以回答得更出彩!
^_^肥仔John
2018/10/08
1.4K0
CSS魔法堂:display:none与visibility:hidden的恩怨情仇
每天10个前端小知识 【Day 13】
CSS position属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。
程序媛夏天
2024/01/18
2050
每天10个前端小知识 【Day 13】
59道CSS面试题(附答案)
CSS选择器的权重预示着CSS选择器样式渲染的先后顺序,元素样式渲染时,权重高的选择器样式会覆盖权重低的选择器样式。
winty
2021/03/25
5.2K0
CSS 常见面试题速查
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异
Cellinlab
2023/05/17
9550
前端之CSS内容
一、CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。 二、CSS语法 1
新人小试
2018/04/12
5.3K0
前端之CSS内容
我想推荐一本书 《CSS 世界》
前段时间张鑫旭老师的《css 世界》出版,之前看过他写的博客,写的挺好的,一直就在思考要不要买?
sunseekers
2018/10/31
1.5K0
前端基础篇之CSS世界
我想你每天写css代码有时候也会觉得很痛苦:这个布局的css怎么这么难实现!我也经常会有这种感觉,一个看似简单的布局总是要琢磨半天才能实现,偶尔还会出现一些怪异的超出理解的现象。这是因为我们对css只是大概知道个形,并没有看透css的本质。在同事的推荐下我阅读了张鑫旭老师的《css世界》,才发现css跟想象中的不太一样。本文为《css世界》个人总结笔记,为缩减篇幅丢弃了张老师冗余的小幽默,丢掉了些含金量较低的章节内容,因为ie已经被淘汰出局,所以有关css兼容性的地方也全部忽略不记,同时对个人觉得不易理解的地方加上了一些自己的理解和验证,所以错误之处还望指正。顺便推荐个好用的在线代码编辑工具,国内镜像站点,方便各位对本文实例进行测试。另外本文会随着作者对css的更深入理解而逐步更新,希望到最后能够文如标题展现出真正的css世界。
Nealyang
2019/10/14
2.2K0
前端基础篇之CSS世界
css应知应会 第四集
3、当父元素中显示不下所有的已浮动子元素的话,那么最后一个将换行,依次类推。但有可能会被卡住
李才哥
2020/08/17
1.3K0
css应知应会 第四集
前端面试题2(CSS)
对BFC规范(块级格式化上下文:block formatting context)的理解?
keyWords
2018/09/19
2.9K0
CSS隐藏元素的方法
使用CSS隐藏元素的主要方式有diaplay: none;、opacity: 0;、visibility: hidden;、position: absolute; overflow: hidden;、clip-path: polygon(0 0, 0 0, 0 0, 0 0);、height: 0; overflow: hidden;。
WindRunnerMax
2020/08/27
2.7K0
「资深前端工程师总结」前端面试知识点大全—CSS篇
display:none使用后,元素的宽度,高度都会丢失,视为不存在不加载;元素原来占据的空间位置不保留;产生回流和重绘;
用户5997198
2019/08/09
1.6K0
「资深前端工程师总结」前端面试知识点大全—CSS篇
面试官:CSS 面试题集锦
z-index 属性设置元素的堆叠顺序,拥有更高的堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面
公众号---人生代码
2021/04/22
3.4K0
面试官:CSS 面试题集锦
css基础
    行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。
超蛋lhy
2018/08/31
1.6K0
css基础
前端面试题归类-css
网页看着不方便,想要文档可以私聊我。要是有错别字和错误的地方,请各位大佬直接指出,谢谢啦!!
肥晨
2023/02/16
1.7K0
相关推荐
display:none和visibility:hidden的区别
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验