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

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

⭐  专栏简介


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



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



📘  文章引言


一、前言


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


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


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




二、实现方式


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

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

display:none


设置元素的display为none是最常用的隐藏元素的方法

.hide {
    display:none;
}


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


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


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


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


visibility:hidden


设置元素的visibility为hidden也是一种常用的隐藏元素的方法


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


hidden{
    visibility:hidden
}

.

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


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


opacity:0


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


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


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

.transparent {
    opacity:0;
}


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


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


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


设置height、width属性为0

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


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


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

position:absolute


将元素移出可视区域

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


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

clip-path


通过裁剪的形式

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


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


小结


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


三、区别


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


相关文章
|
8天前
|
缓存 监控 前端开发
CSS 提高性能的方法
【10月更文挑战第24天】在实际应用中,还需要根据具体项目的特点和需求,灵活选择和组合这些方法,不断进行优化和改进。同时,随着技术的不断发展,也需要持续关注新的性能优化技巧和最佳实践,以保持在性能优化方面的领先地位。你对 CSS 性能优化还有哪些深入的思考和经验呢?欢迎进一步交流和分享。
|
11天前
|
前端开发
css页面顶部底部固定,中间自适应几种方法
【10月更文挑战第22天】css页面顶部底部固定,中间自适应几种方法
|
1月前
|
前端开发 容器
CSS 中几种常用的换行方法
CSS 中几种常用的换行方法
21 1
|
12天前
CSS_定位_网页布局总结_元素的显示与隐藏
CSS_定位_网页布局总结_元素的显示与隐藏
19 0
|
2月前
|
XML 前端开发 JavaScript
jQuery HTML / CSS 方法
jQuery HTML / CSS 方法
14 2
|
2月前
|
前端开发 JavaScript
jQuery css() 方法
jQuery css() 方法
19 3
|
27天前
|
前端开发 UED
css性能优化的方法
css性能优化的方法
20 0
|
27天前
|
前端开发
css 块元素、行内元素、行内块元素相互转换
css 块元素、行内元素、行内块元素相互转换
67 0
|
1月前
|
前端开发
CSS绘制三角形的方法
CSS绘制三角形的方法
|
2月前
|
前端开发 JavaScript
jQuery css() 方法
jQuery css() 方法
14 1