2014-01-12 6 views
0

Я пытаюсь форматировать таблицу с использованием CSS. Таблица имеет три <td>, которые будут покрывать 20%/60%/20% от ширины таблицы, но последний тд переходит на следующую строку вместо того, чтобы оставаться в одной строке.CSS <td> ширина не покрывает 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

Это не 1990-е годы, пожалуйста, не ругайте таблицы для макета. – 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/) или [это] (http://www.sitepoint.com/breaking -out-of-the-box /), но игнорировать материал XHTML, это уже не имеет отношения к делу. Я бы поставил больше внимания на HTML5 и CSS3. – jammykam

Смежные вопросы