CSS隐藏元素的N种方法,你知道哪一种最适合你?

news2024/9/19 15:24:17

  

 🎬 江城开朗的豌豆:个人主页

 🔥 个人专栏 :《 VUE 》 《 javaScript 》

 📝 个人网站 :《 江城开朗的豌豆🫛 》 

⛺️ 生活的理想,就是为了理想的生活 !

在这里插入图片描述

目录

 ⭐  专栏简介

 📘  文章引言

一、前言

二、实现方式

display:none

visibility:hidden

opacity:0

设置height、width属性为0

position:absolute

clip-path

小结

三、区别

⭐  写在最后


 ⭐  专栏简介

        欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。

        同时,我们也会关注最新的前端趋势和发展动态。随着Web技术的不断演进,前端开发也在不断推陈出新。我们会及时介绍最新的前端框架、工具和技术,使你能够站在前沿,与时俱进。通过掌握最新的前端技术,你将能够在竞争激烈的Web开发领域中有更大的竞争力。

 📘  文章引言

一、前言

在平常的样式排版中,我们经常遇到将某个模块隐藏的场景

通过css隐藏元素的方法有很多种,它们看起来实现的效果是一致的

但实际上每一种方法都有一丝轻微的不同,这些不同决定了在一些特定场合下使用哪一种方法

 

二、实现方式

通过css实现隐藏元素方法有如下:

  • display:none
    visibility:hidden
    opacity:0
    设置height、width模型属性为0
    position:absolute
    clip-path

display:none

设置元素的displaynone是最常用的隐藏元素的方法

.hide {
    display:none;
}

将元素设置为display:none后,元素在页面上将彻底消失

元素本身占有的空间就会被其他元素占有,也就是说它会导致浏览器的重排和重绘

消失后,自身绑定的事件不会触发,也不会有过渡效果

特点:元素不可见,不占据空间,无法响应点击事件

visibility:hidden

设置元素的visibilityhidden也是一种常用的隐藏元素的方法

从页面上仅仅是隐藏该元素,DOM结果均会存在,只是当时在一个不可见的状态,不会触发重排,但是会触发重绘

.hidden{
    visibility:hidden
}

给人的效果是隐藏了,所以他自身的事件不会触发

特点:元素不可见,占据页面空间,无法响应点击事件

opacity:0

opacity属性表示元素的透明度,将元素的透明度设置为0后,在我们用户眼中,元素也是隐藏的

不会引发重排,一般情况下也会引发重绘

如果利用 animation 动画,对 opacity 做变化(animation会默认触发GPU加速),则只会触发 GPU 层面的 composite,不会触发重绘

.transparent {
    opacity:0;
}

由于其仍然是存在于页面上的,所以他自身的的事件仍然是可以触发的,但被他遮挡的元素是不能触发其事件的

需要注意的是:其子元素不能设置opacity来达到显示的效果

特点:改变元素透明度,元素不可见,占据页面空间,可以响应点击事件

设置height、width属性为0

将元素的marginborderpaddingheightwidth等影响元素盒模型的属性设置成0,如果元素内有子元素或内容,还应该设置其overflow:hidden来隐藏其子元素

.hiddenBox {
    margin:0;     
    border:0;
    padding:0;
    height:0;
    width:0;
    overflow:hidden;
}

特点:元素不可见,不占据页面空间,无法响应点击事件

position:absolute

将元素移出可视区域

.hide {
   position: absolute;
   top: -9999px;
   left: -9999px;
}

特点:元素不可见,不影响页面布局

clip-path

通过裁剪的形式

.hide {
  clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);
}

特点:元素不可见,占据页面空间,无法响应点击事件

小结

最常用的还是display:nonevisibility:hidden,其他的方式只能认为是奇招,它们的真正用途并不是用于隐藏元素,所以并不推荐使用它们

三、区别

关于display: none visibility: hiddenopacity: 0的区别,如下表所示:

display: nonevisibility: hiddenopacity: 0
页面中不存在存在存在
重排不会不会
重绘不一定
自身绑定事件不触发不触发可触发
transition不支持支持支持
子元素可复原不能不能
被遮挡的元素可触发事件不能

⭐  写在最后

请大家不吝赐教,在下方评论或者私信我,十分感谢🙏🙏🙏.

✅ 认为我某个部分的设计过于繁琐,有更加简单或者更高逼格的封装方式

✅ 认为我部分代码过于老旧,可以提供新的API或最新语法

✅ 对于文章中部分内容不理解

✅ 解答我文章中一些疑问

✅ 认为某些交互,功能需要优化,发现BUG

✅ 想要添加新功能,对于整体的设计,外观有更好的建议

最后感谢各位的耐心观看,既然都到这了,点个 👍赞再走吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(免费领源码)java#Springboot#mysql装修选购网站99192-计算机毕业设计项目选题推荐

摘 要 随着科学技术,计算机迅速的发展。在如今的社会中,市场上涌现出越来越多的新型的产品,人们有了不同种类的选择拥有产品的方式,而电子商务就是随着人们的需求和网络的发展涌动出的产物,电子商务网站是建立在企业与…

【Linux】gdb调试

目录 进入调试查看代码运行代码断点打断点查断点删断点从一个断点转跳至下一个断点保留断点但不会运行该断点 退出调试逐过程逐语句监视跳转至指定行运行结束当前函数 进入调试 指令:gdb 【可执行文件】: 查看代码 :l 【第几行】如果输入指…

KVM之QEMU Q35仿真程序-尚文网络xUP楠哥

~~全文共1106字,阅读需约5分钟。 进Q群11372462领取专属报名福利 ! # 说在前面 众所周知,KVM 虚拟化也被成为云计算平台的云底座,想要学习例如开源 OpenStack 或者国内云计算产品解决方案是需要先学习 KVM 虚拟化知识的&#xf…

进程间通信(匿名管道、命名管道、消息队列、共享内存、信号量、信号、Socket)

文章目录 一、什么是进程间通信二、管道1.匿名管道(pipe)a).创建匿名管道b).管道的读写规则c).匿名管道的特点 2.有名管道(FIFO)a).创建命名管道b).命名管道的特点c).基于命名管道的进程间通信(服务端/客户端) 三、消息队列四、共享内存1.什么是共享内存…

2023-2024-1高级语言程序设计-循环结构

7-1计算值控制的循环 求π的近似值 用公式求π的近似值:π2/611/221/321/42。。。 当求和项小于误差时,结束求和。 输入格式: 在一行输入误差范围 输出格式: 在一行输出π的近似值(保留6位小数)。 输入样例: 在这里给出一组输入。例如…

交通 | 网约车系统:框架与回顾

推文作者:祝心怡,香港理工大学在读博士生,研究方向:空陆交通一体化 编者按: 这篇文章全面概述了网约车系统,分别总结了网约车系统中四个主要的研究问题,并强调了该行业所面临的挑战和机遇。 随着互联网的…

【C】想练习C语言?通讯录的实现了解一下

目录 实现思路 开始实现 添加增加联系人功能 添加显示联系人信息的功能 添加删除联系人功能 添加查找指定联系人的功能 添加修改指定联系人的功能 测试 代码 Test.c Contact.c Contact.h 实现思路 1.通讯录中保存人的信息:名字、年龄、性别、电话、住址…

Camtasia2024永久激活码

真的要被录屏软件给搞疯了,本来公司说要给新人做个培训视频,想着把视频录屏一下,然后简单的剪辑一下就可以了。可谁知道录屏软件坑这么多,弄来弄去头都秃了,不过在头秃了几天之后,终于让我发现了一个值得“…

[Python进阶] 消息框、弹窗:tkinter库

6.16 消息框、弹窗:tkinter 6.16.1 前言 应用程序中的提示信息处理程序是非常重要的部分,用户要知道他输入的资料到底正不正确,或者是应用程序有一些提示信息要告诉用户,都必须通过提示信息处理程序来显示适当的信息&#xff0c…

CC001:CC照片建模

摘要:CC照片建模原理是通过从图像中提取特征点和特征描述符,然后根据特征点的匹配来计算相机的位姿,从而生成三维点云数据。最后,借助网格重建和纹理映射的方法,将点云转换为带有纹理的三维网格模型。 实验数据&#x…

【Java每日一题】——第四十题:设计一个Shape接口和它的两个实现类Square和Circle(2023.10.26)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

windows上安装wsl(windows的linux子系统)

windows上安装wsl 说明 wsl(Windows Subsystem for Linux),windows的linux子系统。 我以为直接在微软应用商店直接下载想要安装的linux环境就可以了。 然而,出现了这个错误 Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0…

递归神经网络 (RNN)

弗朗西斯科佛朗哥 一、说明 循环神经网络非常有趣,因为与前馈网络不同,在前馈网络中,数据只能在一个方向上传播,每个神经元可以与连续层的一个或多个神经元连接,在这种类型的网络中,神经元还可以环回自身或…

Java和Linux脚本操作:如何实现自动化测试?

Java和Linux脚本操作:实现自动化测试的方法与示例 引言: 在软件开发过程中,自动化测试能够极大地提高测试效率和质量。通过使用Java语言和Linux脚本,我们可以编写强大的自动化测试脚本,实现自动化执行测试用例、生成测…

shopee哪个站点好做

Shopee是一个跨国电子商务平台,拥有许多不同的站点,分布在亚洲和其他地区。哪个Shopee站点适合做生意要取决于你的产品、目标市场和其他因素。以下是一些考虑因素: 1、目标市场:首先要确定你想要销售的产品的目标市场是哪里。不同…

Transformer-深度学习-台湾大学李宏毅-课程笔记

目录 参考Seq2seqSequence-to-sequence(Seq2seq)适用任务语音识别机器翻译语音翻译语音合成聊天机器人自然语言处理硬解任务:文法分析硬解任务:多标签分类硬解任务:目标检测 Sequence-to-sequence(Seq2seq&…

《动手学深度学习 Pytorch版》 10.5 多头注意力

多头注意力(multihead attention):用独立学习得到的 h 组不同的线性投影(linear projections)来变换查询、键和值,然后并行地送到注意力汇聚中。最后,将这 h 个注意力汇聚的输出拼接在一起,并且…

0024Java程序设计-毕业论文管理系统的设计与实现

文章目录 **目录**系统设计开发环境 随着高校的规模不断扩大,如何合理地利用教学资源、有效地加强教学管理工作,已成为各大高校关注的焦点。目前,在教学管理方面,特别是在学生学籍管理、成绩管理等方面都普遍采用了网络化管理手段,而对于课程设计这一重要的教学环节,则普遍采用…

暴跌5600亿!台积电没有想到,中国5G手机如此要命

自从国产5G手机上市以来,台积电的股价持续下跌,至今已下跌了蒸发770亿美元(约5600亿元),损失规模居亚洲之首,然而更可怕的是这款手机产生的影响正持续扩大,台积电可能面临生存危机。 一、台积电…

Maven项目用jetty在服务器部署与配置

Maven项目用jetty在服务器部署与配置 零.Jetty在服务器部署配置 0.1 修改jetty的默认端口 修改 $JETTY_HOME/etc/jetty.xml 文件, 将jetty.port的值改为指定自己需要的端口号即可, 默认为8080。 如下图 jetty 9 版本中,修改%JETTY_HOME%…