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

在这里插入图片描述

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号:洲与AI。
🤓 欢迎大家关注我的专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
🌼 同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入我的社群~社群中将不定时分享各类福利
🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!点此即可获得联系方式~

本文目录

  • 前言
  • 一、display与元素的隐藏
  • 二、visibility与元素的隐藏
  • 三、两者区别
    • 3.1 性能方面对比
    • 3.2 动画方面对比
  • 四、总结

前言

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

一、display与元素的隐藏

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


这里给出两个示例代码进行一个讲解

<div id="hiddenElement">这个元素将被隐藏</div>
#hiddenElement {
  display: none;
}

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

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

<body>
    <div>
        <strong>给元素设置display:none样式</strong>
        <p>A元素</p>
        <p style='display:none;'>B元素</p>
        <p>C元素</p>
    </div>
</body>

在这里插入图片描述

二、visibility与元素的隐藏

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

<div id="invisibleElement">这个元素仍然占据空间,但不可见</div>
#invisibleElement {
  visibility: hidden;
}

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

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

<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完全不一样

    <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属性结合使用,创建平滑的显示和隐藏效果。

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

<button id="toggleVisibility">Toggle Visibility</button>
<div id="smoothElement">平滑隐藏的元素</div>
#smoothElement {
  transition: visibility 0.5s, opacity 0.5s linear;
  opacity: 1;
}

#smoothElement.hidden {
  visibility: hidden;
  opacity: 0;
}
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来控制元素的显示和隐藏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/680044.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电机行业MES生产管理系统--助力电机企业数字化转型

电机行业 MES 系统是一个综合生产管理系统&#xff0c; 融合了工厂企业必要的销售、 物 流和制造管理等全公司基础业务以及生产计划和现场监测管理。 一、传统机电行业的管理难题&#xff1a; 1、 产品标准化程度较低&#xff0c; 制造工艺复杂&#xff0c; 生产周期较长&#…

day50 动态规划 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

198.打家劫舍 当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。 动规五部曲 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2.确…

结构体+结构体内存对齐+结构体实现位段

结构体内存对齐实现位段 一.结构体1.结构体的声明2.结构体变量成员访问操作符3.结构体传参4.匿名结构体5.结构的自引用 二.结构体内存对齐1.对齐规则2.为什么存在内存对齐&#xff1f;3.修改默认对齐数 三.结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段…

SELinux深度解析:安全增强型Linux的探索与应用(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、SELinux概述 2、SELinux诞生背景 3、SELinux …

Django 视图探秘:FBV与CBV注册方式的异同,揭秘as_view()的执行魔法

文章目录 一、FBV、CBV注册方式及其区别FBVCBV 二、as_view()函数查看对应的view函数具体内容&#xff0c;最终返回的是dispatch方法查看dispatch方法 一、FBV、CBV注册方式及其区别 FBV FBV&#xff1a;path(index/,views.index) 通过调用函数方式&#xff0c;views.index是一…

打印机扫描工具V2.1发布

打印机扫描工具V2.1发布 从打印机扫描工具发布1.4版本以来&#xff0c;大家反馈了一些问题&#xff0c;目前就比较集中的问题&#xff0c;做了一些优化&#xff0c;做了一些大的调整&#xff0c;发布了2.1版本。 优化问题&#xff1a; 进一步优化安装包太大问题&#xff0c;…

上海亚商投顾:深成指、创业板指均涨超1%,电力股午后集体走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日低开后震荡反弹&#xff0c;深成指、创业板指均涨超1%&#xff0c;黄白二线依旧分化。电力、电网股午…

CHATGPT升级plus(已有账号前提下)

注册wildcard(虚拟卡) 注册号账号后先进行充值&#xff0c;充值后选择CHATGPT一键升级按照他的流程来即可 Wildcard网址&#xff1a;Wildcard跳转注册 填写邀请码充值时少两美金合计14&#xffe5; 邀请码&#xff1a;OL3QXTRH

挑战你的数据结构技能:复习题来袭【6】

1. (单选题)设无向图的顶点个数为n,则该图最多有&#xff08;&#xff09;条边 A. n-1 B. n(n-1)/2 C. n(n1)/2 D. 0 答案&#xff1a;B 分析&#xff1a; 2. (单选题)含有n个顶点的连通无向图,其边的个数至少为()。 A. n-1 B. n C. n1 D. nlog2n 答案&#xff1a;A…

10 数据封装与层次对应关系

一、TCP/IP模型 二、封装与解封装 &#xff08;一&#xff09;数据的封装 &#xff08;二&#xff09;数据的解封装 三、协议、数据与设备 &#xff08;一&#xff09;对应层次协议 结构协议应用层HTTP / FTP / TFTP / SMTP / SNMP/ DNS传输层TCP / UDP网络层ICMP / IGMP / …

使用记事本或者写字板打开中文乱码问题

最近下载一个开源的公共的文件&#xff0c;下载下来是xml格式的文本文件&#xff0c;然后我尝试打开&#xff0c;使用记事本打开文件&#xff0c;内容显示正常&#xff0c;但是因为是xml文件&#xff0c;使用记事本打开的时候没有换行&#xff0c;不方便看&#xff0c;然后就使…

信息系统项目管理师0143:过程概述(9项目范围管理—9.2项目范围管理过程—9.2.1过程概述)

点击查看专栏目录 文章目录 9.2 项目范围管理过程9.2.1 过程概述 9.2 项目范围管理过程 9.2.1 过程概述 项目范围管理过程包括&#xff1a; 规划范围管理&#xff1a;为了记录如何定义、确认和控制项目范围及产品范围&#xff0c;创建范围管理计划。收集需求&#xff1a;为了…

文章自动排版

文字太多了不想看怎么办&#xff1f;想快速提取并罗列文章的重点要如何操作&#xff1f;今天给大家介绍一下如何把复杂的文章总结为一个个观点 使用说明 打开智游剪辑&#xff08;zyjj.cc&#xff09;&#xff0c;搜索文字排版 我们输入要排版的文章&#xff0c;点击立即生成就…

心链9----组队功能开发以及请求参数包装类和包装类实现

心链 — 伙伴匹配系统 组队功能开发 需求分析 理想的应用场景 我要跟别人一起参加竞赛或者做项目&#xff0c;可以发起队伍或者加入别人的队伍 用户可以 创建 一个队伍&#xff0c;设置队伍的人数、队伍名称&#xff08;标题&#xff09;、描述、超时时间 P0 队长、剩余的人数…

安防综合管理系统EasyCVR视频汇聚平台GA/T 1400协议中的关键消息交互示例

在当今的信息化时代&#xff0c;公共安全防范日益成为保障社会和谐稳定的关键。视频监控系统作为现代安全防范的重要手段&#xff0c;正不断在公安、交通、城市管理等领域发挥着越来越重要的作用。而GA/T 1400协议视图库&#xff0c;作为公安视频图像信息应用系统的标准&#x…

使用 TinyEngine 低代码引擎实现三方物料集成

本文由体验技术团队 TinyEngine 项目成员炽凌创作&#xff0c;欢迎大家实操体验&#xff0c;本体验内容基于 TinyEngine 低代码引擎提供的环境&#xff0c;介绍了如何通过 TinyEngine 低代码引擎实现三方物料集成&#xff0c;帮助开发者快速开发。 知识背景 1.1 TinyEngine 低…

江苏省汽车及零部件产业协作配套对接会在苏州举行

5月28日&#xff0c;江苏省汽车及零部件产业协作配套对接会暨“百场万企”大中小企业融通对接活动在苏州举办。本次活动以“深化整零协作&#xff0c;促进大中小企业融通发展”为主题&#xff0c;由江苏省工业和信息化厅、中国中检所属中国汽车工程研究院股份有限公司&#xff…

Linux系统Docker部署Apache Superset并实现远程访问详细流程

目录 前言 1. 使用Docker部署Apache Superset 1.1 第一步安装docker 、docker compose 1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问 3. 设置固定连接公网地址 前言 作者简介&#xff1a; 懒大王敲代码&#xff0…

Python第二语言(一、Python start)

目录 1、下载Pyhton注意 2、python下载 3、Python start 3.1 第一个python&#xff08;print("Hello World!")&#xff09; 3.2 执行多条python代码&#xff08;Python解释器&#xff09; 3.3 小结&#xff08;python解释器、.py文件&#xff09; 3.4 开发工具…

Java微服务智慧工地可视化SaaS云解决方案源码

智慧工地是指运用信息化手段&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析&#xff0c;提供过程趋势预测及专家预案&#xff0c;实现工程…