CSS中隐藏页面元素的6种方式及其区别

CSS中隐藏页面元素的6种方式及其区别

前言

这次要聊的主题就是CSS中隐藏页面元素的几种方式和区别,这应该是平时业务代码中会经常遇见的问题,想必掘友们一定知道一种或几种方法,那这次我们就一起来看看在CSS中到底有多少种隐藏页面元素的方法,以及它们之间有什么区别。

精彩就在后续,请往下看!

CSS中隐藏页面元素的方式

CSS中隐藏元素的方法大致总结出6种方式,虽然它们看起来实现的效果是一致的,但是实际使用种每一种方法都有一些不同之处,正是这些不同之处决定了在某些场合下该去选择哪一种方法的犹豫,这次就来一一揭开它们的面纱,让你能轻松抉择,let’ go!

一、display: none

首先说的就是display: none,它可以说是业务代码中最常用来隐藏页面元素的方法。

div {
    display: none
}

它可以将元素在页面中彻底消失,而元素本身所占据的位置,会被其他元素占据,这就会导致浏览器进行重排和重绘;并且隐藏后,元素本身绑定的事件不会触发,也没有消失的过渡效果。

总结:元素不可见,不占据页面空间,无法响应点击事件,页面会发生冲排和重绘

二、visibility: hidden

接着来说visibility: hidden,它也是常用的隐藏页面元素的方法。

div {
    visibility: hidden
}

它不仅可以隐藏页面元素,而且元素本身会存在页面中,即占据位置,只是它是处于一个不可见的状态而已;在页面中占据位置,那就不会发生重排,但是会发生重绘;元素本身的绑定的事件也不会触发。

总结:元素不可见,占据页面空间,无法响应点击事件,页面会发生重绘

三、opacity: 0

接着再说opacity: 0,opacity属性表示元素的透明度。

div {
    opacity0
}

将元素的透明度设为0之后,元素是可以达到隐藏效果的,它不会引发浏览器重排,但是它一般是会引起重绘的;由于元素是存在于页面之上的,所以元素本身绑定的事件是可以被触发的,但是被它遮挡的元素是不能触发点击事件的。

总结:改变元素透明度从而实现隐藏效果,占据页面空间,可以响应点击事件,页面会发生重绘

四、position: absolute

接着再说position: absolute,这其实是一个讨巧的方法,就是通过将元素移出页面从而达到隐藏的效果。

div {
    position: absolute;
    top: -9999px;
    left: -9999px;
}

业务中其实是用它来做其他的事,例如:定义一个canvas标签,进入页面进行绘图,然后拿到绘制的图片进行展示,这是就可以将canvas容器设置为页面之外,不影响整个页面的渲染。

总结:通过将元素移出页面从而实现隐藏效果,不影响页面布局,无法响应点击事件

五、宽高分别设为0

然后来说将元素的宽高都设为0的方式,当把元素的宽高都设为0了,这个元素自然就被“隐藏”了。

div {
    width0;
    height0;
    margin0;
    padding0;
    border0;
    overflow: hidden;
}

用此种方法需将width、height、margin、padding、border等影响元素盒模型的属性都为设为0;如果元素内含有子元素内容,还需要设置元素的overflow: hidden来隐藏子元素;宽高都没有了自然就无法响应点击事件了。

总结:通过将宽高等盒模型属性均设为0从而达到隐藏效果,不占据页面空间,无法响应点击事件

六、clip-path

最后来说clip-path,clip-path属性使用裁剪方式创建元素的可显示区域,区域内的部分显示,区域外的隐藏。

div {
    clip-pathpolygon(0px 0px,0px 0px,0px 0px,0px 0px);
}

polygon()为定义一个多边形。如:clip-path: polygon(17px 182px, 109px 23px, 199px 182px);就表示为定义了一个三角形,语法里面一个逗号多边形的一个顶点,有三个逗号则为三角形,依次类推(交叉可能不闭合就不会有多边形)。

这里将其全被设为0,则表示围不成一个多边形,也就没有元素节点,从而就达到了隐藏的效果;其在页面中是有空间的,但是无法响应点击事件的。

总结:通过裁减创建元素从而达到隐藏效果,占据页面空间,无法响应点击事件

隐藏页面元素方式的区别

这里将拿display: nonevisibility: hiddenopacity: 0进行区别,毕竟这3种是平时开发中最常用的方式,所以有必要对其进行介绍。如下:


display: none visibility: hidden opacity: 0
页面 不存在 存在 存在
重排 不会 不会
重绘 不一定
transition 不支持 支持 支持
子元素可复原 不能 不能
响应事件 不触发 不触发 触发
被遮挡元素可触发事件 不能

看文至此,CSS中实现页面元素隐藏的方式和区别就介绍完了。虽说隐藏元素的方法有以上6种,但其实业务中常用的还是只有display: none和visibility: hidden这2种方式,其他的方法基本算隐藏页面元素的小技巧,在此还是不怎么优先选用它们。

文章出自:https://juejin.cn/post/7139783697405837342

作者:黑土豆


原文始发于微信公众号(前端24):CSS中隐藏页面元素的6种方式及其区别

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/216350.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!