`

table-layout:fixed导致单元格宽度不受控制的问题

阅读更多
  我遇到这个问题是由于我第一行有个单元格占了多列,fixed导致被占的列总是平均分配列宽。看看下面的说法,终于搞清楚原因了。
  网页上的表格如下图所示:



网页代码很如下:
<style type="text/css">
	table{
	border-collapse:collapse;
	/*table-layout:fixed;*/
	}
	table,table td{
		border-color:blue;
	}
</style>
<table width="400" border="1" style="border-color:blue;border-collapse:collapse">
<tr>
<td width="50%">1</td><td colspan="2">2</td>
</tr>
<tr>
<td>3</td><td width="10%">4</td><td width="40%">5</td>
</tr>
<tr>
<td colspan="3">http://wallimn.iteye.com</td>
</tr>
</table>

  如果把table-layout:fixed的注释去掉,表格就会变成如下样子(注意看,4与5变成等宽的了):




  这是什么原因呢?需要了解一下fixed布局模型的工作步骤:
1.width属性值不是auto的所有列元素会根据width值设置该列的宽度.
2.如果一个列的宽度为auto---不过,表首行中位于该列的单元格width不是auto---则根据该单元格宽度设置此列的宽度.如果这个单元格跨多列,则宽度在这些列上平均分配.
3.在以上两步之后,如果列的宽度仍为auto,会自动确定其大小,使其宽度尽可能相等.此时,表的宽度设置为表的width值或列宽度之和(取其中较大者).如果表度度大于其列宽总和,将二者之差除以列数,再把得到的这个宽度增加到每一列上.
.........................................
  这种方法的速度很快,因为所有列宽都由表的第一行定义.首行后所有行中的单元格都根据首行所定义的列宽确定大小.后面这些行中的单元格不会改变列宽.这意味着为这些单元格指定的width值都会被忽略.

2010-09-13

  这个问题比较好解决,可以把表格的第一行行高设置为1px,专门用来分配列宽。
  tr.first{
     height:1px;
     font-size:1px;
     line-height:1px;
   }
   然后把第一行加上class="first"。

  当然,也可以通过不使用fixed属性来解决。
  • 大小: 17.2 KB
  • 大小: 17.7 KB
4
0
分享到:
评论
6 楼 pengzhaocheng16 2013-04-10  
既然第一行起作用,那我就定义一下第一行不就行了。
5 楼 wcnjeusr 2012-06-27  
tks 纠结了很长时间的终于找到答案了
4 楼 fxdan2002 2010-07-27  
既然第一行起作用,那我就定义一下第一行不就行了。
用colgroup定义。
3 楼 fxdan2002 2010-07-27  
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#000000" style="table-layout:fixed">
<colgroup>
<col style="width:10%;"></col>
<col style="width:30%;"></col>
<col style="width:40%;"></col>
<col style="width:10%;"></col>
<col></col>
</colgroup>
<tr>
    <td colspan="5">&nbsp;</td>
  </tr>  <tr>
    <td  nowrap bgcolor="#FFFFFF">文字文字文字文字文字文字</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
  </tr></table>
2 楼 wallimn 2009-08-04  
不用那个属性就行了呀。
如何全局用,个别不用,可以使用内联样式,或者使用!important来特殊处理一下。
1 楼 yi_liu 2009-08-04  
我和楼主遇到一样的问题,那么,有解决的方法吗?

相关推荐

    表格设置table-layout:fixed后对单元格宽度设置无效

    在实施解决方案时,还需注意一些细节问题,例如确保CSS中table-layout属性设置为fixed,并且表格宽度也被适当地指定,以便于固定布局的生效。同时,当使用col标签指定宽度时,也需要在相应的col标签中明确指定width...

    固定 table宽度 table-layout: fixed

    "固定table宽度 table-layout: fixed" 是一个CSS属性,用于解决这个问题,确保表格在不同场景下保持一致的列宽。 首先,让我们了解一下表格布局的默认模式——"auto"布局。在默认情况下,表格的列宽会根据其内容的...

    如何通过CSS样式设置单元格显示内容的长度.doc

    默认情况下,表格布局(`table-layout: auto`)会根据单元格内容的宽度自适应调整,这可能导致表格渲染较慢,因为浏览器需要等待所有内容加载完毕才能确定表格的最终宽度。而设置`table-layout: fixed`,则会让浏览器...

    td 内容自动换行 table表格td设置宽度后文字太多自动换行

    在使用table展示内容时,经常会出现内容过长超出了单元格(td)的宽度,导致无法完整展示全部内容的情况。传统的table布局常常会导致内容溢出,影响页面的整体美观性。本篇文章针对的就是这个常见的问题,即如何设置...

    bootstrap表格内容过长时用省略号表示的解决方法

    在Bootstrap框架中,当表格(table)中的内容过长时,可能会导致表格列(td)的宽度超出预设,影响整体布局。为了实现内容过长时以省略号表示的效果,我们可以采用CSS样式来控制表格的显示。以下是具体解决方法的...

    css table-layout属性显示表格单元格、行、列的算法规则

    解决这个问题的方法是使用`overflow`属性来控制单元格内部的滚动条或文本换行。 总结来说,`table-layout`属性是CSS中一个重要的优化工具,尤其对于包含大量数据或需要快速呈现的表格。通过明智地使用`fixed`布局,...

    datagrid 与gridview的区别.rar_datagrid_gridview

    - **灵活性**:DataGrid允许程序员通过模板列进行高度自定义,包括列头样式、单元格样式等。 - **事件驱动**:它有丰富的事件模型,如ItemCreated、ItemCommand等,方便开发者在特定操作时执行自定义逻辑。 - **...

    单元格撑大 层 密码显示可变 漂浮广告 html javascript

    &lt;table style="table-layout: fixed; word-break: break-all;"&gt; &lt;td style="background-color: #eeeeee;"&gt; &lt;!-- 这里放置大量的文本 --&gt; document.write(new Array(100).join("d")); &lt;/table&gt; ``` - *...

    固定宽度表格布局设定宽度问题

    这里,`table-layout: fixed`属性让表格采用固定布局,即使内容超过设定宽度,单元格也不会自动扩展。`overflow: hidden`隐藏超出单元格的内容,`text-overflow: ellipsis`添加省略号表示内容被截断,`white-space: ...

    详解CSS的table-layout属性的用法

    table-layout:fixed; } ***本文关键词:table-layout属性值、定义和用法、固定表格布局、自动表格布局。 1定义和用法  tableLayout属性用来显示表格单元格、行、列的算法规则。  ①该属性指定了完成表布局时所用...

    word-break:break-all和word-wrap:break-word区别总结

    在表格布局方面,`table-layout:fixed` 与 `table-layout:auto` 也是控制表格布局的重要属性。`fixed` 模式下,表格的列宽在表格加载时就确定,不会根据单元格内容的宽度变化,这提供了更快的渲染速度。而 `auto` ...

    通过css样式控制单元格文本超长省略.doc

    这里的`nowrap`属性用于阻止文本在单元格内换行,`table-layout: fixed`属性确保表格的列宽是固定的,不受内容宽度的影响。同样,我们使用`overflow: hidden`和`text-overflow: ellipsis`来实现文本的省略。 值得...

    CSS自动换行

    在前端开发领域,尤其是网页布局设计中,自动换行是一个至关重要的功能,它能够确保文本在不同的屏幕尺寸或容器宽度下能够自适应地显示,避免文本溢出或排版错乱的问题。本文将深入探讨五种不同的自动换行策略,这些...

    网页图片把表格撑破解决办法-dw中图片把网页撑破解决方法

    对于表格元素,可以设置`table-layout: fixed`,并为单元格指定宽度,这样可以防止内容撑大表格: ```css table { table-layout: fixed; width: 100%; } td { word-wrap: break-word; overflow: hidden; text-...

    表格自动换行主义CSS属性

    &lt;table style="table-layout:fixed; word-break:break-all; word-wrap:break-word"&gt; 这是一段很长的文字,它会被自动换行,即使其中包含英文单词thisisaverylongwordthatwillbebroken. &lt;/table&gt; ``` 在这段...

    网页表格或div层在网页中被撑开解决之道

    4. **CSS控制图片自适应**:利用CSS的`max-width`和`width`属性以及`overflow:hidden`,确保图片在任何情况下不超过设定的最大宽度。例如,`img {max-width: 600px; width:expression(this.width &gt; 600 ? "600px" : ...

    html5+css 代码.pdf

    - 固定表格布局:`table-layout:fixed`让表格宽度固定,不受内容影响。 - 边框处理: - 方法1:分别设置边框宽度,如`border-left`, `border-right`等。 - 方法2:`border-collapse:collapse`合并单元格边框,...

Global site tag (gtag.js) - Google Analytics