2010-02-16 193 views
1

我期望中间列的宽度是左右两列的3倍。 200(从左到右)的宽度看起来好像按照200,200,600的顺序指定宽度,而不是按照200,600,200的规定出现。换句话说,最后一列的宽度是前两个宽度的3倍。带固定列的简单HTML表格

为什么? (这是我的主要问题)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<title>Left</title> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
</head> 

<body> 

<table style="table-layout: fixed; width:1000px;"> 
    <colgroup> 
    </colgroup> 
    <colgroup> 
     <col width="200px"> 
     <col width="600px"> 
     <col width="200px"> 
    </colgroup> 
    <tr> 
     <td>1 </td> 
     <td>2 </td> 
     <td>3 </td> 
    </tr> 
</table> 

</body> 

</html> 

另外,下面的非表方法有什么优点吗? (这是一个已经回答了二次问题)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<title>Left</title> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<link href="Untitled_1.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 

<div style="width:1000px;"> 

    <div id="masthead"> 
    </div> 
    <div id="top_nav"> 
    </div> 
    <div id="container"> 
     <div id="left_col">Left 
     </div> 
     <div id="right_col">RIght 
     </div> 
     <div id="page_content">Page Content </div> 
    </div> 
    <div id="footer"> 
    </div> 
</div> 

</body> 

</html> 

CSS:

#left_col { 
    width: 200px; 
    margin:0px; 
    float: left; 
} 

#page_content { 
    margin-left: 200px; 
    margin-right: 200px; 
    width: 600px; 
} 


#right_col 
{ 
    width: 200px; 
    float: right; 
} 
+3

'div'与'table'的优点取决于数据/使用情况。如果数据是表格,那么使用'table',如果只是用于布局,则使用'div'方法。但最终归结为目的和偏好。 – 2010-02-16 02:23:08

+1

如果删除第一个(空)'colgroup',表格是否按预期显示? – 2010-02-16 02:52:36

回答

2

你有一组额外的什么也没有在他们COLGROUP标签。我想浏览器正在插入一个(空的)列定义,然后再在第二个colgroup中插入三个列定义,因为浏览器正在尽力做你想做的事。删除空的colgroup选项卡,它将按预期工作。

+0

有趣。你是对的。我似乎记得VS2008自动添加了标签。我试图删除它们,然后他们回来了。所以我让他们认为它们是无害的。我想我必须阅读该标签。 TY! – ChadD 2010-02-16 03:42:13

0

第二,DIV-基于模型的优点在于它的两个更多的语义,很可能会呈现速度就越快。那些参与标准的人会告诉你,你的HTML语义是很重要的。也就是说,每个元素都有不同的含义,您应该使用适当的标签来表达您的意思。这主要是为了帮助使用屏幕阅读器。

表格暗示你的数据是某种表格。在这种情况下,您使用表格作为布局的机制。根据目前的最佳做法,这被认为是否定的。浏览器更努力地渲染表格,并且通过这种方式,您通常会看到数据的可视化“填充”。以http://havenworks.com/为例。 (小心:可怕的丑陋)。

假设您的目标是基于html4的受众(即:不是html5),那么基于div的布局机制最有意义。

希望它有帮助!

0

会这样的工作,你正在尝试做什么?

<table width="100%"> 
    <tr> 
    <td width="25%">&nbsp;</td> 
    <td width="50%">&nbsp;</td> 
    <td width="25%">&nbsp;</td> 
    </tr> 
</table> 

尝试此固定宽度:

<table border="1" width="1000"> 
    <tr> 
    <td width="200">A</td> 
    <td width="600">B</td> 
    <td width="200">C</td> 
    </tr> 
</table> 
+0

是的。但为什么不固定的宽度工作?请注意,如果我以600,200,200的顺序指定列宽度,它们看起来就好像它们被指定为200,600,200。 – ChadD 2010-02-16 02:30:38

+0

我知道更多旧式的做法。保持简单..您可以使用样式表等。 – Boolean 2010-02-16 02:52:31