CSS隐藏元素的方法

使用CSS隐藏元素的主要方式有diaplay: none;opacity: 0;visibility: hidden;position: absolute; overflow: hidden;clip-path: polygon(0 0, 0 0, 0 0, 0 0);height: 0; overflow: hidden;

diaplay

display: none;属性依照词义是真正隐藏元素,使用这个属性,被隐藏的元素不占据任何空间,用户交互操作例如点击事件都不会生效,读屏软件也不会读到元素的内容,这个元素的任何子元素也会同时被隐藏。当使用该属性将元素从显示状态切换为隐藏状态时,元素不占据原本的空间,会触发浏览器的重绘与回流。为这个属性添加过渡动画是无效的,他的任何不同状态值之间的切换总是会立即生效。这种方式产生的效果就像元素完全不存在,但在DOM中依然可以访问到这个元素,也可以通过DOM来操作它。

<style type="text/css">
.display-hide{
display: none;
}
</style> <section>
<div id="t1"></div>
</section> <script type="text/javascript">
document.getElementById("t1").addEventListener("click", e => {
alert("第一次点击会隐藏,此后再也无法点击");
e.srcElement.classList.add("display-hide");
})
</script>

opacity

opacity是用以设置透明度的属性,将opacity设置为0只能从视觉上隐藏元素,而元素本身依然占据它自己的位置并对网页的布局起作用,它也将响应用户交互例如点击事件,对于其添加过渡属性可以显示动画效果。对于opacity属性,可以利用其透明的视觉效果制作点击劫持攻击。

<style type="text/css">
.opacity-hide{
opacity: 0;
}
</style> <section>
<div id="t2">opacity</div>
</section> <script type="text/javascript">
document.getElementById("t2").addEventListener("click", e => {
alert("第一次点击会透明,依旧占据原本位置,点击事件依旧有效,动画过渡效果生效");
e.srcElement.classList.add("opacity-hide");
})
</script>

visibility

visibility属性值为hidden的时候,元素将会隐藏,也会占据着自己的位置,并对网页的布局起作用,与opacity不同的是它不会响应任何用户交互,元素在读屏软件中也会被隐藏,如果对于子元素的visibility被设置为visible而父元素的visibility设置为hidden,子元素依旧可以显示而父元素会被隐藏。

<style type="text/css">
.visibility-hide{
visibility: hidden;
}
</style> <section>
<div id="t3">
<div>visibility</div>
<div style="visibility: visible; color: #000;">still show</div>
</div>
</section> <script type="text/javascript">
document.getElementById("t3").addEventListener("click", e => {
alert("第一次点击会隐藏,依旧占据原本位置,点击事件不再生效");
e.srcElement.classList.add("visibility-hide");
})
</script>

position

使用positionoverflow属性的意义就是把元素脱离文档流移出视觉区域,超出屏幕显示的部分隐藏掉,使用这两个属性隐藏主要就是通过控制方向topleftrightbottom达到一定的值,离开当前显示区域并将超出部分裁剪,此外在未隐藏时设定好相关样式,在动态添加class时即可实现过渡动画。

<style type="text/css">
body{
overflow: hidden;
} .posistion-origin{
position: absolute;
left: 5px;
top: 5px;
} .position-hide{
left: -150px;
}
</style> <section style="position: relative;height: 115px;">
<div id="t4" class="posistion-origin" >position</div>
</section> <script type="text/javascript">
document.getElementById("t4").addEventListener("click", e => {
alert("第一次点击会隐藏,元素不占据原本位置,过渡动画有效");
e.srcElement.classList.add("position-hide");
})
</script>

clip-path

clip-path属性使用裁剪方式创建元素的可显示区域,区域内的部分显示,区域外的隐藏,直接将元素裁剪之后即可实现隐藏效果,该属性兼容性一般,具体可以查阅https://caniuse.com/#search=clip-path

<style type="text/css">
.clip-path-hide{
clip-path: polygon(0 0, 0 0, 0 0, 0 0);
}
</style> <section>
<div id="t5" >clip-path</div>
</section> <script type="text/javascript">
document.getElementById("t5").addEventListener("click", e => {
alert("第一次点击会隐藏,元素占据原本位置,点击事件不再生效");
e.srcElement.classList.add("clip-path-hide");
})
</script>

height

类似于positionoverflow的组合,使用height: 0;将元素高度设置为0,使用overflow: hidden将超出部分裁剪隐藏,即可实现隐藏效果,如果需要使用这两个属性制呈现过渡动画的话,需要将height给予一个确定的值,不能是auto

<style type="text/css">
.height-hide{
height: 0 !important;
overflow: hidden;
}
</style> <section>
<div id="t6" >height</div>
</section> <script type="text/javascript">
document.getElementById("t6").addEventListener("click", e => {
alert("第一次点击会隐藏,元素不占据原本位置,点击事件不再生效,过渡动画有效");
e.srcElement.classList.add("height-hide");
})
</script>

代码示例

<!DOCTYPE html>
<html>
<head>
<title>隐藏元素</title>
<style type="text/css"> body{
overflow: hidden;
} section > div:first-child{
width: 100px;
height: 100px;
background-color: blue;
} section{
border-bottom: 1px solid #eee;
padding: 5px;
box-sizing: border-box;
} div{
color: #fff;
transition: all .3s;
} .display-hide{
display: none;
} .opacity-hide{
opacity: 0;
} .visibility-hide{
visibility: hidden;
} .posistion-origin{
position: absolute;
left: 5px;
top: 5px;
} .position-hide{
left: -150px;
} .clip-path-hide{
clip-path: polygon(0 0, 0 0, 0 0, 0 0);
} .height-hide{
height: 0 !important;
overflow: hidden;
} </style>
</head>
<body>
<section>
<div id="t1">display</div>
</section> <section>
<div id="t2">opacity</div>
</section> <section>
<div id="t3">
<div>visibility</div>
<div style="visibility: visible; color: #000;">still show</div>
</div>
</section> <section style="position: relative;height: 115px;">
<div id="t4" class="posistion-origin" >position</div>
</section> <section>
<div id="t5" >clip-path</div>
</section> <section>
<div id="t6" >height</div>
</section>
</body>
<script type="text/javascript">
document.getElementById("t1").addEventListener("click", e => {
alert("第一次点击会隐藏,此后再也无法点击");
e.srcElement.classList.add("display-hide");
}) document.getElementById("t2").addEventListener("click", e => {
alert("第一次点击会透明,依旧占据原本位置,点击事件依旧有效,动画过渡效果生效");
e.srcElement.classList.add("opacity-hide");
}) document.getElementById("t3").addEventListener("click", e => {
alert("第一次点击会隐藏,依旧占据原本位置,点击事件不再生效");
e.srcElement.classList.add("visibility-hide");
}) document.getElementById("t4").addEventListener("click", e => {
alert("第一次点击会隐藏,元素不占据原本位置,过渡动画有效");
e.srcElement.classList.add("position-hide");
}) document.getElementById("t5").addEventListener("click", e => {
alert("第一次点击会隐藏,元素占据原本位置,点击事件不再生效");
e.srcElement.classList.add("clip-path-hide");
}) document.getElementById("t6").addEventListener("click", e => {
alert("第一次点击会隐藏,元素不占据原本位置,点击事件不再生效,过渡动画有效");
e.srcElement.classList.add("height-hide");
})
</script>
</html>

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.cnblogs.com/jing-tian/p/10969109.html
https://blog.csdn.net/cuo9958/article/details/53559826
https://blog.csdn.net/weixin_41910848/article/details/81875725

CSS隐藏元素的方法的更多相关文章

  1. 【前端】CSS隐藏元素的方法和区别

    CSS隐藏元素的方法和区别 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. CSS隐藏元素的几种方法

    使用CSS隐藏元素的方法很多,在这里简单总结一下: 1.display:none display:none 应该是最常用的一种隐藏元素的方法,使用该方法隐藏的元素脱离文档流不占据空间,不会被浏览器解析 ...

  3. CSS“隐藏”元素的几种方法的对比

    本文地址:http://luopq.com/2016/02/15/css-tricks-of-hide-element/,转载请注明 一说起CSS隐藏元素,我想大部分小伙伴们都会想到的第一种方法就是设 ...

  4. css隐藏元素的六类13种方法

    隐藏元素的方法 隐藏元素的方法可以总结为六类:直接隐藏.对溢出内容隐藏.对元素透明度进行调整.将元素移除当前屏幕.对元素的层级关系进行调整.对元素进行裁剪 只有对元素的透明度进行调整才可以点击,其余都 ...

  5. css隐藏元素的几种方法与区别

    css隐藏元素的几种方法与区别 一:display:none;隐藏不占位 display 除了不能加入 CSS3 动画豪华大餐之外,基本效果卓越,没什么让人诟病的地方. 二:position:abso ...

  6. CSS隐藏元素的几种妙法

    一说起CSS隐藏元素,我想大部分小伙伴们都会想到的第一种方法就是设置display为none.这是最为人所熟知也是最常用的方法.我相信还有不少人想到使用设置visibility为hidden来隐藏元素 ...

  7. 有趣的css—隐藏元素的7种思路

    css隐藏元素的7种思路 前言 display.visibility.opacity三个属性隐藏元素之间的异同点一直是前端面试面试的常考题. 属性 值 是否在页面上显示 注册点击事件是否有效 是否存在 ...

  8. div+css隐藏内容样式方法

    div css隐藏内容样式方法     div+css隐藏内容方法 一般情况下,css隐藏的用途,如下: 1.对文本的隐藏 2.隐藏超链接(另类黑链) 3.对统计代码隐藏 4.隐藏超出图片 5.css ...

  9. CSS技巧: CSS隐藏文字的方法(CSS text-indent: -9999px;)

    建站过过程中朋友喜欢把网站名称用H1表示,但从美观考虑,要用logo图片来代替h1,这时需要隐藏h1内的这段文字,但又不能对搜索引擎不友好,否则就失去了定义h1标签的意义. 在CSS中如何以图代字,找 ...

  10. 用css隐藏元素的5种方法

    .green { width: 100px; height: 100px; background-color: #a0ee00; text-align: center; float: left; ma ...

随机推荐

  1. SpringBoot实现限流注解

    SpringBoot实现限流注解 在高并发系统中,保护系统的三种方式分别为:缓存,降级和限流. 限流的目的是通过对并发访问请求进行限速或者一个时间窗口内的的请求数量进行限速来保护系统,一旦达到限制速率 ...

  2. [转帖]聊聊TPS、QPS、CPS概念和区别

    https://cloud.tencent.com/developer/article/1859053 TPS 概念 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒.它是 ...

  3. [转帖]Shell编程之函数

    目录 Shell函数 使用Shell函数的优点 Shell 函数定义 使用原则 函数传参 函数变量的作用范围 函数递归 阶乘 递归目录 函数库 Shell函数 将命令序列按格式写在一起 可方便重复使用 ...

  4. [转帖]Linux—解压缩命令总结(tar/zip)

    https://www.jianshu.com/p/1ad5d852d13b 1 tar 1.2 tar介绍   tar命令是linux系统中对文件和目录解压缩命令.tar命令可以用于对后缀名为.ta ...

  5. 【转帖】用pycharm开发django项目示例

    https://www.cnblogs.com/kylinlin/p/5184592.html pycharm开发django工程(一) 在pycharm(企业版)中新建Django工程,注意使用虚拟 ...

  6. [转帖]Armv9 架构相比 Armv8 有何升级/区别:全面性能提升

      https://baijiahao.baidu.com/s?id=1695708603852200216&wfr=spider&for=pc 自 2011 年 10 月 Arm 首 ...

  7. Windows 远程时提示CredSSP 加密数据库修正 问题的简单处理.

    最近在公司内部远程机器的时候更新了 windows上面远程部分服务器的时候出现异常如图示: 查了下 还是有比较简单的解决办法的 问题是需要在 自己的客户端机器上面进行设置 不需要修改服务器端的服务器. ...

  8. 最简单的以CentOS为base images 安装 Nodejs等操作的方法

    镜像内安装NodeJS的简单方法 公司内有产品需要安装nodejs以便进行相关操作,Linux和Windows时没有问题,但是如果是镜像的话可能会稍微复杂一点, 这里简单进行一下总结, 以便备忘. 1 ...

  9. HBase深度历险 | 京东物流技术团队

    简介 HBase 的全称是 Hadoop Database,是一个分布式的,可扩展,面向列簇的数据库,是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案.本文会像剥洋葱一样,层 ...

  10. 【JS 逆向百例】网洛者反爬练习平台第七题:JSVMPZL 初体验

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...