这只发生在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>
答案 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是要走的路,但这不是你的问题。希望这会有所帮助。