博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
css实现显示隐藏的5种方法
阅读量:5064 次
发布时间:2019-06-12

本文共 2264 字,大约阅读时间需要 7 分钟。

css实现显示隐藏是在写前端时经常遇见的问题,我根据自己的经验以及网上的方法,一共总结了5种。下面我分析一下它们各自的特点。

1. dispalay:none

这是最简单也是最容易想到的方法。

.hide {

  display:none;

}

dispaly:none的特点就是会使其子代元素全部隐藏起来,被隐藏的元素不占任何的空间,就连盒模型也也不生成。根据文档流的走向,右边的元素会往左边排,下面的素会往上面排,这点在开发的时候需要注意,不要将页面的布局给破坏了。

但是打开控制台选中该元素你会发现,其实它的DOM还是存在的,所以在js中还是可以通过DOM节点来访问被隐藏的元素。

 

2. visibility:hidden

这个方法也是将元素隐藏起来,跟display的区别是, visibility:hidden将元素隐藏了,但是元素所占的空间还是保留的。也就是说其右边的元素不会往左排,下面的元素也不会网上排。

注意一点:若在父级元素设置: visibility:hidden,而在子元素中设置: visibility:visible,则该子元素以及子元素的子孙元素都是可见的。

这个方法的DOM元素也是存在的,可以通过DOM节点来访问被隐藏的元素。

如下例:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://cdn.bootcss.com/angular.js/1.6.2/angular.min.js"></script>
<style>
div {
height: 200px;
width: 200px;
}
.div-green {
background-color: green;
visibility: hidden;
}
.div-red {
background-color: red;
}
.visible {
visibility: visible;
}
</style>
</head>
<body>
<h1>normal div</h1>
<div class="div-green">
<div >
<a>test visibility</a>
</div>
<div>
<a>test visibility2</a>
</div>
</div>
<div class="div-red">div2</div>
</body>
</html>

将绿色的div设置了visibility:hidden,其输出结果是,绿色的div被隐藏起来了:

再将绿色div的子元素加一个visible类:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://cdn.bootcss.com/angular.js/1.6.2/angular.min.js"></script>
<style>
div {
height: 200px;
width: 200px;
}
.div-green {
background-color: green;
visibility: hidden;
}
.div-red {
background-color: red;
}
.visible {
visibility: visible;
}
</style>
</head>
<body>
<h1>normal div</h1>
<div class="div-green">
<div class="visible">
<a>test visibility</a>
</div>
<div>
<a>test visibility2</a>
</div>
</div>
<div class="div-red">div2</div>
</body>
</html>

输出结果如下:

从上图可以看出子元素中设置了visibility:visible 子元素变成可见了。

 3. opacity

opacity是设置元素的透明度,取值 0~1,0就是全透明,1就是不透明,opacity:0只是在视觉上让人以为元素以及其子代元素被隐藏了,其实该元素还是占据空间的。通过js也是可以访问该DOM节点。

4. position

不想看到一个元素?很简单啊,把它移到一个自己看不见的地方就行了,position设置隐藏就是用的这种方法,将元素的position设置为一个absoulute,让后将其位置超出屏幕的位置,不就是看不见了吗。

eg:

.hide {

  position: absolute;

  top: -9999px;

  left: -9999px;

}

5.clip-path

这种方法不是很常用,可以了解一下:

clip-path还没被IE或者Edge完全支持,如果在clip-path中使用外部的svg文件,浏览器的支持度会更低,使用clip-path方法的代码如下:

.hide {

  clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);

}

转载于:https://www.cnblogs.com/ycherry/p/7268446.html

你可能感兴趣的文章
【IdentityServer4文档】- 欢迎来到 IdentityServer4
查看>>
安全测试的一些漏洞和测试方法
查看>>
spring框架学习笔记(八)
查看>>
vim格式化代码
查看>>
探索 ConcurrentHashMap 高并发性的实现机制
查看>>
Web服务器超时处理
查看>>
keil C 51 strlen库函数使用
查看>>
JS取得绝对路径
查看>>
Mysql 客户端查询结果如何保存到本地而不是服务端?
查看>>
排球积分程序(三)——模型类的设计
查看>>
SqlServer 游标
查看>>
java axis2解析xml(wsdl返回List数据)
查看>>
内存 分析
查看>>
POJ 2251 Dungeon Master
查看>>
23.泛型
查看>>
LeetCode "475. Heaters"
查看>>
编程原则 流水账
查看>>
C++ 生成洛伦兹的蝴蝶
查看>>
ps -ef | grep 查看进程命令
查看>>
Swift-开发 # 1.2版本迁移
查看>>