display、visibility、opacity三个属性隐藏元素之间的异同点一直是前端面试面试的常考题。

除了display、visibility、opacity三个属性可以隐藏元素之外,是否还存在其它属性可以隐藏元素呢?

它们之间又存在什么必然的联系呢?

这就是我们今天要讨论的问题css隐藏元素的7种思路

前言

display、visibility、opacity三个属性隐藏元素之间的异同点一直是前端面试面试的常考题。属性值是否在页面上显示注册点击事件是否有效是否存在于可访问性树中displaynone否否否

visibilityhidden否否是

opacity0否是是

除了display、visibility、opacity三个属性可以隐藏元素之外,是否还存在其它属性可以隐藏元素呢?它们之间又存在什么必然的联系呢?这就是我们今天要讨论的问题。

注:由于篇幅有限,本文并未提及一些像filter:alpha(opacity=0); zoom:0;之类的兼容属性。

第一种:移除出可访问性树

display : none

display属性可以设置元素的内部和外部显示类型。将display设置为none会将元素从可访问性树中移除。

代码:display : none按钮按钮

第二种:隐藏元素

visibility: hidden

将visibility设置为hidden会使元素不可见,但此时元素仍然位于可访问性树中(display: none时元素被移出可访问性树 ),注册点击事件无效。

代码:visibility: hidden按钮按钮

第三种:透明

opacity: 0

opacity(不透明度),取值范围0(完全透明) ~ 1(完全不透明),将opacity设置为0会使元素完全透明,此时元素不可见(因为它是透明的),仍然位于可访问性树中,注册点击事件有效。

代码:opacity: 0按钮按钮

transparent

将元素的background-color、color和border-color设置为transparent(透明),此时元素不可见(因为它是透明的),仍然位于可访问性树中,注册点击事件有效。

代码:transparent按钮按钮

rgba(0,0,0,0)

从技术上说,transparent是 rgba(0,0,0,0) 的简写,将元素的background-color、color和border-color设置为rgba(0,0,0,0)(透明),此时元素不可见(因为它是透明的),仍然位于可访问性树中,注册点击事件有效。

代码:rgba(0,0,0,0)按钮按钮

rgba只需要第四个参数为0即可达到隐藏元素的效果。

hsla(0,0%,0%,0)

hsla使用元素隐藏的机制与rgba一致,都是由第四个参数Alpha所控制的,将元素的background-color、color和border-color设置为hsla(0,0%,0%,0),此时元素不可见(因为它是透明的),仍然位于可访问性树中,注册点击事件有效。

代码:hsla(0,0%,0%,0)按钮按钮

hsla和rgba一致,只需要第四个参数为0即可达到隐藏元素的效果。

filter: opacity(0%)

filter(滤镜) opacity(0% ~ 100%)转化图像的透明程度,值范围于0%(完全透明) ~ 100%(完全不透明)之间。将元素的filter设置为opacity(0%),此时元素不可见(因为它是透明的),仍然位于可访问性树中,注册点击事件有效。

代码:filter: opacity(0%)按钮按钮

第四种:缩放

transform: scale(0, 0)

将transform设置为scale(0, 0)会使元素在x轴和y轴上都缩放到0像素,此元素会显示,也会占用位置,但是因为已经缩放到0%,元素和内容占用像素比为0*0,所以看不到此元素及其内容,也无法点击。

代码:transform: scale(0, 0)按钮按钮

width: 0;height: 0;overflow: hidden

将width和height都设置为0,使元素占用像素比为0*0,但此时会出现两种情况:

当元素的display属性为inline时,元素内容会将元素宽高拉开;

当元素的display属性为block或inline-block时,元素宽高为0,但元素内容依旧正常显示,此时再加上overflow:hidden;即可裁剪掉元素外的元素内容。

这个方法跟transform: scale(0,0)的不同点在于:transform: scale(0,0)是将元素与内容都进行缩放,而此方法是将元素缩放到0px,再裁剪掉元素外的元素内容。

代码:width: 0;height: 0;overflow: hidden按钮按钮

第五种:旋转

transform: rotateX(90deg)

将元素沿着X轴顺时针旋转90度达到隐藏元素的效果。

代码:transform: rotateX(90deg)按钮按钮

transform: rotateY(90deg)

将元素沿着Y轴顺时针旋转90度达到隐藏元素的效果。

代码:transform: rotateY(90deg)按钮按钮

第六种:脱离屏幕显示位置

脱离屏幕显示位置同样可以使元素不可见,但是达到这种效果的css样式太多了,这里只举例一种情况说明。

代码:脱离屏幕显示位置按钮按钮

第七种:遮盖

使用元素遮盖也可以使元素不可见,因为达到这种效果的css样式也很多,故这里只举例一种情况说明。

代码:遮盖按钮按钮

结尾

本人才疏学浅,出现错误之处,还望指出。

实现在页面上隐藏某个元素的css,有趣的css—隐藏元素的7种思路相关推荐

  1. 在html中 常见的块级元素有哪些,常见的css块级元素有哪些

    css块级元素介绍: (学习视频分享:css视频教程) 根据W3C上的解释,就是说block(块级)元素是独占一行显示的.它的兄弟元素必定不会与其在同一行中(除非脱离了文档流).其实,通俗点来说,就是 ...

  2. [css] 在页面上隐藏元素的方法有哪些?

    [css] 在页面上隐藏元素的方法有哪些? position配合z-index; 或者 left/top/bottom/right : -100%:margin-left: -100%;width: ...

  3. linux访问网页元素,Linux_DOM和JAVASCRIPT访问页面上的元素,访问方法:getElementById() - phpStudy...

    DOM和JAVASCRIPT访问页面上的元素 访问方法: getElementById():返回拥用传递给该方法的指定id的第一个对象的引用. getElementsByName():返回拥用传递该方 ...

  4. selenium Element is not clickable because another element obscures it — 点击被页面上其他元素遮住的控件,亲试有效!!!

    点击被页面上其他元素遮住的控件 使用WebDriver点击界面上Button元素时,如果当前Button元素被界面上其他元素遮住了, 或没出现在界面中(比如Button在页面底部,但是屏幕只能显示页面 ...

  5. 页面上有两个元素id相同,js中如何取值

    页面上有两个table,id都是"cont2",现要在js中取到这两个table,改变样式. js实现: var tab2=document.all.cont2(1); var  ...

  6. js隐藏html页面元素高度,如何使用jQuery获取隐藏元素的高度?

    HTML元素可以在jquery hide()函数的帮助下隐藏,或者也可以通过在css中使设置visibility:hidden来轻松隐藏.那么如何使用jquery找到这个隐藏元素的高度?下面本篇文章就 ...

  7. python操作网页界面_python3 操作页面上各种元素的方法

    (1)       控制浏览器 ①控制浏览器窗口大小set_window_size(宽,高) 打开浏览器全屏maximize_window() ②控制浏览器后退back().前进forward() ③ ...

  8. display none 隐藏后怎么显示_web前端入门到实战:元素显示隐藏的9种思路

    我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴 ...

  9. css 隐藏元素 显示元素_使用CSS打印时如何隐藏元素?

    css 隐藏元素 显示元素 Introduction: 介绍: We have come across many challenges while developing a website or we ...

最新文章

  1. 【T10】记住,TCP__IP不是轮询的
  2. swift_046(Swift map,filter, reduce方法)
  3. 说说身边产品的用户体验
  4. MySQL断开SpringBoot_数据库连接中断-spring-springBoot
  5. 【版本工具】Git-浅谈git命令
  6. hadoop(4)——用python代码结合hadoop完成一个小项目
  7. 你可能不知道的package.json
  8. 在2019年6月Teams Community Call上分享的Teams app基础架构视频
  9. spring整合CXF
  10. (43)VHDL实现译码器与解码器
  11. Linux 变量和结构体
  12. 2017年度深圳市知识产权优势企业拟定名单公示(钱多,工资高的公司)
  13. d3 v5 api select
  14. html中怎么不让网页缩放_网页中的形状图形都是怎么画出来的?
  15. 计算机二级 java和web_2016计算机二级web程序设计判断题及答案
  16. ZOJ 1914 Arctic Network
  17. python 货币换算库,货币转换python代码你知道怎么写吗?
  18. android中关闭软键盘
  19. 使用vue全家桶开发音乐App
  20. Photoshop插件-保存-8位通道-16位通道-脚本开发-PS插件

热门文章

  1. 手摸手,带你用 vue 动画实现原生 app 切换效果,丝滑般的体验
  2. SecureCRT 6.7.1 注冊机 和谐 破解 补丁 方法
  3. 【转】Spring mvc 统一异常处理和静态文件的配置
  4. 格式资料python sqlalchemy 查询结果转化为 Json格式
  5. DateTime格式化问题
  6. 组播技术中IP地址到MAC地址的映射
  7. 上周日的讲稿: Debian Packaging
  8. 【0702作业】输出两种菱形(实心菱形和空心菱形)
  9. cURL error 60: SSL certificate problem: unable to get local issuer certifica 解决
  10. 读书印记 - 《清醒:如何用价值观创造价值》