Jump to content
  • 0

Firefox, высота таблицы и размер содержимого


prichvm
 Share

Question

Добрый день!

Есть таблица, в которой 1 строка произвольной высоты. Все остальные - фиксированные.

В ячейке этой строки находится дивка. У неё может быть произвольное содержимое и надо, чтобы появлялись полосы прокрутки.

Всё работает в ие6, опере, хроме.

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

по коду получается так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>test</title>
</head>
<body>
<div style="width: 600px; height: 400px; border: 1px solid red;">

<table
style="height: 100%; width: 100%; table-layout: fixed;"
cellpadding="0" cellspacing="0" border="1">
<colgroup>
<col width="300">
<col width="300">
</colgroup>
<tbody>
<tr height="100px">
<td> 
</td>
<td> 
</td>
</tr>
<tr>
<td> 
</td>
<td>
<div style="height: 100%; overflow-y: auto; border: 1px solid blue;">
qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>
qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>
</div>
</td>
</tr>
<tr height="100px">
<td> 
</td>
<td> 
</td>
</tr>
</tbody>
</table>

</div>

</body>
</html>

может кто-нибудь сталкивался? что-нибудь подскажет?

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

<div style="height: 100%; overflow-y: auto; border: 1px solid blue;"> - ему не откуда считать высоту.

Учитывая, что общая высота таблицы height: 400px, не понятно вообще, о какой резине речь идет, просто пропишите фикс. размер. Или max-height для <div style="height: 100%; overflow-y: auto; border: 1px solid blue;">.

Link to comment
Share on other sites

  • 0

Нет) общая высота таблицы - 100%. а наружняя дивка может менять размер. это сейчас он здесь задан - 400px. а фактически её высота может быть и любой другой (меняться через js). Потому и получается, что средняя строка будет свободно тянуться.

я не очень знаком с этой "математикой", по которой браузеры рисуют страницу, но если в 3х браузерах работает как надо, может и для четверртого есть лекарство?

Link to comment
Share on other sites

  • 0
Нет) общая высота таблицы - 100%. а наружняя дивка может менять размер. это сейчас он здесь задан - 400px. а фактически её высота может быть и любой другой (меняться через js). Потому и получается, что средняя строка будет свободно тянуться.

я не очень знаком с этой "математикой", по которой браузеры рисуют страницу, но если в 3х браузерах работает как надо, может и для четверртого есть лекарство?

работает как надо, но вопреки всякой логике. Меняйте JS-ом также высоту внутреннего дива.

Link to comment
Share on other sites

  • 0

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

менять высоту внутреннего дива - рассматривается как последний вариант. хотя и реализовано

Link to comment
Share on other sites

  • 0

Не знал, что <tr> можно задавать высоту...

У родителя (<td>) не задана высота, так что естественно, что диву не от чего брать 100%, тут ФФ абсолютно корректно себя ведет.

Вот они минусы верстки таблицами... на дивах подобное можно сверстать гораздо проще...

Link to comment
Share on other sites

  • 0

Нука где тут некорректное поведение?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>An XHTML 1.0 Strict standard template</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<style type="text/css">
* {
margin: 0;
padding: 0;
font: 12px Tahoma, Arial, sans-serif;
}

.test {
height: 400px;
border: red 1px dashed;
}

table {
width: 100%;
height: 100%;
border: green 3px groove;
}

table td {
border: green 1px solid;
}

.head, .foot {
height: 100px;
}
</style>
</head>

<body>

<div id="test" class="test">
<table>
<tr>
<td class="head">
head
</td>
</tr>
<tr>
<td>
text
</td>
</tr>
<tr>
<td class="foot">
head
</td>
</tr>
</table>
</div>

</body>
</html>

Link to comment
Share on other sites

  • 0

У Вас так:

            <tr>
<td>
text
</td>
</tr>

у меня так:

		<tr>
<td> 
</td>
<td>
<div style="height: 100%; overflow-y: auto; border: 1px solid blue;">
qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>
qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>qweqweqwe<br>
</div>
</td>
</tr>

вот здесь, содержимое в блоке растягивает и блок, и таблицу. никаких полос прокрутки.

Link to comment
Share on other sites

  • 0

Ограничивает внешний блок. В котором находится сама таблица. Ну т.е. по идее ни таблице, ни td уже некуда дальше расширяться. Потому поведение ие, оперы или хрома мне вполне понятно. В то время как фф все равно тянет таблицу и ячейку.

Edited by prichvm
Link to comment
Share on other sites

  • 0

В самом первом посте сказал ещё ))

Т.е. вы считаете, что он правильно делает, даже если у таблицы размер фиксированный (указана высота и ширина в px - в этом случае поведение его не меняется)? Как-то сомнительно.

Link to comment
Share on other sites

  • 0
В самом первом посте сказал ещё ))

Т.е. вы считаете, что он правильно делает, даже если у таблицы размер фиксированный (указана высота и ширина в px - в этом случае поведение его не меняется)? Как-то сомнительно.

Очень простой пример. Положите контент в ДИВ и скажите диву overflow:auto.

до того момента, когда не будет указана высота или ширина, прокрутка не появится. Причем не просто указана, а именно так, чтобы браузер смог ее откуда-то отсчитать.

Link to comment
Share on other sites

  • 0
Очень простой пример. Положите контент в ДИВ и скажите диву overflow:auto.

до того момента, когда не будет указана высота или ширина, прокрутка не появится. Причем не просто указана, а именно так, чтобы браузер смог ее откуда-то отсчитать.

В Вашем примере див ни чем не ограничена. У меня - находится внутри таблицы, таблица ограничена. значит высоту ячейки тоже можно посчитать. с чем и справляются все браузеры кроме фф.

Link to comment
Share on other sites

  • 0
В Вашем примере див ни чем не ограничена. У меня - находится внутри таблицы, таблица ограничена. значит высоту ячейки тоже можно посчитать. с чем и справляются все браузеры кроме фф.

как не ограничен? ограничен, боди, например. а он в свою очередь html, смотрите в код.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy