2011-03-16 64 views
0


我正在开发一个web应用程序......不幸的是,它必须使用有史以来最糟糕的软件,ie6。IE6 CSS显示:表修复?

我真的很喜欢CSS display:tabledisplay:table-cell属性,但它当然在ie中不起作用。

有没有人发现此修复?我一直在寻找,但没有找到任何东西。
有条件的CSS,.htc文件,javascript ...什么?
我真的想避免使用浮动和清除所有东西

+0

也许用CSS饼? http://css3pie.com/ – Thew 2011-03-16 15:53:06

+0

这是用于布局,还是实际的表格数据,只要放入'

'和相关的元素都是明智的? – nybbler2011-03-16 16:01:42

+0

布局,我在说的CSS属性显示:表,而不是HTML表 – ZolaKt 2011-03-16 16:06:32

回答

2

对不起。有没有修复,使IE6支持CSS display:table。在IE6中实现这种布局的唯一方法是实际使用<table>元素。

第一个问题:你真的需要支持IE6吗?如果你可以简单地放弃对它的支持,你会解决自己的一大堆问题,包括这一个。 IE6目前的全球使用率低于3%,在大多数发达国家甚至更低。

如果您仍然需要支持IE6,那么您最明显的解决方案就是简单地吞下您的语义标记自豪感,并使用<table>标记。

如@Tom所述,下一个最佳解决方案是使用display:inline-block;编写布局。

inline-block允许您将元素定义为块,但仍将它们保留在文本流(默认情况下<img>标记的工作方式)。如果将它与固定的元素宽度以及行周围的wapper div结合使用,则可以实现类似于表格的操作,尽管可能很难使其随页面宽度动态扩展。

围绕此问题的一个大“陷阱”bug是inline-block仅适用于IE6/7中默认样式为display:inline的元素。换句话说,它适用于<span>,但不适用于<div>。不是灾难,而是需要注意的事情,特别是因为你特意询问关于IE6的支持。除此之外,好消息是你应该能够在没有任何其他黑客或变通方法的情况下使用display:inline-block

+0

不幸的是,我必须支持,即不是我的决定......我个人会毫不犹豫地放弃它......第二件事,我不认为你的统计数据是有效的,几年前,即大约50%......我真的不认为它已经下降这么低...不幸的是,仍然有很多人安装XP,谁不知道什么是浏览器,并使用ie6作为默认...悲伤,但真正的 – ZolaKt 2011-03-16 18:29:17

+0

关于您的解决方法解决方案,我认为病态只是坚持使用浮动,因为即使限制内联块 – ZolaKt 2011-03-16 18:30:29

+1

@ZolaKt - IE **作为一个整体**仍然在45%左右,但IE6的使用正在下降悬崖。没有一个统计数据网站是真正准确的,但为了总体趋势的良好局面,我建议http://gs.statcounter.com/。他们目前在全球范围内展示的IE6为4%,在欧洲为1.9%,在美国为2.1%。其他人显示类似的统计。但这是任意的;您需要注意*您的*网站的使用情况。如果你仍然有足够的IE6用户来支持他们,那么你应该这样做。真的,这是一个成本决定:支持IE6的成本是多少,以及你会失去多少用户。 – Spudley 2011-03-16 18:46:43

0

IE不支持display:table和display:table-cell,但IE7及以下版本支持display:inline-block。使这项工作的常用方法是通过执行以下操作:

display:-moz-inline-stack; 
display:inline-block; 
zoom:1; 
*display:inline; 

记住,CSS给你很多的定位功率和给予你希望你的布局看,我也许可以给一些背景你更好的解决方案。

由于误解让我澄清上面的代码。 display:-moz-inline-stack;是针对较老版本的Firefox声明的。 zoom:1; IE有一个名为hasLayout的属性,这是一种触发它的方法。 *显示:内联被称为用于隐藏来自所有非IE浏览器这条线的a *属性劈

变焦:1和*显示:内联有效地允许块级元素的行为类似于内联元素(这样内联块将在IE6 +工作)

欲了解更多信息,请阅读:

  1. http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/
  2. http://foohack.com/2007/11/cross-browser-support-for-inline-block-styling/
+0

一个很好的一般答案,但具体的建议有些过时了。 '-moz-inline-stack'并不是必须的,除非你需要支持少于v2的Firefox,这意味着你真的不需要它。你不需要'* display:inline;',因为它在IE6中重载了'inline-block'。 IE6/7确实支持'inline-block'(虽然有一些'gotcha'bug);只需要'* display:inline'来支持IE5.5。 'zoom:1'是各种IE问题的常见错误修正,但对'inline-block'没有任何影响,所以我不知道这里提到的原因。 – Spudley 2011-03-16 17:12:08

+0

注意:默认情况下内联元素支持内嵌块。它不会在IE6中的div元素上工作。 – easwee 2011-03-16 17:36:59

+0

@Spudley如果需要IE6支持,那么我疯狂的假设,旧版本的Firefox也将被要求。 – Tom 2011-03-16 21:15:30