2010-06-29 63 views
1

這隻發生在IE瀏覽器中,當我將標記爲 - 中間表的表格放入此HTML中時,父表格的對齊會變得混亂,並且第一個TD上的width =「250」會被忽略。 (選擇框應該從頁面左側起250像素開始,但不是。刪除標記爲 - 中間表的表 - 並且對齊按原樣工作。爲什麼發生這種情況?在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> 
<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> 

回答

2

1000 + 250 + 25> 1250

您的中間表太寬

+0

雖然沒有解決問題。 – user318747 2010-06-29 17:47:30

+1

加入一個 width =「1000」 到你的第二個td(帶有top-bg.gif-background的那個)會有所幫助,這次我檢查了 – 2010-06-29 18:13:53

+0

我記得像IE這樣的東西忽略了任何寬度參數,如果不是全部表第一行的單元格有它。可能是錯誤的,但不確定。 – 2010-06-29 18:17:29

3

按照W3C Validator,你的XHTML包含六個錯誤。更具體地說,是被忽略的width="250"屬性是無效的。與主要問題無效標記是因爲瀏覽器被迫使用工作區,您不再獲得連貫的跨瀏覽器呈現ounds。試着先解決這個問題。一般來說,佈局應該通過CSS完成。

+0

修復所有這些錯誤並不能解決它。 – user318747 2010-06-29 18:11:40

3

您正在採取一種非常陳舊的方法來進行網站佈局。使用表在任何非表格性質的網站中佈置任何東西都是MASSIVE no-no。您應該使用符合標準的CSS和HTML(DIV,Spans等)來放置您的網站。每個瀏覽器對錶格的處理方式都不相同,並且使用它們可以非常困難地獲得一致的,功能強大且易於維護的佈局。

我討厭這麼說,但我真的無法幫助你用表格解決你當前的問題。我唯一的答案是重啓,使用DIV標籤和CSS,並享受符合標準的佈局。 (不要使用style =「」屬性來設置所有的CSS,請使用正確的樣式表。)

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> 

注意到你的第二個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是要走的路,但是這不是你的問題。希望這有助於。