博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
display: none和visibility: hidden的区别
阅读量:5806 次
发布时间:2019-06-18

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

(一身傲骨,不畏冰霜)

 

CSS: display: none和visibility: hidden的区别:

通俗的说法display: none不占用原来的位置,而visibility: hidden保留原来的位置。

问题:为什么display: none不占用原来的位置,但可以用js操作元素节点呢?

解答:根据浏览器的渲染原理,浏览器会解析HTML标签生成DOM Tree,解析CSS生成CSSOM,然后将DOM Tree和CSSOM合并生成Render Tree,元素在Render Tree中对应0或多个盒子,然后浏览器以盒子模型的信息布局和渲染界面。而设置为display: none的元素则在Render Tree中没有生成对应的盒子模型,因此后续的布局、渲染工作就没有了,至于DOM操作还是可以的。

两者比较:

1、父元素设为display: none时,子元素继承父元素的情况(子元素设置为display: block也无效);

2、父元素设为visibility: hidden,而子元素可以设置为visibility: visible并且生效;

3、display: none的元素无法响应任何事件,visibility: hidden的元素可在冒泡阶段响应事件;

4、CSS中的counter会忽略display: none的元素,不会忽略visibility: hidden的元素;

5、display: none的元素设置Transition无效,visibility: hidden的元素设置Transition有效;

6、display变化时将触发reflow,visibility变化不会触发reflow;

7、display: none和visibility: hidden的元素都无法获取焦点;

8、display: none和visibility: hidden都不影响form表单提交数据,但当表单提交时依然会将隐藏的元素的值提交上去;

 

转载于:https://www.cnblogs.com/weijuanran/p/CSS.html

你可能感兴趣的文章
如何理解EM算法
查看>>
nginx 域名跳转一例~~~(rewrite、proxy)
查看>>
我的友情链接
查看>>
linux用户家目录无损迁移到独立硬盘
查看>>
文件查找
查看>>
shell编程前言(一)
查看>>
5、centos7.*配置yum的EPEL源及其它源
查看>>
JSON前后台简单操作
查看>>
shell中一些常见的文件操作符
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
使用第三方类、库需要注意的正则类RegexKitLite的使用
查看>>
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
设计模式之-工厂模式、构造函数模式
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>