CSS隐藏元素的方法
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
使用position与overflow属性的意义就是把元素脱离文档流移出视觉区域,超出屏幕显示的部分隐藏掉,使用这两个属性隐藏主要就是通过控制方向top、left、right、bottom达到一定的值,离开当前显示区域并将超出部分裁剪,此外在未隐藏时设定好相关样式,在动态添加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
类似于position与overflow的组合,使用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隐藏元素的方法的更多相关文章
- 【前端】CSS隐藏元素的方法和区别
CSS隐藏元素的方法和区别 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- CSS隐藏元素的几种方法
使用CSS隐藏元素的方法很多,在这里简单总结一下: 1.display:none display:none 应该是最常用的一种隐藏元素的方法,使用该方法隐藏的元素脱离文档流不占据空间,不会被浏览器解析 ...
- CSS“隐藏”元素的几种方法的对比
本文地址:http://luopq.com/2016/02/15/css-tricks-of-hide-element/,转载请注明 一说起CSS隐藏元素,我想大部分小伙伴们都会想到的第一种方法就是设 ...
- css隐藏元素的六类13种方法
隐藏元素的方法 隐藏元素的方法可以总结为六类:直接隐藏.对溢出内容隐藏.对元素透明度进行调整.将元素移除当前屏幕.对元素的层级关系进行调整.对元素进行裁剪 只有对元素的透明度进行调整才可以点击,其余都 ...
- css隐藏元素的几种方法与区别
css隐藏元素的几种方法与区别 一:display:none;隐藏不占位 display 除了不能加入 CSS3 动画豪华大餐之外,基本效果卓越,没什么让人诟病的地方. 二:position:abso ...
- CSS隐藏元素的几种妙法
一说起CSS隐藏元素,我想大部分小伙伴们都会想到的第一种方法就是设置display为none.这是最为人所熟知也是最常用的方法.我相信还有不少人想到使用设置visibility为hidden来隐藏元素 ...
- 有趣的css—隐藏元素的7种思路
css隐藏元素的7种思路 前言 display.visibility.opacity三个属性隐藏元素之间的异同点一直是前端面试面试的常考题. 属性 值 是否在页面上显示 注册点击事件是否有效 是否存在 ...
- div+css隐藏内容样式方法
div css隐藏内容样式方法 div+css隐藏内容方法 一般情况下,css隐藏的用途,如下: 1.对文本的隐藏 2.隐藏超链接(另类黑链) 3.对统计代码隐藏 4.隐藏超出图片 5.css ...
- CSS技巧: CSS隐藏文字的方法(CSS text-indent: -9999px;)
建站过过程中朋友喜欢把网站名称用H1表示,但从美观考虑,要用logo图片来代替h1,这时需要隐藏h1内的这段文字,但又不能对搜索引擎不友好,否则就失去了定义h1标签的意义. 在CSS中如何以图代字,找 ...
- 用css隐藏元素的5种方法
.green { width: 100px; height: 100px; background-color: #a0ee00; text-align: center; float: left; ma ...
随机推荐
- 【ThreadX-GUIX】Azure RTOS GUIX和Azure RTOS GUIX Studio概述
Azure GUIX嵌入式GUI是Microsoft的高级工业级GUI解决方案,专门针对深度嵌入式,实时和IoT应用程序而设计.Microsoft还提供了名为Azure RTOS GUIX Studi ...
- c# 创建一个只接收消息的窗口
/// <summary> /// WM_COPYDATA消息,进程间传输信息专用结构 /// </summary> public struct COPYDATASTRUCT ...
- 03-MySQL字段的数据类型
前言 MySQL 中的字段,主要有四种数据类型: 整型(整数) 小数 字符串类型 时间日期类型 下面来详细讲一讲. 整数类型 整数类型的分类 MySQL中,整型有五种: 迷你整型:tinyint,使用 ...
- MySQL高可用九种方案
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 参考视频 MMM 方案(单主) MySQL 高可用方案之 MM ...
- [转帖]京东大佬细说:Nginx反向代理时保持长连接,看完直呼"学到了!"
https://mp.weixin.qq.com/s?__biz=MzU1MzE2NzIzMg==&mid=2247488405&idx=1&sn=7081ff4e0ac1de ...
- [转帖]Nginx 安全优化
目录 前言 1.使用 SSL/TLS 证书 2.使用安全密钥交换机制 3.禁用旧的 SSL/TLS 协议 4.禁用 SSL/TLS 弱密码套件 5.禁用不需要的 HTTP 方法 6.防止缓冲区溢出攻击 ...
- [转帖]MySQL数据类型(decimal的存储大小)
本来还以为MySQL的数据类型挺简单的,没想到竟然有很多坑,容我仔细道来 MySQL数据类型 整数类型(注意是字节) 浮点型(重点关注decimal) 字符型(注意这是4.x版本的定义,5.x以后已经 ...
- [转帖] 如何kill一条TCP连接?
https://www.cnblogs.com/codelogs/p/16838850.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 如果你的程序写 ...
- 基于华为fusionstorage的块存储CSI
承接上文,块存储的CSI要比对象存储复杂一些,但总的处理逻辑还是一致的.下面以华为fusionstorage的CSI为例进行介绍,该插件支持了多个后端存储,如fusionstorage和oceanst ...
- 解决跨域问题的8种方法,含网关、Nginx和SpringBoot~
跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-Origin Policy),即只允许页面请求同源(相同协议.域名和端口)的资源,当 JavaScript 发起的请求跨越了同源策略, ...