[HTML, CSS, IE] неправильная высота
сделай <td height=100%> ячейки родительской таблицы в которой таблицу поместил.
вообще-то у td нет атрибута height
так что за такой совет нужно в шею гнать
а товарищу я скажу что так задавать вопрос нет смысла
ты бы взял ноутепад, написал бы простенький примерчик (тойсть фактически то что у тебя есть, но не в полном виде, а только тот кусочек который важен)
проверил что этот пример и вправду не работает
и запостил его сюда
я бы тебе тут же сказал в какой строчке ошибка
так что за такой совет нужно в шею гнать

а товарищу я скажу что так задавать вопрос нет смысла
ты бы взял ноутепад, написал бы простенький примерчик (тойсть фактически то что у тебя есть, но не в полном виде, а только тот кусочек который важен)
проверил что этот пример и вправду не работает
и запостил его сюда
я бы тебе тут же сказал в какой строчке ошибка

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<style>
html{height:100%}
body{height:100%;padding:0px;margin:0px}
table{border:0px;border-collapse:collapse}
table td{padding:0px;vertical-align:top}
#main{width:100%;height:100%;border:1px solid red}
#int{width:100px;height:100%;border:1px solid green}
</style>
</head>
<body>
<table id="main">
<tr>
<td>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
<td>
<table id="int">
<tr><td><br></td></tr>
</table>
</td>
</tr>
</table>
</body>
</html>
<html><head>
<style>
html{height:100%}
body{height:100%;padding:0px;margin:0px}
table{border:0px;border-collapse:collapse}
table td{padding:0px;vertical-align:top}
#main{width:100%;height:100%;border:1px solid red}
#int{width:100px;height:100%;border:1px solid green}
</style>
</head>
<body>
<table id="main">
<tr>
<td>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
<td>
<table id="int">
<tr><td><br></td></tr>
</table>
</td>
</tr>
</table>
</body>
</html>
если так сделать, то в данном случае как раз и получится, что выстоа внутренней таблицы будет не 100% высоты родительской таблицы, а 100% высоты окна браузера. Да и через валидатор такаястраница не пройдёт.
хех
а какой валидатор ругается?
может есть смысл другой доктайп подобрать?
а какой валидатор ругается?
может есть смысл другой доктайп подобрать?
дело в том, что если атрибут height в CSS указать в процентах, то это будут проценты от высоты контента, а не внешнего модуля
в IE 5.5 проценты считались от высоты родителя, а не детей
поэтому если поставить другой доктайп
например:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
то ИЕ6 будет думать что это неправильный доктайп, переключится на Quirks Mode
и покажет то, что ты хочешь
что там с валидатором, я уж не знаю какой у тебя валидатор
а вообще растягивание на 100% это отдельная тема
и существует куча методик как это сделать, чтобы работало во всех браузерах
в IE 5.5 проценты считались от высоты родителя, а не детей
поэтому если поставить другой доктайп
например:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
то ИЕ6 будет думать что это неправильный доктайп, переключится на Quirks Mode
и покажет то, что ты хочешь
что там с валидатором, я уж не знаю какой у тебя валидатор
а вообще растягивание на 100% это отдельная тема
и существует куча методик как это сделать, чтобы работало во всех браузерах
Вообще-то есть, судя по использованым dtd
<!ATTLIST (TH|TD) -- header or data cell --
%attrs; -- %coreattrs, %i18n, %events --
abbr %Text; #IMPLIED -- abbreviation for header cell --
axis CDATA #IMPLIED -- comma-separated list of related headers--
headers IDREFS #IMPLIED -- list of id's for header cells --
scope %Scope; #IMPLIED -- scope covered by header cells --
rowspan NUMBER 1 -- number of rows spanned by cell --
colspan NUMBER 1 -- number of cols spanned by cell --
%cellhalign; -- horizontal alignment in cells --
%cellvalign; -- vertical alignment in cells --
nowrap (nowrap) #IMPLIED -- suppress word wrap --
bgcolor %Color; #IMPLIED -- cell background color --
width %Length; #IMPLIED -- width for cell --
height %Length; #IMPLIED -- height for cell --
>
<!ATTLIST (TH|TD) -- header or data cell --
%attrs; -- %coreattrs, %i18n, %events --
abbr %Text; #IMPLIED -- abbreviation for header cell --
axis CDATA #IMPLIED -- comma-separated list of related headers--
headers IDREFS #IMPLIED -- list of id's for header cells --
scope %Scope; #IMPLIED -- scope covered by header cells --
rowspan NUMBER 1 -- number of rows spanned by cell --
colspan NUMBER 1 -- number of cols spanned by cell --
%cellhalign; -- horizontal alignment in cells --
%cellvalign; -- vertical alignment in cells --
nowrap (nowrap) #IMPLIED -- suppress word wrap --
bgcolor %Color; #IMPLIED -- cell background color --
width %Length; #IMPLIED -- width for cell --
height %Length; #IMPLIED -- height for cell --
>
Подозреваю, что при исользовании последней dtd'ки - никак, если не использовать средства JS
да ты че! 

http://www.w3.org/TR/html4/struct/tables.html#h-11.2.6
русским языком написано: DEPRECATED
потому что height у td - это абсурд, масло масляное
высота td всегда равна высоте tr
точно также у tr нету атрибута width
потому что ширина tr всегда равна ширине таблицы
русским языком написано: DEPRECATED
потому что height у td - это абсурд, масло масляное
высота td всегда равна высоте tr
точно также у tr нету атрибута width
потому что ширина tr всегда равна ширине таблицы
ширина tr всегда равна ширине таблицыне забудь про rowspan
не забудь про rowspan
и при чем тут роуспан?
не всегда ширина tr равна ширине таблицы.
а пример можешь привести?
тойсть имеется ввиду взять ширину tr на жаваскрипте и показать что она совсем другая чем ожидается
но даже если и приведешь пример, то это не противоречит тому что width у tr бесмысслен
тойсть имеется ввиду взять ширину tr на жаваскрипте и показать что она совсем другая чем ожидается
но даже если и приведешь пример, то это не противоречит тому что width у tr бесмысслен
и это тоже
Имхо, имелось ввиду colspan по поводу вашей фразы:
> высота td всегда равна высоте tr
> высота td всегда равна высоте tr
это не противоречит тому что width у tr бесмысслена я и не спорил. Она задается исключительно входящими td
и все таки Федечка, ты гонишь 

<table border="1"><tr id="tr1">
<td id="td1" rowspan="2" width="100px">aaa</td>
<td id="td2" colspan="2" width="200px">bbb</td>
</tr><tr id="tr2">
<td width="100px">111</td>
<td>222</td>
</tr></table>
<input type="button" onclick="show" value="show">
<script type="text/javascript">
function show {
alert(document.getElementById('tr1').offsetWidth);
alert(document.getElementById('tr2').offsetWidth);
alert(document.getElementById('td1').offsetHeight);
alert(document.getElementById('td2').offsetHeight);
}
</script>
вот здесь согласен
это я обшибся
высота td равна сумме высот tr которые он занимает
это я обшибся
высота td равна сумме высот tr которые он занимает
А поподробнее про методики растяжки на 100% можно? Ссылочки какие-нибудь или так, вкратце...
вопрос состоит скорей не как сделать height=100%
а как добиться того что нужно другим способом
вот тебе зачем нужно растягивать внутреннюю таблицу?
чтобы бэкграундом раскрасить? дык ты можешь раскрасить бэкграундом td внешней таблицы и будет тоже самое
или хочешь чтобы снизу чтото появилось?
тогда так:
<body>
<table style="height:100%">
<tr>
<td rowspan="2"> long left menu </td>
<td> content of second table </td>
</tr><tr style="height:100%"><td valign="bottom">
bottom content
</td></tr>
</table>
а как добиться того что нужно другим способом
вот тебе зачем нужно растягивать внутреннюю таблицу?
чтобы бэкграундом раскрасить? дык ты можешь раскрасить бэкграундом td внешней таблицы и будет тоже самое
или хочешь чтобы снизу чтото появилось?
тогда так:
<body>
<table style="height:100%">
<tr>
<td rowspan="2"> long left menu </td>
<td> content of second table </td>
</tr><tr style="height:100%"><td valign="bottom">
bottom content
</td></tr>
</table>
а если я просто хочу, чтобы что-то было посередине страницы?
ну сделай
<td valign="middle"> - внешняя таблица
<table> - внутрення таблица
<td valign="middle"> - внешняя таблица
<table> - внутрення таблица
Это настолько старый и избитый вопрос, что я даже удивился, как ты можешь этого не знать
и? что будет? Если я не задал для внешней таблицы высоту 100%, все схлопнется.
я знаю на него ответ. Но только один (все внешние контейрены сделать 100% а мне обещали несколько.
а кто говорил что у внешней не нужно задавать сто процентов?
?
у внешней таблицы как раз height=100% будет работать всегда
не будет только у внутренних
?
у внешней таблицы как раз height=100% будет работать всегда
не будет только у внутренних
Попробуй эту фигню в опере посмотреть и пойми насколько ты ошибаешься.
я знаю на него ответ. Но только один (все внешние контейрены сделать 100% а мне обещали несколько.Мне вот кстати интересно, а без таблиц такое делать научились, али нет.
Вариант с внешним дивом, в котором каким-то раком умудрились прописать валигн=миддл не подходит, т.к. не решает проблем из-за которых имеет смысл уходить от таблиц.
Попробуй эту фигню в опере посмотреть и пойми насколько ты ошибаешься.какую фигню?
я уже ничего не понимаю
вот это работает во всх браузерах
или вы про что?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<style>
html{height:100%}
body{height:100%;padding:0px;margin:0px}
</style>
</head>
<body>
<table style="height:100%;width:100%">
<tr style="height:100%">
<td valign="middle" align="center">
This text is in center in all browsers.
</td>
</tr>
</table>
</body>
</html>
Мда, действительно отстал я от жизни. В последних операх уже работает -
в семерке такое точняк работало
просто многие забывали html {height:100%} указывать
а еще многие забывали указывать form {height:100%}
а то часто бывало:
<body>
<form>
...
и этот form оперу перебивал нафик
а пп того как в CSS центрировать вертикально, то вроде все методики изучены и новые вряд ли кто придумает
все они перечислены тута:
http://www.student.oulu.fi/~laurirai/www/css/middle/
просто многие забывали html {height:100%} указывать
а еще многие забывали указывать form {height:100%}
а то часто бывало:
<body>
<form>
...
и этот form оперу перебивал нафик
а пп того как в CSS центрировать вертикально, то вроде все методики изучены и новые вряд ли кто придумает
все они перечислены тута:
http://www.student.oulu.fi/~laurirai/www/css/middle/
если ты обратил внимание там еще куча всего Deprecated для этого тэга, однако для обратной совместимости все нормально работает начиная с 4-х версий НН и ИЭ и будет работать еще долго и на других браузерах.
У меня внутри вложена таблица, у которой на одном из TR у одного из TD сделан бордер в 1 пиксел - это вертикальная линия - визуально она отделяет центральную часть от боковой.
и какие проблемы?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
</head>
<body>
<style type="text/css">
html {height:100%;}
body {height:100%;}
</style>
<body>
<table style="height:100%;width:100%">
<tr style="height:99%">
<td style="background-color:#ccffff;width:100px"> left menu </td>
<td style="border-left:1px solid blue"> content </td>
</tr><tr style="height:1%"><td colspan="2" valign="bottom" style="background-color:#ffccff">
copyright
</td></tr>
</table>
</body>
</html>
Внимательнее прочти - мне нужно именно для ВЛОЖЕННОЙ таблицы это сделать. Внешней не могу. Если интересно - дам ссылку на реальный сайт.
давай
Можно конечно скриптом нужную высоту устанавливать в случае, если браузер - ие или в самом стиле прописать height:expression...
Но мне кажется, что это не самый лучший выход. Возможно, именно для этих целей есть хак для ие.
Но мне кажется, что это не самый лучший выход. Возможно, именно для этих целей есть хак для ие.
а ссылку на реальный сайт так и не дал 

мдааа
может сначала стоит ошибки в коде поправить, а потом уже таблички растягивать?
я смотрю конкретно вот эту страницу:
http://deltaexpo.com/index.php?option=com_content&task=v...
тут такой код:
<>
<td>
а должен быть такой:
<>
</td>
может сначала стоит ошибки в коде поправить, а потом уже таблички растягивать?
я смотрю конкретно вот эту страницу:
http://deltaexpo.com/index.php?option=com_content&task=v...
тут такой код:
<>
<td>
а должен быть такой:
<>
</td>
вот код который работает в ИЕ
я вынес твой блок рекламы во внешнюю таблицу
ты тут же спросишь почему код в некоторых местах разъезжается
я тебе отвечу
вот так:
<tr><td colspan="2" height="8"></td></tr>
делать нельзя. нужно делать вот так:
<tr><td colspan="2" height="8"><img src="space.gif" height="8" width="1"></td></tr>
дело в том что height=8 у таблицы - это предписание, если браузер хочет, он его ослушается
а вот height=8 у картинки - это указание, его браузер ослушаться никак не может, как ьы ни хотел
картинка space.gif - один прозрачный пиксель
я вынес твой блок рекламы во внешнюю таблицу
ты тут же спросишь почему код в некоторых местах разъезжается
я тебе отвечу
вот так:
<tr><td colspan="2" height="8"></td></tr>
делать нельзя. нужно делать вот так:
<tr><td colspan="2" height="8"><img src="space.gif" height="8" width="1"></td></tr>
дело в том что height=8 у таблицы - это предписание, если браузер хочет, он его ослушается
а вот height=8 у картинки - это указание, его браузер ослушаться никак не может, как ьы ни хотел
картинка space.gif - один прозрачный пиксель
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>Виртуальный выставочный центр ДельтаЭкспо - Информация</title>
<meta name="title" content="Информация" />
<meta name="author" content="Administrator" />
<meta name="description" content="ДельтаЭкспо. Международный виртуальный выставочный центр. Организация виртуальных выставок. Проведение выставочных мероприятий, новости, справочная информация. Пресс-релизы, презентации, 3D-модели." />
<meta name="keywords" content="официальный сайт дельтаэкспо, выставочная деятельность, новости выставок, выставочный бизнес" />
<meta name="Generator" content="Joomla! - Copyright (C) 2005 Open Source Matters. All rights reserved." />
<meta name="robots" content="index, follow" />
<base href="http://deltaexpo.com/" />
<link rel="shortcut icon" href="http://deltaexpo.com/images/favicon.ico" />
<link href="http://deltaexpo.com/templates/css/main.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="revisit-after" content="6days">
<meta name="author" content="Отдел Информационных технологий ДельтаЭкспо">
<meta name="copyright" content="www.deltaexpo.com">
<meta http-equiv="imagetoolbar" content="no">
</head>
<body>
<table id="main">
<tr><td height="7" bgcolor="#cecdcd" colspan="2"></td></tr>
<tr>
<td height="80" align="left" colspan="2">
<table width="100%" class="h80">
<tr>
<td width="202" id="hl1"><a href="index.php"><img src="http://deltaexpo.com/images/logo.gif" width="174" height="32" border="0" alt="ДельтаЭкспо"></a></td>
<td align="center"><a href="index.php">
<img src="http://deltaexpo.com/images/banner.gif" width="401" height="40" id="hl2" border="0" alt="Первый международный виртуальный выставочный центр ДельтаЭкспо"></a></td>
<td width="202">
<table width="255" class="h80">
<tr>
<td class="h60">
<>
<div id="gl">
<form method="post" action="">
<select id="lg" name="lang">
<option>Русский</option>
<option>English</option>
</select>
</form>
</div>
<>
</td>
</tr>
<tr>
<td align="left" valign="middle">
<img src="http://deltaexpo.com/images/ar.gif" class="ar" width="3" height="5" border="0" alt="На главную"><a href="index.php" class="t"><span>На главную</span></a>
<img src="http://deltaexpo.com/images/ar.gif" class="ar" width="3" height="5" border="0" alt="Вход"><a href="login.php" class="t"><span>Вход</span></a>
<img src="http://deltaexpo.com/images/ar.gif" class="ar" width="3" height="5" border="0" alt="Карта сайта"><a href="index.php?option=com_samsitemap&Itemid=47" class="t"><span>Карта сайта</span></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr><td height="10" bgcolor="#2f496e" colspan="2"></td></tr>
<tr><td height="35" valign="middle" bgcolor="#e3e3e3" colspan="2">
<>
<table id="mn">
<tr>
<td><div id="pp"></div></td>
<td class="in"><a href="index.php?option=com_content&task=view&id=12&Itemid=44" title="Перйти к разделу «Информация»">Информация</a></td>
<td class="in"><a href="" title="Перйти к разделу «Выставочный центр»">Выставочный центр</a></td>
<td class="in"><a href="" title="Перйти к разделу «Выставки»">Выставки</a></td>
<td class="in"><a href="" title="Перйти к разделу «Услуги»">Услуги</a></td>
<td class="in"><a href="index.php?option=com_contact&Itemid=3" title="Перйти к разделу «Контакты»">Контакты</a></td>
<td id="pl"></td>
</tr>
</table>
<>
</td></tr>
<tr><td height="10" colspan="2"></td></tr>
<tr><td align="left" class="ctn" colspan="1">
<table class="fs">
<tr>
<td width="220" align="left">
<>
<table id="sr">
<tr>
<td class="sp" height="31"></td>
<td class="c" colspan="2" height="31">Поиск по сайту</td>
</tr>
<tr>
<td class="sp" height="22"></td>
<td class="c" colspan="2" height="22"><form name="searchform" action="index.php?option=com_search&Itemid=5" method="get"><input name="searchword" maxlength="20" alt="search" type="text"><input type="hidden" name="option" value="com_search"><input type="hidden" name="Itemid" value="5"></form></td>
</tr>
<tr>
<td class="sp" height="31"></td>
<td class="c" height="31" align="left"><img src="http://deltaexpo.com/images/ar.gif" width="3" height="5" border="0" class="ar2" alt="Искать"><a href="http://deltaexpo.com" onclick="searchform.submit;return false;">Искать</a></td>
<td align="right"><img src="http://deltaexpo.com/images/ar.gif" width="3" height="5" border="0" class="ar2" alt="Расширенный поиск"><a href="http://deltaexpo.com/index.php?option=com_search&Itemid=5">Расширенный поиск</a></td>
</tr>
</table>
<>
<>
<div id="ads">
<a href="http://auto.deltaexpo.ru"><img src="http://deltaexpo.com/images/ban2005.jpg" width="220" height="116" border="0" alt="Подробнее об Авто 2006"></a>
</div>
<>
<>
<div class="mmn">
<table id="qh">
<tr><td class="rh2"></td><td align="left" id="rh4">
<img src="/images/h2.gif" width="49" height="14" border="0" alt="Опрос"></td></tr>
<tr
Огромнейшее спасибо!
Кстати, а если высоту стилем задать, разве тоже это будет не жесткая высота? Раньше думал, что прозрачные гифы только как распорки используются, а не наоборот как антирастяжки.
А в чем суть писать colspan="1"? Это не одно и то же, если бы вообще не писать?
Кстати, а если высоту стилем задать, разве тоже это будет не жесткая высота? Раньше думал, что прозрачные гифы только как распорки используются, а не наоборот как антирастяжки.
А в чем суть писать colspan="1"? Это не одно и то же, если бы вообще не писать?
> colspan="1"
это случайно получилось, удалить забыл
> Кстати, а если высоту стилем задать, разве тоже это будет не жесткая высота?
нет, не будет
смысл такой: браузеры пытаются показать всё правильно
если ты создашь абсурдную ситуацию, например <table width="100"><tr><td width="50"></td><td width="60"></td></tr></table>
50 + 60 != 100
то что делать браузеру?
одно из трех правил ему придется нарушить
а в случае картинки
он ее ужать никак не сможет - это как бы внешний объект, он браузеру неподвластен
по поводу растяжки?
это где это я его как антирастяжку использую?
просто я не могу твои стили править, это уж ты сам
смысл такой:
ты должен там прописать height:99% у последнего tr в баннерной табличке
изза этого ИЕ прогнорирует твои мнимые растяжки в верхних tr и сожмет баннерную табличку
вот тут и нужно будет ее растянуть
так что картинки для растяжки используются
для антирастяжки используется правильная расстановка высот у tr
это случайно получилось, удалить забыл
> Кстати, а если высоту стилем задать, разве тоже это будет не жесткая высота?
нет, не будет
смысл такой: браузеры пытаются показать всё правильно
если ты создашь абсурдную ситуацию, например <table width="100"><tr><td width="50"></td><td width="60"></td></tr></table>
50 + 60 != 100
то что делать браузеру?
одно из трех правил ему придется нарушить

а в случае картинки
он ее ужать никак не сможет - это как бы внешний объект, он браузеру неподвластен
по поводу растяжки?
это где это я его как антирастяжку использую?
просто я не могу твои стили править, это уж ты сам
смысл такой:
ты должен там прописать height:99% у последнего tr в баннерной табличке
изза этого ИЕ прогнорирует твои мнимые растяжки в верхних tr и сожмет баннерную табличку
вот тут и нужно будет ее растянуть
так что картинки для растяжки используются
для антирастяжки используется правильная расстановка высот у tr
Оставить комментарий
walder
Есть ячейка таблицы, внутри которой есть ещё таблица.Таблица-родитель растягивается по вертикали до размеров окна браузера, либо, если содержимое её внутренностей боольшое - до необходимой высоты, обусловленной контентом.
У внутренней таблицы height:100%, но в IE даже при очень высокой таблице-родителе выста внутренней таблицы составляет реальный размер 100% высоты окна браузера, а не всю высоту таблицы-родителя. В файрфоксе/опере проблем нет.
Доктайп такой:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
При его убирании в ИЕ таблица начинает работать правильно, но страшно ругается валидатор.