解决table设置了table-layout:fixed后单,元格宽度设置无效的方法

在对设置表格设置table-layer:fixed样式后,发现表格中有一行合并过,其它没有合并的行的列宽会平均化,对列宽的设置会失效。如果把表格的合并行去掉,又能正常显示。

原因:table-layout: fixed 的表格,各列宽度由第一行决定,后面指定的宽度会被忽略。你第一行合并了,所以各列宽度均分了。

解决方法一:

在tbody前加

<col style="width: 60%" /> 
<col style="width: 20%" /> 
<col style="width: 20%" />  


解决方法二:

设置一个隐藏的行来规定宽度:


<table style="table-layout:fixed;width:200px" border="1" cellspacing="1" cellpadding="1">  
<tr style="display:none">  
  <td style="width:100px"></td>  
  <td style="width:80px"></td>  
  <td style="width:20px"></td>  
</tr>  
<tr>  
  <td>1</td>  
  <td colspan="2">2</td>  
</tr>  
<tr>  
  <td>1.1</td>  
  <td>2.1</td>  
  <td>2.2</td>  
</tr>  
</table> 


这个方法,在IE6,IE7,IE8中都可以正确地显示,但在非IE中,是没起作用的。下面给出另外一种方法:


    <style>  
    td{border:1px solid red;}  
    </style>  
    <table style="table-layout:fixed;width:200px" border="0" cellspacing="1" cellpadding="1">  
    <tr style="height:0;">  
      <th style="width:100px"></th>  
      <th style="width:80px"></th>  
      <th style="width:20px"></th>  
    </tr>  
    <tr>  
      <td>1</td>  
      <td colspan="2">2</td>  
    </tr>  
    <tr>  
      <td>1.1</td>  
      <td>2.1</td>  
      <td>2.2</td>  
    </tr>  
    </table>  




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值