(31):css隐藏页面元素

10 篇文章 0 订阅

css隐藏页面元素的方式,区别

一、前言

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

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

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

二、实现方式

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

  • (1)display: none(常用)
  • (2)visibility: hidden(常用)
  • (3)opacity: 0
  • (4)设置height、width模型属性为0
  • (5)position: absolute; top: -9999px; left: -9999px;
  • (6)clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);

1、display:none

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

.hide {
    display:none;
}

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

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

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

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

2、visibility:hidden

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

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

.hidden{
    visibility:hidden
}

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

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

3、opacity:0

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

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

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

.transparent {
    opacity:0;
}

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

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

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

4、设置height、width属性为0

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

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

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

5、position:absolute

(1)将元素移出可视区域

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

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

6、clip-path

(1)通过裁剪的形式

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

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

小结

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

三、区别

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

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

参考文献

  • (1)https://www.cnblogs.com/a-cat/p/9039962.html
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值