JAVASCRIPT style 中visibility和display之间的区别


Posted in Javascript onJanuary 22, 2010

当visibility被设置为"hidden"的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置。
---------------------------------------------------------------
例子:

<script language="JavaScript"> 
function toggleVisibility(me){ 
if (me.style.visibility=="hidden"){ 
me.style.visibility="visible"; 
} 
else { 
me.style.visibility="hidden"; 
} 
} 
</script> 
<div onclick="toggleVisibility(this)" style="position:relative">第一行文本将会触发"hidden"和"visible"属性,注意第二行的变化。</div> 
<div>因为visibility会保留元素的位置,所以虽然第一行看不见了但位置还在,第二行内容不会上下移动。</div>

解释:注意到,当元素被隐藏之后,就不能再接收到其它事件了,所以在第一段代码中,当其被设为"hidden"的时候,就不能再接收响应到事件了,因此也就无法通过鼠标点击第一段文本令其显示出来。
---------------------------------------------------------------
另一方面,display属性就有一点不同了。visibility属性是隐藏元素但保持元素的浮动位置,而display实际上是设置元素的浮动特征。
当display被设置为block(块)时,容器中所有的元素将会被当作一个单独的块,就像<div>元素一样,它会在那个点被放入到页面中。(实际上你可以设置<span>的display:block,使其可以像<div>一样工作。
将display设置为inline,将使其行为和元素inline一样---即使它是普通的块元素如<div>,它也将会被组合成像<span>那样的输出流。
--------------------------------------------------------------
例子:
<script language="JavaScript"> 
function toggleDisplay(me){ 
if (me.style.display=="block"){ 
me.style.display="inline"; 
alert("文本现在是:'inline'."); 
} 
else { 
if (me.style.display=="inline"){ 
me.style.display="none"; 
alert("文本现在是:'none'. 3秒钟后自动重新显示。"); 
window.setTimeout("blueText.style.display='block';",3000,"JavaScript"); 
} 
else { 
me.style.display="block"; 
alert("文本现在是:'block'."); 
} 
} 
} 
</script> 
<div>在<span id="blueText" onclick="toggleDisplay(this)" style="color:blue;position:relative;cursor:hand;">蓝色</span>文字上点击来查看效果.</div>

---------------------------------------------------------------
最后是display被设置:none,这时元素实际上就从页面中被移走,它下面所在的元素就会被自动跟上填。(此时应用display: none;的元素相当于消失,而visibility: hidden;则只表示隐藏,位置还在。)
---------------------------------------------------------------
display 属性分别为block, inline, none 值及使用visibility: hidden;的情况调试示例:
<h1>display 属性分别为block, inline, none 值及使用visibility: hidden;的情况调试</h1> 
<P><SPAN id="oSpan" style="background-color: #CFCFCF;">This is a SPAN</SPAN> in a sentence.</P> 
<P> 
<input type=button value="Inline" onclick="oSpan.style.display='inline'"> 
<input type=button value="Block" onclick="oSpan.style.display='block'"> 
<input type=button value="None" onclick="oSpan.style.display='none'"> 
<input type=button value="Hidden" onclick="oSpan.style.visibility='hidden'"><input type=button value="Visible" onclick="oSpan.style.visibility='visible'"> 
</P> 
<UL> 
<LI>将元素设为 block,会在该元素后换行。</LI> 
<LI>将元素设为 inline,会消除元素换行。</LI> 
<LI>将元素设为 none,隐藏该元素内容。</LI> 
</UL>

《太难了》:
同时,关于display:inline;和float:left;两者的区别可以参看该篇文章:
(display是指显示状态,inline表示内联,特点是紧贴着前一个内联元素,通常默认的内联元素有span,a,em,strong等。而float表示的是浮动,float:left,是针对块级元素的浮动形式,是不同形式的两种状态。)http://www.andymao.com/andy/post/42.html
http://bbs.blueidea.com/thread-2596793-1-1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>float &inline</title> 
<style> 
*{text-align:center;padding:4px;} 
div,p{text-align:left;} 
span{/*float:right;*/ background:#f5f5f5;border-left:1px #eee solid;border-top:1px #eee solid;border-right:1px #ccc solid;border-bottom:1px #ccc solid;} 
ul#inline li{ display:inline; list-style:none;border-left:1px #ccc solid;width:300px; background:#f5f5f5;/* float:left*/;} 
ul#float li{ float:left;display:inline; list-style:none;border-left:1px #666 solid;width:300px; background:#f5f5f5; } 
</style> 
</head> 
<body> 
<span style="width:300px;">span为内联/inline元素,给他宽度赋值是没有效果的。</span> 
<span style="width:100px; float:right;">span为内联/inline元素,给他宽度赋值100px+float:right;可以看到有了宽度。</span> 
<div> 
<p>这个li被定义为内联/inline,设置宽度没有效果</p> 
<ul id="inline"> 
<li>test</li> 
<li>test</li> 
</ul> 
</div> 
<div> 
<p>这个li被定义为内联/inline+float:left,设置宽度有效果</p> 
<ul id="float"> 
<li>test</li> 
<li>test</li> 
</ul> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
JS关键字变色实现思路及代码
Feb 21 Javascript
jQuery 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
JS取文本框中最小值的简单实例
Nov 29 Javascript
javascript定义变量时带var与不带var的区别分析
Jan 12 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
轻松掌握JavaScript代理模式
Aug 26 Javascript
深入理解JS实现快速排序和去重
Oct 17 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
vue实现跨域的方法分析
May 21 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 Javascript
js实现随机圆与矩形功能
Oct 29 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
Jan 22 #Javascript
JavaScript 学习笔记(十三)Dom创建表格
Jan 21 #Javascript
JavaScript 学习笔记(十二) dom
Jan 21 #Javascript
javascript parseInt与Number函数的区别
Jan 21 #Javascript
js parsefloat parseint 转换函数
Jan 21 #Javascript
jquery 防止表单重复提交代码
Jan 21 #Javascript
javascript 哈希表(hashtable)的简单实现
Jan 20 #Javascript
You might like
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
jQuery入门知识简介
2010/03/04 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python进阶教程之模块(module)介绍
2014/08/30 Python
Python文件和目录操作详解
2015/02/08 Python
Python while 循环使用的简单实例
2016/06/08 Python
Python制作Windows系统服务
2017/03/25 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
python英语单词测试小程序代码实例
2019/09/09 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
食品安全标语
2014/06/07 职场文书
法制宣传标语集锦
2014/06/25 职场文书
房地产端午节活动方案
2014/08/24 职场文书
接收函格式
2015/01/30 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
vue实现登陆页面开发实践
2022/05/30 Vue.js