为什么CSS td宽度不起作用?

请看这个JSFIDDLE

td.rhead { width: 300px; } 

为什么不能使用CSS宽度?

 <table> <thead> <tr> <td class="rhead">need 300px</td> <td colspan="7">Week #0</td> <td colspan="7">Week #1</td> <!-- etc..--> </tr> <tr> <td class="rhead"></td> <td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td> <td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td> <!-- etc... --> </tr> <thead> </table> 

另外,什么位置的影响:固定,绝对等有TD宽度,如果有的话? 我正在寻找一个比解决办法更多的​​原因。 我希望了解它是如何工作的。

TD宽度不是300像所需的

这可能不是你想听到的,但display: table-cell不尊重宽度,将根据整个表的宽度折叠。 你可以简单地通过在表格单元格内部有一个display: block元素来指​​定它的宽度,例如

 <td><div style="width: 300px;">wide</div></td> 

如果<table>本身的position: fixedposition: fixed或绝对的,这应该没什么区别,因为单元格的位置相对于表格是全部静态的。

http://jsfiddle.net/ExplosionPIlls/Mkq8L/4/

编辑:我不能拿信用,但作为意见说,你可以使用min-width而不是在表格单元格的width

你最好使用table-layout: fixed

自动是默认值,大表会导致一些客户端滞后,因为浏览器遍历它来检查所有大小适合。

固定好得多,呈现给页面更快。 表的结构取决于表的总宽度和每列的宽度。

在这里它被应用到原始的例子: JSFIDDLE ,你会注意到剩下的列被压缩并重叠其内容。 我们可以用更多的CSS来解决这个问题(我所要做的就是向第一个TR添加一个类):

  table { width: 100%; table-layout: fixed; } .header-row > td { width: 100px; } td.rhead { width: 300px } 

在这里看到的行动: JSFIDDLE

在你提供的链接中不起作用的原因是因为你试图显示一个300px的列PLUS 52列,每个列有7列。 收缩列的数量,它的作品。 你不能在屏幕上适合这么多。

如果你想强制列适合尝试设置:

 body {min-width:4150px;} 

看到我的jsfiddle: http : //jsfiddle.net/Mkq8L/6/ @mike我还不能评论。

原因是,因为你没有指定表的宽度,你的整个td的溢出。

这例如 ,我已经给了表的宽度为5000px,我认为这将符合您的要求。

 table{ width:5000px; } 

这是你提供的完全相同的代码,我只是在表中添加宽度。

我相信发生了什么,是因为你的TD已经超过了默认的表格宽度。 你可以看到,如果你在每个tr中抽出大约45个td(即你在问题中提供的代码,而不是jsfiddle)

尝试这个工作。

 <table> <thead> <tr> <td width="300">need 300px</td> 

尝试使用

 table { table-layout: auto; } 

如果你使用Bootstrap,类tabletable-layout: fixed; 默认。

我疯狂的解决scheme。)

 $(document).ready(function() { $("td").each(function(index) { var htmlText = "<div style='width:300px;'>" + $(this).text() +"</div>"; $(this).html(htmlText); }); }); 

你也可以使用:

 .rhead { width:300px; } 

但是这只会随着一些浏览器,如果我没记错的IE8不允许这样做。 总而言之,将width=""属性放在<td>本身中是比较安全的。

如果表格宽度是例如100%,请尝试在td上使用百分比宽度,例如20%。

你可以试试“table-layout:fixed” 到你的桌子

 table-layout: fixed; width: 150px; 

150px或你想要的宽度。

参考: https : //css-tricks.com/fixing-tables-long-strings/

在表格中使用表格布局属性和“固定”值。

 table { table-layout: fixed; width: 300px; /* your desired width */ } 

在设置了表格的整个宽度之后,现在可以设置td的宽度。

 td:nth-child(1), td:nth-child(2) { width: 15%; } 

您可以通过以下链接了解更多信息: http : //www.w3schools.com/cssref/pr_tab_table-layout.asp

从第一个单元格包装内容,例如:

HTML:

 <td><div class="rhead">a little space</div></td> 

CSS:

 .rhead { width: 300px; } 

这是一个jsfiddle 。