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 第二代身份证号码的验证机制代码
May 12 Javascript
JavaScript实现QueryString获取GET参数的方法
Jul 02 Javascript
网页中可关闭的漂浮窗口实现可自行调节
Aug 20 Javascript
javascript中的循环语句for语句深入理解
Apr 04 Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 Javascript
jquery append与appendTo方法比较
May 24 jQuery
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
JS字典Dictionary类定义与用法示例
Feb 01 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 Javascript
JavaScript 声明私有变量的两种方式
Feb 05 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
解析php中const与define的应用区别
2013/06/18 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
销售顾问工作计划书
2014/08/15 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
大学生入党自荐书
2015/03/05 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
建筑工程催款函
2015/06/24 职场文书
《日月潭》教学反思
2016/02/20 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书