2011-12-13 66 views
9

我想在表格中显示文本,并且当它宽于150像素时我想剪切它,但我不想固定宽度的表格单元格(如果没有文字,宽度将为0px)。一切工作在IE9,Firefox,Chrome,Opera但不在IE8中。在IE8IE 8溢出:隐藏和最大宽度

代码示例:

enter image description here

代码示例在Chrome:

enter image description here

下面的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<style> 
td, span { 
    border: 1px solid red; 
    max-width: 150px; 
    white-space: nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis; 
} 

span { 
    border: 1px solid green; 
    display: block; 
} 
</style> 
</head> 
<body> 
<table> 
<tr> 
    <td><span>Works in Firefox, Chrome, Opera, IE 7/9 (but not in IE 8)</span></td> 
    <td>Works in Firefox, Chrome (and Opera but no dots)</td> 
    <td style="display: block">Works in Firefox, Chrome and Opera (with dots)</td> 
</tr> 
</table> 
</body> 
</html> 

有可能这样做没有任何JavaScript或设置固定宽度?

+0

坦率地说,如果我是你,我会发送一个JavaScript警报,当有人用IE8打开你的页面。不要打扰你的页面与多功能的IE浏览器兼容,这是微软的错,不是你的。 – ApprenticeHacker

+0

关于第一个单元格,它似乎不适用于IE7。恐怕它只能在IE9中运行。 –

+0

@IntermediateHacker根据CSS 2.1规范,max-width对表格单元格的影响是未定义的。规范是错误的,而不是微软。 – ZippyV

回答

5

不幸的是,IE7和IE8对max-width css规则有很好的支持。所以不,如果没有JavaScript或固定宽度,你将无法可靠地完成这项工作。如果有帮助,你的代码是假设在IE 7+中工作。

但是你可以通过规则后,增加一个条件CSS规则,使其成为这两个浏览器只固定宽度您有以上:

<!--[if lte IE 8]> 
    <style> 
    td, span { 
     width: 150px; 
    } 
    </style> 
<![endif]--> 

当你以后移动你的CSS到外部文件,你会的当然,改变的链接标签:

<!--[if lte IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie8.css" /> 
<![endif]--> 

或者,您也可以检测到IE 7和8 javascript和用户重定向到这个页面:http://www.mozilla.org/de/firefox/new/

+0

maxWidth是在Windows Internet Explorer 7中引入的。 – ZippyV

+0

是的,这是绝对正确的,我会进行更正。然而,在这个问题的代码演示中,它在IE 7和8中是非常错误的。我亲眼目睹了这一点(在IE 7/8中)在一台计算机上工作,但没有在另一台计算机上工作。正如洛伦佐指出的那样,它也不适合他。这很可能是依赖于更新的,但不管什么原因,显然这些浏览器都不依赖它。 – Donamite