源码分享|精品php源码|免费源码-时光博客

在table中display:block在firefox,chrome下显示布局错乱问题

摘要:做网站后台时用的table布局做的一个选项卡。两个table,一个display:block,一个是display:none。显示时右边有一块灰色的部分,点先项卡又正常了。在table中display:block在firefox,chrome下显示布局错乱问题,百思不得其解,决定百度一下找到如下有用信息。

做网站后台时用的table布局做的一个选项卡。两个table,一个display:block,一个是display:none。显示时右边有一块灰色的部分,点先项卡又正常了。在table中display:block在firefox,chrome下显示布局错乱问题,百思不得其解,决定百度一下找到如下有用信息。

display:block是可以把非块级元素强制转换为块级元素显示,如内嵌元素span,原来不支持设置宽高,宽度是由内容撑开的,几个span元素是在同一行内的,如果给span设置如下样式:

span:display:block;
那么span元素就会表现的和DIV一样,每个DIV占据一行,而且支持设置宽高;
具体CSS中的display有如下属性:
值描述
none    此元素不会被显示。    
block    此元素将显示为块级元素,此元素前后会带有换行符。    
inline    默认。此元素会被显示为内联元素,元素前后没有换行符。    
inline-block    行内块元素。(CSS2.1 新增的值)    
list-item    此元素会作为列表显示。    
run-in    此元素会根据上下文作为块级元素或内联元素显示。    
compact    CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。    
marker    CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。    
table    此元素会作为块级表格来显示(类似 ),表格前后带有换行符。    

inline-table    此元素会作为内联表格来显示(类似 ),表格前后没有换行符。    

table-row-group    此元素会作为一个或多个行的分组来显示(类似 )。    
table-header-group    此元素会作为一个或多个行的分组来显示(类似 )。    
table-footer-group    此元素会作为一个或多个行的分组来显示(类似 )。    
table-row    此元素会作为一个表格行显示(类似 )。    
table-column-group    此元素会作为一个或多个列的分组来显示(类似 )。    
table-column    此元素会作为一个单元格列显示(类似 )    
table-cell    此元素会作为一个表格单元格显示(类似  和 )    
table-caption    此元素会作为一个表格标题显示(类似 )    
inherit    规定应该从父元素继承 display 属性的值。

按照常理,对于某一单元行需要显示时,使用:display:block属性,不需要显示时使用display:none属性,而且这样做在IE浏 览器中显示正常,没有任何问题。

但是当用Firefox浏览时却出现了布局错乱的问题,然后通FireBug去看了下源码,调试下了,发现是display:block属性搞的 鬼。

1、当表格为多列的情况下,属性为"display:block"行的内容宽度仅与第一列宽度相同,也就是说无论你使colspan的属性值为多 少,剩余列的空间都不进行解析。 
2、同一行反复的在"display:none;"与"display:block;"两个状态间切换时,表格的 底部会持续的产生多余的空白空间以至于造成页面布局的扭曲。

解决方法: 
1、用display:table-row属性来调试,发现者FireFox下正常了,但IE是不支持改属性的,怎么办呢?用 JS来做判断,然后做兼容吧。 
2、另外一个很简单也很可行的方法,就是用 display: 这个属性dispaly后面不加任何的东西,很奇怪,这样就兼容了Firefox和IE了。
在table中tr的display:block在firefox下显示布局错乱问题 
2010年03月01日 星期一 15:33 
按照常理,对于某一单元行需要显示时,使用:display:block属性,不需要显示时使用display:none属性,而且这样做在IE浏 览器中显示正常,没有任何问题。

但是当用Firefox浏览时却出现了布局错乱的问题,然后通FireBug去看了下源码,调试下了,发现是display:block属性搞的 鬼。

1、当表格为多列的情况下,属性为"display:block"行的内容宽度仅与第一列宽度相同,也就是说无论你使colspan的属性值为多 少,剩余列的空间都不进行解析。 
2、同一行反复的在"display:none;"与"display:block;"两个状态间切换时,表格的 底部会持续的产生多余的空白空间以至于造成页面布局的扭曲。

解决方法: 
1、用display:table-row属性来调试,发现者FireFox下正常了,但IE是不支持改属性的,怎么办呢?用 JS来做判断,然后做兼容吧。 
2、另外一个很简单也很可行的方法,就是用 display: 这个属性dispaly后面不加任何的东西,很奇怪,这样就兼容了Firefox和IE了。