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的区别,如下表所示:


相关文章
|
1月前
|
前端开发
CSS水平居中与垂直居中的方法
CSS水平居中与垂直居中的方法
|
1月前
|
前端开发
CSS画三角形(三种方法)
CSS画三角形(三种方法)
|
1月前
|
前端开发 计算机视觉 开发者
利用CSS改变图片颜色的100种方法!
利用CSS改变图片颜色的100种方法!
32 1
|
1月前
|
前端开发 JavaScript
css之伪类hover改变自身、子元素、其他元素的样式
css之伪类hover改变自身、子元素、其他元素的样式
26 0
|
2天前
|
Web App开发 前端开发 开发者
css检查方法
【4月更文挑战第13天】css检查方法
10 2
|
2天前
|
XML 前端开发 开发者
css的常用方法
【4月更文挑战第13天】css的常用方法
10 3
N..
|
21天前
|
前端开发 容器
CSS 网页布局元素
CSS 网页布局元素
N..
23 1
|
26天前
|
前端开发 UED 容器
CSS3美化网页元素
CSS3美化网页元素
9 0
|
1月前
|
前端开发
CSS清除浮动的八种方法
CSS清除浮动的八种方法
|
1月前
|
前端开发
CSS显示隐藏的三种方法
CSS显示隐藏的三种方法