Jump to content
  • 0

Скролл в ячейке таблицы


Sinot
 Share

Question

Приветствую всех.

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

Полазив по просторам интернета выяснилось, что в ячейку просто так скролл не добавить (при "overflow: scroll;" визуально появляется, но не работает). С помощью добавления "DIV" в ячейку такое можно провернуть, но есть нюанс. Если "DIV" добавить свойство "height: 100%;", то в IE 8 "DIV" растягивается на 100% относительно окна, а не ячейки. (в Хроме все нормально)

Собственно вопрос в том, как это поправить?

Часть кода:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Тест</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
</head>
<body>
<table id="main" border="1">
<tr><td id="editpanel">
1<br />
2<br />
3<br />
</td></tr>
<tr><td id="content">
<div>
Тут таблица<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
</div>
</td></tr>
</table>
</body>
</html>

CSS:


html, body
{
margin: 0px;
padding: 0px;
height: 100%;
}
#main
{
width: 100%;
height: 100%;
}
#content
{
height: 100%;
vertical-align: top;
}
div
{
height: 100%;
overflow: auto;
}

Edited by Sinot
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

В чём проблема?

В том что таблица внутри ячейки с "overflow: scroll;" просто раздвигает ее игнорируя этот самый скролл.

//———-

Теперь еще один глюк вылез. Если просто нижней ячейке задать "height: 100%", то ее растянет относительно всего окна, а не оставшегося места. В Хроме все нормально. о_О

Edited by Sinot
Link to comment
Share on other sites

  • 0

Не ужели никто не сталкивался?

А если переформулировать вопрос:

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

//———-

В общем частично решил проблему.

Но вопрос остается открытым: Как добавить в ячейку (высота на все оставшееся место) скролл?

Для кого интересно:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Тест</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
</head>
<body>
<div id="editpanel">
Какие-то<br />
элементы<br />
управления.<br />
</div>
<div id="content">
Тут таблица.
</div>
</body>
</html>

CSS:

html, body
{
margin: 0px;
padding: 0px;
}
#editpanel
{
position: fixed;
height: 265px;
width: 100%;
background-color: #FFFF00;
}
#content
{
padding-top: 265px;
vertical-align: top;
}

Edited by Sinot
Link to comment
Share on other sites

  • 0

Ячейка таблицы -> внутри див с overflow: scroll;.

Да, я так и писал в первом посте. Но (опять же из первого поста) если попытаться растянуть "DIV" на всю ячейку по высоте "height: 100%;", то IE растягивает "DIV" относительно окна, а не ячейки.

Link to comment
Share on other sites

  • 0

Если ячейке не задавать высоту, а "DIV" - 100%, то:

* Chrome - все как надо

* IE - высота для "DIV" берется относительно окна, ячейку раздвигает до "DIV"

Если ячейке задать 100% и "DIV" - 100%, то:

* Chrome - все как надо

* IE - высота для ячейки (и "DIV" как я понял) берется относительно окна, и получается тоже самое.

Если ячейке задать N px, а "DIV" - 100%, то:

* Chrome - растянет ячейку на все окно (если N < окна), или растянет ячейку до N (если N > окна)

* IE - высота ячейки N, "DIV" тоже N (на всю ячейку)

P.S. Это все я реально попробовал.

Link to comment
Share on other sites

  • 0

У вас у ячейки стоит определенная высота?

У ячейки стоит высота 100%. (Я же привел часть кода в первом посте)

Таблица используется для лейаута?

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

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

Таблица используется для имитации колонок одинаковой высоты?

Не-не. Давайте я обрисую всю ситуацию.

С верху страницы находиться панель редактирования, которая должна быть всегда на виду. Снизу страницы выводиться таблица из базы данных (PHP и javascript опустим). Я переделал таблицу на "DIV" (3 пост). Но скролл появляется для всей страницы, а не для ее нижней части.

Link to comment
Share on other sites

  • 0

Тут тоже есть нюансы. Если взять два "DIV" и нижнему добавить свойство "hiegh: 100%;", то эти 100% возьмутся относительно всего окна, а не свободного места.

Через свойство "position: fixed;" для верхней части у меня получилось это. Но в этом случае скролл появляется для всего окна, а не нижней части (как на картинке).

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