Уважаемые посетители портала Kamensk.NET! Напоминаем вам, что будучи зарегистрированным пользователем вы получаете возможность оставлять комментарии к новостям на сайте и к топикам на форуме, иметь доступ к скрытым разделам и много других благ и привелегий. Пожалуйста заполните регистрационную форму, это отнимет у вас всего лишь несколько минут вашего времени.
Табличная верстка шаблонов VS Div'ы: что лучше?
Вообщем, такой вот вопрос. Вопрос не с проста, так как я уже запарился переделывать стили, чтобы мой шаблон одинаково отображался как в IE, так в Firefox, Opera и браузерах на WebKit. Изначально шаблон был только на div'ах. Сделаю под IE (на работе есть возможность потестить на IE8), - в огнелисе просто тихий ужас. Сделаю под Firefox, то в опере чего-нибудь уедет не туда, то в IE. Epiphany пока держится молодцом, в смысле, стабильно косячит, но не так сильно. 
Сейчас твёрдо решил переделать часть шаблона таблицами, но в этих ваших интернетах пишут, что верстать табличные шаблоны, дескать моветон и нормальные пацаны верстают в дивах. Опять же готовые шаблоны к популярным CMS типа Drupal или Joomla тоже сплошь и рядом на дивах. Правда в этих шаблонах как минимум два набора стиля, порою и три. Что не так-то? Откуда такая дискриминация таблиц? Может есть стандарт какой, не рекомендующий табличную верстку, а я об этом не знаю?
Откуда такая дискриминация таблиц?
Таблицы изначально предназначены для вывода табличных данных, а не для группировки элементов на странице.
P.S. Есть вещи, которые на дивах без шаманских танцев с бубнами не сделаешь.
Ну вот же:
Использование таблиц для создания структуры представляется достаточно интуитивно понятным занятием. Табличные данные мы видим каждый день, и поэтому общая концепция данного подхода к вёрстке всем ясна и понятна.
Наличие у таблиц атрибутов делает гораздо более лёгким и процесс освоения вёрстки, ведь в случае div'ов разработчику приходится использовать атрибут стиля или внешнюю таблицу стилей. Кроме того таблицы не разрываются слишком широким контентом, и колонки не плющатся своими же соседями, как может происходить при div вёрстке. Всё это даёт ощущение безопасности и надёжности.
Ещё есть большое желание не использовать дополнительные наборы стилей для IE...
Для основного каркаса страницы - только таблицы!
Остальное - понты!
Зачем мудрить, воротить стили с хаками для недо-браузеров, и при этом всем все равно в ряде случаев (малый размер окна) страница может отображаться криво (часть текста пропадает либо перекрывается другим контентом либо съезжает вниз).
Нафига это все если есть нормальный тег - table!
Я когда-то тоже поддался на моду бестабличной верстки но со временем понял что ерунда все это, надо делать так чтобы везде нормально отображалось, а как называются теги и проходит ли страница валидацию w3c - абсолютно не важно!
У меня проблема в неожиданном месте вскрылась - браузер Firefox упорно не хочет отображать стиль background для тега table. Сначала думал, что какой-либо из div'ов перекрывает, - всё заккоментил, один хрен! В IE всё нормально, в других браузерах не проверял пока сделал так:
<?php if ($logo || $site_name || $site_slogan) { ?>
">
<?php if ($logo): ?>
" title="<?php print t('Home') ?>">
" alt="<?php print t('Home') ?>" />
<?php endif; ?>
<?php if ($site_name): ?>
<?php print $site_name; ?>
<?php endif; ?>
<?php if ($site_slogan): ?>
<?php print $site_slogan; ?>
<?php endif; ?>
<?php } ?>
Участок CSS кода:
/* -----Begin Header wrapper----- */
/*
#main-top div {
padding: 0;
margin: 0;
border: 0;
}
*/
/*
div#header-region {
//width: 100%;
float: left;
text-align: left;
margin: 0;
padding: 0;
background: #ff0;
}
*/
table#logo-region {
margin: 0;
padding: 0;
width: 100%;
height: 163px;
background-image: url(../images/header-bg.jpg) no-repeat 0 right;
border-bottom: 1px solid #000;
}
td.logo {
width: 163px;
border: 0;
}
.logo img {
background-color: #3030ff;
}
td.site-name {
border: 0;
text-align: left;
color: #ff3030;
}
.site-name h1 {
/* background-color: #3030ff; */
font-size: 54px;
/* font-weight: bold; */
line-height: 54px;
text-decoration: none;
}
td.site-slogan {
text-align: right;
vertical-align: bottom;
border: 0;
padding-right: 30px;
padding-bottom: 15px;
}
.site-slogan span {
padding: 0;
margin: 0;
/* background-color: #3030ff; */
font-size: 14px;
font-weight: bold;
color: #fff;
}
/* -----End Header wrapper----- */
Меня вот что интересует, это действительно косяк FF или у меня руки нуждаются в доводке напильником?
Насколько я знаю, у тега table стили типа background не работают. По крайней мере в режиме strict (соответствие стандартам) работать не должно.
В твоем случае можно заключить table в блок:
<div id="logo-region-box"> <table id="logo-region">.....</table> </div>
и стиль применить к DIV.
Или если это возможно прописать стили непосредственно у ячеек
#logo-region td {
background: ........;
}
или у строк TR
#logo-region tr {
background: ........;
}
Если строка у таблицы одна то это как раз будет соответствовать всей таблице.
Но только проверь в разных браузерах, я помню что когда-то где-то background у TR не отображался и после этого я стараюсь стили для TR не прописывать
Хотя может глюк просто был
Еще, теоретически возможно (не проверял!) попробовать добавить тег TBODY т.е. сделать так:
<table id="logo-region"> <tbody> ..... </tbody> </table>
соотв. стиль будет:
#logo-region tbody {
background-image: url(../images/header-bg.jpg) no-repeat 0 right;
}
P.S. опять какие-то глюки с форматами ввода, друпал вырезает html теги внутри code
Теперь посмотрел твой код через админскую опцию "изменить комментарий". вобщем пробуй вариант с TBODY
по пхп коду: так как шаблон будет сделан конкретно под наш сайт лучше вообще убрать лишние проверки if
<?php
echo '
<table id="logo-region" background="'.$base_path . $directory . '/images/header-bg.jpg"><tbody><tr>
<td class="logo">
<a href="'.$base_path.'" title="'.t('Home').'"><img src="'.$logo.'" alt="'.t('Home').'" /></a>
</td>
<td class="site-name">
<h1>'.$site_name.'</h1>
</td>
<td class="site-slogan">
<span>'.$site_slogan.'</span>
</td>
</tr></tbody></table>';
?>
Это тот же самый код в одну строку и без IF
Нужно ускорять работу сайта
Излишняя универсальность ни к чему!
Оптимизацию под наш сайт я обязательно сделаю, когда закончу. Просто я хочу ещё иметь на всякий случай универсальный вариант 
Понял в чём косяк - в браузерах Opera, Konqueror и Firefox не работают смешанные атрибуты (машинные и человеческие) для свойства background для тегов div и table. То есть надо или:
background-image: url(../images/header-bg.jpg) no-repeat 0 0;
или:
background-image: url(../images/header-bg.jpg) no-repeat top right;
Это не касается браузеров Epiphany и IE. Здесь винегрет проканывает. 
Ещё заметил, что Firefox считает размеры таблиц с бордюром, тогда как все остальные нет. В принципе можно обернуть таблицу в дополнительный div, как посоветовал Real Alex, но это разве не хак? может лучше разработчикам FF написать?


Откуда такая дискриминация таблиц?
Таблицы изначально предназначены для вывода табличных данных, а не для группировки элементов на странице.
P.S. Есть вещи, которые на дивах без шаманских танцев с бубнами не сделаешь.
http://dev.by/blog/7824