2014-01-12 29 views
0

我想要使用CSS来格式化表格。该表有三个<td>,它们可以覆盖表格宽度的20%/ 60%/ 20%,但最后的td会转到下一行,而不是保持在同一行。CSS​​宽度不包括表格的100%

下面是表的CSS:

table{ 
    width: 100%; 
    height: 100%; 
    float: left; 
} 
#left_menu{ 
    width: 20%; 
    height: 100%; 
    float: left; 
    border-style:solid; 
    border-width:1px; 
    border-color:#000000; 
} 
#content{ 
    width: 60%; 
    height: 100%; 
    float: left; 
    border-style:solid; 
    border-width:1px; 
    border-color:#000000; 
} 
#right_menu{ 
    width: 20%; 
    height: 100%; 
    float: left; 
    border-style:solid; 
    border-width:1px; 
    border-color:#000000; 
} 

该网站是http://homeworkwizzard.com如果你想看看它的外观。请问为什么会发生这种情况?

+2

这不是20世纪90年代,请不要滥用表格进行布局。 – Quentin

+1

请在问题*中提供*完整*,简化的测试用例*。问题不应依赖于可能会更改内容的外部URL(并且绝对不应该依赖于解决问题后内容会立即更改的外部URL)。 – Quentin

+0

嘿这个问题已经被jammykam解决了,但是你们认为应该用什么布局来代替表格呢? –

回答

2

我同意这些意见,你应该不会使用表格来布置设计。如果你正在学习,那么你应该从一开始就学好,这样你就不会陷入坏习惯。

这就是说,回答你的问题。问题是与float:left你正在使用的一切,我假设你正在试图对齐文本的左侧,在这种情况下,你应该使用text-align: left;

jsFiddle Demo

HTML:

<table> 
    <tr id="banner"> 
     <th colspan="3">Banner</th> 
    </tr> 
    <tr id="body"> 
     <td id="left_menu">Left Menu</td> 
     <td id="content">Content</td> 
     <td id="right_menu">Right Menu</td> 
    </tr> 
    <tr id="footer"> 
     <td colspan="3">Footer</td> 
    </tr> 
</table> 

CSS:

html{ 
    padding: 5% 10%; 
    margin: 0px; 
    border: 0px; 
    background-color: #FEFFAF; 
    background-size: 100%; 
} 
body { 
    width: 100%; 
    box-shadow: 5px 5px 500px #888888; 
    background: #e3e0c0; 
    opacity: 0.85; 
} 
table{ 
    width: 100%; 
    height: 100%; 
} 
#banner{ 
    width: 100%; 
    height: 15%; 
    text-align: left; 
} 
#body{ 
    width: 100%; 
    height: 70%; 
} 
#footer{ 
    width: 100%; 
    height: 15%; 
} 
#left_menu{ 
    width: 20%; 
    height: 100%; 
    border-style:solid; 
    border-width:1px; 
    border-color:#000000; 
} 
#content{ 
    width: 60%; 
    height: 100%; 
    border-style:solid; 
    border-width:1px; 
    border-color:#000000; 
} 
#right_menu{ 
    width: 20%; 
    height: 100%; 
    border-style:solid; 
    border-width:1px; 
    border-color:#000000; 
} 
+0

非常感谢,这解决了它。有一个问题,应该用什么来代替布局设计的表格? –

+0

@JavierCarmona您应该使用任何HTML元素,包括但不限于'div','span','p','a',并使用CSS使用直接元素选择器,ID或类属性对它们进行样式设置。例如http://stackoverflow.com/questions/9917791/design-page-layout-using-css-div-like-html-table – jammykam

+0

我想不起任何好的教程,我的头顶,这是一个很长的因为我不得不看一个,但尝试[this](http://www.sitepoint.com/rock-solid-css-layouts/)或[this](http://www.sitepoint.com/breaking ),但忽略XHTML的东西,它不再相关。我会把更多的重点放在HTML5和CSS3上。 – jammykam