在css中visibility和display的区别

html+div+css 2667 0 2013-04-16

在css中visibility和display的区别
如果你想改变一个 HTML 元素的可见性,你会把这个元素的 CSS 属性改为 visibility: hidden 还是 display: none ?这两个属性有什么不同?在页面元素可见性改变时你如何应对?
Visibility 和 Display 属性的区别

这里有个 Demo 可以比较 visibility: hidden 和 display: none 的区别。点击页面上部的链接,页面里绿色的 Div 将会进行相应的改变。请留意一下当绿色的 Div 属性分别被设为 visibility: hidden 和 display: none 时对其它元素会有什么影响。

Visibility 属性的用法
Visibility 属性共有四个可用的值(visible、hidden、collapse 和 inherit),但常用的值是 visible 和 hidden。

visibility: visible
/* 元素可见,默认值 */
visibility: hidden
/* 元素不可见,但仍然为其保留相应的空间 */
visibility: collapse
/* 只对 table 对象起作用,能移除行或列但不会影响表格的布局。如果这个值用在 table 以外的对象上则表现为 hidden 。 */
visibility: inherit
/* 继承上级元素的 visibility 值。 */

Display 属性的用法

Display 属性的可用值有很多,但在这里我们只关注其中的几个值:block、none 和 inline 。

display: none
/* 元素不可见,并且不为其保留相应的位置 */
display: block
/* 表现为一个块级元素(一般情况下独占一行) */
display: inline
/* 表现为一个行级元素(一般情况下不独占一行) */

从这里可以看出,虽然 Visibility 和 Display 属性都可以隐藏一个元素,但它们之间的不同点在于 visibility: hidden 在隐藏一个元素的同时仍然在页面上为该元素保留所需的空间,而 display: none 则表现得像把元素从页面里删除了,在页面上看不出该元素还存在着。

另外,display: block 和 display: inline 的区别在于 block 元素会在页面中独占一行,而 inline 元素不会,有的对象默认为 block 元素,而有的对象则默认为 inline 元素,大家在使用时需要注意防止相同属性的重复定义。
什么时候使用 Visibility 或者 Display 属性?

Visibility 和 Display 属性虽然都可以达到隐藏页面元素的目的,但它们的区别在于如何回应正常文档流。

如果你想隐藏某元素,但在页面上保留该元素的空间的话,你应该使用 visibility: hidden 。如果你想在隐藏某元素的同时让其它内容填充空白的话应该使用 display: none 。

在现实中我(作者)更多的倾向于使用 display 属性(相信这也是大多数人的习惯,bolo 注)。当你决定用 display: none 来隐藏一个元素时,你必须知道其它内容将填充到该元素留下的空白位置,从而改变页面的布局。
Visibility 和 Display 对 SEO 的影响

有时我们会通过把堆砌的关键词隐藏而达到作弊的目的,但不应该使用 visibility: hidden 和 display: none ,而应该把关键词颜色设为和背景色相同,或者把关键词的字号设为非常小,而令访客无法发现。

有的人则因为害怕搜索蜘蛛的的反感而为 visibility: hidden 和 display: none 的使用的烦恼。其实有很多漂亮的效果是通过元素可见性的转换而实现的,搜索引擎也理解这一做法(事实上搜索引擎往往忽略 CSS,bolo 注),因此如果你的目的不是欺骗搜索引擎,你大可以放心地使用 visibility: hidden 和 display: none 去隐藏内容。

上一篇:文件上传input file简便美化方案(css)

下一篇:marquee 滚动字幕的使用详解

讨论数量:2

天涯网魂 3 杠 5 星2013-04-16 11:46:14

CSS visibility 属性规定元素是否可见。
visible 元素可见。   
hidden 元素不可见。   
collapse 在表格元素中使用时,此值可删除一行或一列,但它不影响表格的布局。被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,会呈现为 "hidden"。   
inherit 从父元素继承 visibility 属性的值。
 
你在 html 里面写的东西默认情况下就是属于 visibility:visible;  即元素可见。当某些情况下,你让元素不可见了:visibility:hidden;  再通过一些事件触发后让元素变成可见,就要用到这个visibility:visible; 。
 
和display:none的区别,你理解是对的,display:none; 以后,元素是不占位的。
=========================
Visibility 属性共有四个可用的值(visible、hidden、collapse 和inherit),但常用的值是visible 和hidden。  值描述visible默认值。元素是可见的。hidden元素是不可见的。collapse当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。被行或列占据的空间 
会留给其他内容使用。如果此值被用在其他的元素上,会呈现为 "hidden"。inherit规定应该从父元素继承 visibility 属性的值。
所有主流浏览器都支持 visibility 属性。但是,任何的版本的 Internet Explorer (包括 IE8)都不支持 "inherit" 和 "collapse" 属性值,而支持visible 和hidden值。

天涯网魂 3 杠 5 星2013-04-16 11:45:28

可见visible或弗成见hidden和这个属性类似的还有display:none;或display:block;两者差别就是一个会占用以前的地位display用法不会占位

请先登录再发表讨论。 2024-05-02

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链