Jump to content
  • 0

Как работает height в CSS


loggerserg
 Share

Question

Не могу понять какая логика работы свойства height в ниже приведенном примере.

table.main {
position: absolute;
width: 100%;
height: 100%;
border-collapse: collapse;
}

Только после добавления position: absolute таблица начинает слушаться и растягивается на всю высоту, хотя width работает корректно в обоих случаях. Без position таблица игнорирует height: 100%, но вполне нормально слушается height: 500px.

Подскажите, где я не дочитал учебники?

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0
Ширину и высоту при position: absolute нужно указывать в px.

Так в том то и дело, что сначала position использовать НЕ собирался и проценты в height работать отказывались(а пиксели как раз работали). Методом тыка обнаружил, что только при использовании position проценты слушаются как положено. Вот я и не пойму почему.

И еще интересный момент: без position - width работает с процентами как положено, а height нет...

Link to comment
Share on other sites

  • 0

Для того, чтобы таблица растягивалась на 100% родителя, ей нужно знать его размеры. И т.д. по цепочке вверх.

height в процентах считается от ШИРИНЫ элемента.

Чавоэто?

Link to comment
Share on other sites

  • 0
Для того, чтобы таблица растягивалась на 100% родителя, ей нужно знать его размеры. И т.д. по цепочке вверх.

Хорошо, это я уяснил, но все равно остается недопонимание...

А именно:

почему в этом вопросе width отличается от height (хотя это можно принять как данность и смириться);

как все же растянуть таблицу по высоте экрана (только с помощью position)?

На всякий случай приведу весь код.

CSS:

body{
margin: 0;
padding: 0;
}
table.main {
position: absolute;
width: 100%;
height: 100%;
border-collapse: collapse;
}
td.top {

}
td.search {

}
td.topmenu {

}
td.news {
width: 30%;
}
td.text {
width: 70%;
height: 100%;
}
td.copyright {

}
td.bottommenu {

}

HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<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 class="main" border="1">
<tr>
<td class="top" colspan="2"> <!-- Top -->
Top
</td>
</tr>
<tr>
<td class="search"> <!-- Search -->
Search
</td>
<td class="topmenu"> <!-- Top menu -->
Top menu
</td>
</tr>
<tr>
<td class="news"> <!-- News -->
News
</td>
<td class="text"> <!-- Text -->
Text
</td>
</tr>
<tr>
<td class="copyright"> <!-- Copyright -->
Copyright
</td>
<td class="bottommenu"> <!-- Bottom men -->
Bottom menu
</td>
</tr>

</table>
</body>
</html>

Link to comment
Share on other sites

  • 0

width растягивается на ширину своего родителя. У блочных элементов. Таблице же надо задавать width всё равно.

Что касается растянуть, то

<table class="main" border="1" style="top: 0; bottom:0; position: absolute; width: 100%; background: red;">

Link to comment
Share on other sites

  • 0
как все же растянуть таблицу по высоте экрана (только с помощью position)?

Нет, можно явно задать html, body { height: 100%; }. Без этого у body получается height: auto, и унаследовать высоту окна браузера не получается (цепочка рвется).

Link to comment
Share on other sites

  • 0
Нет, можно явно задать html, body { height: 100%; }. Без этого у body получается height: auto, и унаследовать высоту окна браузера не получается (цепочка рвется).

Ааа, а я подумал, что position принципиально.

Link to comment
Share on other sites

  • 0
и у IE настроишь высоту, иначе скролл появится

Сорри, можно пример? Я еще понимаю, что может появиться из-за вываливания маргинов потомков body (заголовков, абзацев и т.п.), но как раз в IE (ниже 8) именно с этим проблем быть не должно...

Link to comment
Share on other sites

  • 0
Сорри, можно пример? Я еще понимаю, что может появиться из-за вываливания маргинов потомков body (заголовков, абзацев и т.п.), но как раз в IE (ниже 8) именно с этим проблем быть не должно...

Вроде тоже не замечал. Примерчик не помешал бы.

Link to comment
Share on other sites

  • 0
Нет, можно явно задать html, body { height: 100%; }. Без этого у body получается height: auto, и унаследовать высоту окна браузера не получается (цепочка рвется).

Вот спасибо! А я то думаю, зачем html, body указывают 100%...

Всем спасибо!

С чувством понимания и не зря прожитого дня удаляюсь дальше тренироваться на кошках...

Link to comment
Share on other sites

  • 0

Sorry, маленько не точно написал...

Но суть одна: скролл появиться, если вот это так и оставить

td.text {
width: 70%;
height: 100%;
}

Т.к. у колонки задана высота 100%!!! :(

Поставь высоту 80%, 85% или 89%, в общем поиграй с высотой- найди оптимальный для IE

Edited by PanSoul
Link to comment
Share on other sites

  • 0
Sorry, маленько не точно написал...

Но суть одна: скролл появиться, если вот это так и оставить

td.text {
width: 70%;
height: 100%;
}

Т.к. у колонки задана высота 100%!!! :(

Поставь высоту 80%, 85% или 89%, в общем поиграй с высотой- найди оптимальный для IE

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

Убрал height вовсе (т.е. вычисляется как auto) так всё стало кучеряво да же в IE, но только новых версий, а IE6 - не растянул td.text, а растянул td.top не смотря на то, что height: 160px.

:)

Может этот вариант верстки далеко не самый удачный? Я его изучаю, что бы узнать табличную верстку. "Учитель" - вот он: Sozdai-Sam

Link to comment
Share on other sites

  • 0
Может этот вариант верстки далеко не самый удачный? Я его изучаю, что бы узнать табличную верстку. "Учитель" - вот он: Sozdai-Sam

Ухты, а я помню, начинал вот с этого урока когда то :(

Link to comment
Share on other sites

  • 0
Сказали бы для начала какой у вас доктайп...

Я привел выше код полностью.

Но пожалуйста:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Пробую на строгом учиться...

Ухты, а я помню, начинал вот с этого урока когда то :(

Вот и я начинаю, только смущает, что у него самого страничка "не очень" выглядит. Да и html код примеров не доступен (приходится импровизировать).

Как считаешь, актуальность эти уроки не потеряли?

Edited by loggerserg
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