总结——visibility和display
最近工作中用到了显示和隐藏——visibility和display,它们两个都有显示隐藏的意思,但是又有所差别,接下来我们先看一下效果吧。
当没有效果的时候,我们展示一下源码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style> body, table {
font-size: 12px;
} table {
table-layout: fixed;
empty-cells: show;
border-collapse: collapse;
margin: auto;
} td {
height: 30px;
width: 556px;
} h1, h2, h3 {
font-size: 12px;
margin: ;
padding: ;
} .table {
border: 1px solid #cad9ea;
color: #;
} .table th {
background-repeat: repeat-x;
height: 30px;
} .table td, .table th {
border: 1px solid #cad9ea;
padding: 1em ;
} .table tr.alter {
background-color: #f5fafe;
} </style>
</head>
<body>
<table class="table">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
首先,先看一下visibility:hidden和visibility:visible
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style> body, table {
font-size: 12px;
} table {
table-layout: fixed;
empty-cells: show;
border-collapse: collapse;
margin: auto;
} td {
height: 30px;
width: 556px;
} h1, h2, h3 {
font-size: 12px;
margin: ;
padding: ;
} .table {
border: 1px solid #cad9ea;
color: #;
} .table th {
background-repeat: repeat-x;
height: 30px;
} .table td, .table th {
border: 1px solid #cad9ea;
padding: 1em ;
} .table tr.alter {
background-color: #f5fafe;
} </style>
</head>
<body>
<table class="table">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="visibility:hidden">
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
上面这段代码在页面中显示的效果:上设置visibility属性为hidden,第二行会消失——也就是我们说的隐藏。但在页面上保留该元素的空间。
总结visibility特性:
| visibility:visible ——元素可见,默认值 |
| visibility:hidden ——元素不可见,但仍然为其保留相应的空间。使用该属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。 |
| visibility:collapse ——只对table对象起作用,能移除行或列但不会影响表格的布局。如果这个值用在table以外的对象上则表现为hidden |
| visibility:inherit ——继承上级元素的visibility值 |
| js的style.visibility ——
将元素visibility属性设为 hidden,隐藏该元素内容,但占用域的空间。 |
接着,看一下display:none和display:block
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style> body, table {
font-size: 12px;
} table {
table-layout: fixed;
empty-cells: show;
border-collapse: collapse;
margin: auto;
} td {
height: 30px;
width: 556px;
} h1, h2, h3 {
font-size: 12px;
margin: ;
padding: ;
} .table {
border: 1px solid #cad9ea;
color: #;
} .table th {
background-repeat: repeat-x;
height: 30px;
} .table td, .table th {
border: 1px solid #cad9ea;
padding: 1em ;
} .table tr.alter {
background-color: #f5fafe;
} </style>
</head>
<body>
<table class="table">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="display:none">
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
当第二行设置为display:none的时候,第二行会消失并且原来所在的位置变成第三行。当设置为display:block,又会显示出来。
总结display:
block:
表现为一个块级元素(一般情况下独占一行)
当display被设置为block(块)时,容器中所有的元素将会被当作一个单独的块,就像<DIV>元素一样,它会在那个点被放入到页面中。(实际上你可以设置<span>的display:block,使其可以像<DIV>一样工作。
inline:
表现为一个行级元素(一般情况下不独占一行)
将display设置为inline,将使其行为和元素inline一样---即使它是普通的块元素如<DIV>,它也将会被组合成像<span>那样的输出流。
none:
元素不可见,并且不为其保留相应的位置
最后是display被设置:none,这时元素实际上就从页面中被移走,它下面所在的元素就会被自动跟上填充。
Display的使用
1、display默认属性值为块级的元素:
adress,quote,body,xmp,center,col,colgroup,dd,dtr,div,
dl,dt,fieldset,form,hn,hr,iframe,legend,listing,marquee,
menu,ol,p,plaintext,pre,table,td,th,tr,ul
2、display默认属性值为none的元素:
br,frame,nextid,tbody,tfoot,thead
3、li元素的display属性默认值为:list-item
4、其他元素display属性默认值都为inline
Display的特性
改变元素的display属性将对周围元素造成的影响有:
1、在属性值设为block的元素后面添加新行
2、从属性值设为inline的元素所在行中删除一行
3、隐藏属性值设为none的元素并且释放该元素在文档中所占的物理空间,对于其他元素来说,相当于该元素不存在,因此,该元素的位置被其他元素顶替
display:none;
使用该属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;
display:none:
1、JS读取元素属性值
如果在样式文件或页面文件代码中直接用display:none对元素进行了隐藏,载入页面后,在没有通过js设置样式使元素显示的前提下,使用js代码会无法正确获得该元素的一些属性,比如offSetTop,offSetLeft等,返回的值会为0,通过js设置style.display来使元素显示后才能正确获得这些值。
2、SEO优化时需要注意
使用display:none隐藏的元素不会被百度等搜索网站检索,会影响到网站的SEO,某些情况下可以使用left:-100000px来达到同样效果。
3、样式文件
如果是通过样式文件或<style>css</style>方式来设置元素的display:none样式,用js设置style.display=""并不能使元素显示,可以使用block或inline等值来代替。通过style="display:none"直接在元素上进行的设置不会有这个问题
style.display
将元素display属性设为 block,会在该元素后换行。
将元素display属性设为 inline,会消除元素换行。
将元素display属性设为 none,隐藏该元素内容,且不占用域的空间。
总结——visibility和display的更多相关文章
- visibility和display的异同
都有隐藏节点的作用. visibility:hidden; display:none; (1)visibility 规定了元素是否可见,即使不可见也会占用上面的空间,在这里就是在指它与display的 ...
- visibility,display区别
visibility:hidden,display:none 前者隐藏位置还在,后者隐藏位置消失
- CSS:opacity:0,visibility:hidden,display:none的区别
CSS中opacity=0,visibility=hidden,display=none的时候,三者有什么区别呢?? 参考了stackoverflow的博客,才发现区别如下所示: Here is a ...
- 表单元素(控件)不可见,你用visibility还是display?(转)
属性大比拼:visibility和display的介绍 今天在做一个表单时涉及到这方面,当选中相应的选项后设置相应的几个元素(控件可见或不可见),后来还是用了visibility来实现.我们先来看下v ...
- CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析
说明 opacity 用来设置透明度 display 定义建立布局时元素生成的显示框类型 visibility 用来设置元素是否可见. opacity.visibility.display 这三个属性 ...
- visibility和display的区别
大多数人很容易将CSS属性display和visibility混淆,它们看似没有什么不同,其实它们的差别却是很大的. visibility属性用来确定元素是显示还是隐藏的,这用visibility=& ...
- CSS visibility与display 属性
所有主流浏览器都支持 visibility 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持 "inherit" 和 "colla ...
- transition与visibility与display
http://www.zhangxinxu.com/wordpress/2013/05/transition-visibility-show-hide/ 术语解释是: visibility: 离散步骤 ...
- HTML 显示/隐藏DIV的技巧(visibility与display的差别)
参考链接:http://blog.csdn.net/szwangdf/article/details/1548807 div的visibility可以控制div的显示和隐藏,但是隐藏后页面显示空白: ...
随机推荐
- OC基础之方法和参数的命名规范
以前学过C/C++/Java/C#语言的童鞋可能刚开始对于OC的方法和参数的命名规范大为不爽 举例来说,如下一个OC方法: - (void)tableView:(UITableView *)table ...
- OC和JS之间的交互
OC和JS之间的交互 目录 对OC和JS之间交互的理解 JS调用OC OC调用JS 对OC和JS之间交互的理解 JS调用OC JS文件 function sendCommand(cmd,param){ ...
- cocos2d-x中CCTextureCache图片资源的异步加载
如果没有预先加载图片,则可以通过addImageAsync()函数实现异步加载,该函数通过创建一个加载线程来加载图片,并且在主线程中通过调用回调函数来读取该图片资源纹理.其主要过程如下: 1.创建线程 ...
- careercup-高等难度 18.9
18.9 随机生成一些数字并传入某个方法.编写一个程序,每当收到新字符数字时,找出并记录中位数. 类似:设计一个数据结构,包括两个函数,插入数据和获得中位数 解法: 一种解法是使用两个优先级堆:一个大 ...
- ext2元数据结构
概述 本篇博客主要描述ext2文件系统中的各种典型元数据结构,其中包括文件系统级别的元数据,如超级块,块组描述符等,也包括文件级的元数据,如文件目录项,文件inode等. ex ...
- Golang学习 - io/ioutil 包
------------------------------------------------------------ // Discard 是一个 io.Writer 接口,调用它的 Write ...
- linux 安装svn最新版本
一.安装svn yum install -y subversion-* 结果为Complete就为正确 查看svn版本号 svnserve --version 1.6.11版本 mkdir /opt/ ...
- LeetCode4 Median of Two Sorted Arrays
题目: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the ...
- CSS 之 嵌套 margin-top 处理
如下代码: <div style=" width:1000px; height:700px; margin:auto;"> <div style=" w ...
- EF——Guid类型数据的自增长、时间戳和复杂类型的用法 03 (转)
EF里Guid类型数据的自增长.时间戳和复杂类型的用法 通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文 ...