CSS – display, visibility, opacity, transparent 的区别
前言
要让一个元素"消失", 有 3 种做法. 它们有一点点的不同. 在实战时要清楚什么时候用什么哦.
例子说明
<div class="abc">
<div class="xyz"></div>
</div>
CSS Style
.abc {
border: 1px solid red;
width: max-content;
.xyz {
width: 100px;
height: 100px;
background-color: red;
}
}
效果
opacity: 0
opacity 是让元素透明. 虽然看不到, 但是占据空间, 同时可被触碰 (e.g. hover).
.xyz {
opacity: 0;
&:hover {
opacity: 1;
}
}
效果
虽然看不见, 但是占据空间, 而且可以 hover.
冷知识 – Transform, Opacity 也会让元素飘起来
visibility: hidden
它比 opacity 厉害一点, 看不见, 同时也触碰不到了, 但依然占据空间.
.xyz {
visibility: hidden;
&:hover {
visibility: visible;
}
}
效果
已经 hover 不到了, 但它依然占据空间.
display: none
它才是真正让元素消失的, 看不见, 不占空间, hover 不到.
.xyz {
display: none;
&:hover {
display: block;
}
}
效果
由于不占据空间了, 只剩下 container 的 1px border. 所以只看见小红点.
另外不占空间也意味着 dimension 是 0,比如 element.offsetWidth 会返回 0,还要 getBoundingClientRect top, left, width, height 都会返回 0。
总结
opacity 看不见, 占空间, 能触碰 (re-paint)
visibility 看不见, 占空间, 不能触碰 (re-paint)
display: 看不见, 不占空间, 不能触碰 (re-flow)
fade in 效果
display none 转换 display: block 是没有 transition 效果的.
所以通常用 visibility + opacity 来实现 fade in. 但要注意空间的问题, 因为 visibility 是占据空间的.
有时候会用 height: 0 来帮助消失空间. 但也要注意 height: 0 的冷知识 哦.
hamburger menu 的消失 (transparent)
中间是一个 div / span, 然后加上 ::before, ::after 就成了 hamburger
打开的 menu 的时候会变成 X 中间那一条会消失. 上面 3 种方式都做不到这个效果. 因为 opacity 会把整个 div 消失掉. 也包括了里面的 ::before, ::after.
正确的做法是通过 background-color: transparent, 这样中间就消失了, 但是 "内容" ::before 和 ::after 则依然在.
CSS – display, visibility, opacity, transparent 的区别的更多相关文章
- CSS隐藏元素 display visibility opacity的区别
{ display: none; /* 不占据空间,无法点击 */ } { visibility: hidden; /* 占据空间,无法点击 */ } { position: absolute; ...
- CSS(三)背景 list-style display visibility opacity vertical cursor
背景background 1.background-color:'' 背景颜色 2.background-image:'' 背景图片 background-repeat:'' 背景图片是否平铺 取 ...
- css display visibility
当visibility被设置为"hidden"的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置.注意,当元素被隐藏之后,就不能再接收到其它事件了. display属性就有一点 ...
- css隐藏元素display:none,opacity:0;filter:alpha(opacity=0-100;,visibility:hidden的区别
在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.我们一般有三种方式:display:none, opacity:0;fil ...
- CSS display:none和visibility:hidden区别
你知道CSSdisplay:none和visibility:hidden的区别吗,这里和大家分享一下,使用CSS display:none属性后,HTML元素(对象)的宽度.高度等各种属性值都将&qu ...
- 两种隐藏元素方式【display: none】和【visibility: hidden】的区别
此随笔的灵感来源于上周的一个面试,在谈到隐藏元素的时候,面试官突然问我[display: none]和[visibility: hidden]的区别,我当时一愣,这俩有区别吗,好像有,但是忘记了啊,因 ...
- 关于 transparent rgba display:none; opacity visiblity 关于em
关于 transparent rgba display:none; opacity visiblity display 之后不会占位. 其余都会占位 opacity 还会继承,子元素也会 ...
- display:none和visibility:hidden两者的区别
display与元素的隐藏 如果给一个元素设置了display: none,那么该元素以及它的所有后代元素都会隐藏,它是前端开发人员使用频率最高的一种隐藏方式.隐藏后的元素无法点击,无法使用屏幕阅读器 ...
- [转]CSS Display(显示) 与 Visibility(可见性)
CSS Display(显示) 与 Visibility(可见性) display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏. 隐藏元素 - display:non ...
- CSS display:inline和float:left两者区别探讨
本文和大家重点讨论一下CSS display:inline和float:left两者的区别,CSS display是指显示状态,inline表示内联,特点是紧贴着前一个内联元素,通常默认的内联元素有 ...
随机推荐
- TP5.0学习笔记
TP5目录结构介绍 application目录是应用目录,我们整个应用所有的内容都写在这个目录中,在后续开发中,我们更多的时候都是在编写这个目录中的文件.在它里边有一个index文件夹,它叫做模块儿, ...
- django信号中的条件判断不符合时如何提示错误并返回
在Django中,如果你在信号(Signal)处理函数中需要进行条件判断,如果条件不符合,你可以触发一个异常,并在视图或其他地方捕获这个异常,然后返回相应的错误提示. 以下是一个简单的例子,演示如何在 ...
- [oeasy]python0025_ 顺序执行过程_流水_流程_执行次序
顺序执行过程_流水_流程_执行次序 回忆上次内容 上次 熟悉了 vim编辑器 操作 作用 w 向前移动光标一个word b 向后移动光标一个word :r oeasy.py 读取文件到当前文件缓存 g ...
- GUI随笔
####GUI是一个很大的话题,从Win32(windows基础API编程)到MFC,QT再到DuiLib,WPF,Winform再到Html这是一个很漫长的路,下面是我对这个界面库的见解 就对我而言 ...
- python与c/java的异
1.注释 #为单行注释 """ 这里是多行注释 """ ''' 这个也可以是多行注释 ''' 2.赋值 在python中赋值不需要特定变量的 ...
- WordPress基础之菜单导航栏设置
菜单是WordPress的一项重要功能,方便用户快速打开网站页面,我们通常说的网站导航栏就是菜单.菜单通常显示在网站的顶部或者底部,以Apple官网的为例: 这篇文章我们就学习下:如何添加.删除菜单: ...
- 【FastDFS】环境搭建 02 测试
自带工具测试: 编辑客户端配置文件: vim client.conf 配置完成后,随便上传一个图片到root目录下 运行FastFDS文件上传程序,并将客户端配置文件作为加载参数1,要上传的图片文件位 ...
- 【Java】API 时区ID类
主要是用以获取时区ID @Test void contextLoads() { ZoneId zoneId = ZoneId.systemDefault(); // System.out.printl ...
- python性能分析器:cProfile
代码: (1) import cProfile import re cProfile.run('re.compile("foo|bar")') 运行结果: (2) import c ...
- 低端hdmi视频采集卡的替代方案——向日葵远控
前一阵看直播推货入手了一款hdmi视频采集卡,如下: ======================================================= 使用这个视频采集卡发现两个问题: ...