IE中这种表格式有什么问题?

时间:2010-06-29 17:39:35

标签: html html-table format

这只发生在IE中,当我将标记为中间表的表放入此HTML时,父表的对齐变得混乱,第一个TD上的width =“250”被忽略似乎。 (选择框应该从页面左边250像素开始,但不是。删除标记为中间表的表格 - 对齐可以正常工作。为什么会发生这种情况?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>asdf</title>
</head>
<body>
<table id="tbl_container" width="1300" cellpadding="0" cellspacing="0" border="1">
 <tr style="height: 50px;">
  <td align="center" style="width: 250px;"><img src="logo.gif" alt="asdf" /></td>
  <td valign="middle" align="left" style="text-align: left;"><span class="bold">asdf:  </span><select class="form_select_"><option value="asdf">asdf</option></select></td>
 </tr>
 <tr id="row_container" align="left" valign="top">
  <td colspan="2">
<!-- middle table -->
   <table cellpadding="0" cellspacing="0" border="0">
    <tr>
     <td style="width: 250px;" align="left" valign="top" id="nav_container"></td>
     <td style="width: 25px;" align="left" valign="top"></td>
     <td id="dat_container" style="width:1000px;" align="left"></td>
    </tr>
   </table>
  </td>
 </tr>
 <tr style="height: 50px;">
  <td></td>
  <td></td>
 </tr>
</table>
</body>
</html>

4 个答案:

答案 0 :(得分:3)

根据W3C Validator,您的XHTML包含六个错误。更具体地说,被忽略的width="250"属性无效。无效标签的主要问题是您不再获得连贯的跨浏览器呈现,因为浏览器被迫使用变通方法。首先尝试修复此问题。作为一般规则,布局应该通过CSS完成。

答案 1 :(得分:3)

您对网站布局采取了极为陈旧的方法。使用表格在网站中布置任何非表格的内容都是 MASSIVE no-no 。您应该使用符合标准的CSS和HTML(DIV,Spans等)来放置您的网站。每个浏览器对表的处理方式都不同,使用它们可以非常难以获得一致,功能强大且易于维护的布局。

我不想这么说,但我真的无法帮助你解决当前使用表格的问题。我唯一的答案是重启,使用DIV标签和CSS,享受符合标准的布局。 (不要使用style =“”属性来设置所有CSS,使用合适的样式表。)

答案 2 :(得分:2)

1000 + 250 + 25&gt; 1250

你的中间桌太宽了

答案 3 :(得分:1)

当所有人都说完了,简短的回答是......因为IE可以非常自首。这说的是一个解决方法:

首先你发布简化的是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
<head></head> 
<body> 
<table width="1000" border="1"> 
 <tr> 
  <td width="250" style="background-color:blue;">a1</td> 
  <td style="background-color:green;" >a</td> 
 </tr> 
 <tr> 
  <td colspan="2" style="background-color:red;"> 
       <table> 
        <tr> 
         <td width="1000">c2</td> 
        </tr> 
       </table> 
  </td> 
 </tr> 

</table> 
</body> 
</html>

注意第1行中的第二个td没有指定宽度。如果您知道宽度应该是什么,那么您可以解决这个问题:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
<head></head> 
<body> 
<table width="1000" border="1"> 
 <tr> 
  <td width="250" style="background-color:blue;">a1</td> 
  <td width="750" style="background-color:green;" >a</td> 
 </tr> 
 <tr> 
  <td colspan="2" style="background-color:red;"> 
       <table> 
        <tr> 
         <td width="1000">c2</td> 
        </tr> 
       </table> 
  </td> 
 </tr> 

</table> 
</body> 
</html>

我同意其他人所说的,css是要走的路,但这不是你的问题。希望这会有所帮助。