relative position - не работает процентное смещение + вопрос про высоту html и body
Вложений: 1
Здравствуйте, Уважаемые.
Лично я использую FF для просмотра этих вопросов как один из браузеров, которому можно больше всего доверять в плане соответствия стандартам. При абсолютном и релативном позиционировании указание любого из смещения, top например, может быть либо в пикселях, либо в процентах. При указании в пикселях происходит смещение на данное растояние от родительского окна. Вопрос 1. Это происходит от окна браузера, html или body? При указании в процентах происходит то же смещение, что и в случае с px, но на расстояние выраженное в процентах от размера смещаемого блока, например для top:20% это будет 0.2 * высоту блока. Во всяком случае так сообщает справка(читаем абзац начинающийся с жирного "Возможны отрицательные координаты"). Вопрос 2.1. Какое смещение имеется ввиду при записи top:0, пиксельное или процентное? Вопрос 2.2. В моем примере процентное смещение вообще не работает, почему? (привожу код здесь и готовый пример в архиве)
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>тест</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<!--————————————————————————css————————————————————————-->
<style>
/*————————————————————————reset————————————————————————*/
* {margin:0; padding:0;}
img, fieldset, input{border:0;}
ul,ol{list-style:none;}
a{outline:none;}
/*————————————————————————wraps————————————————————————*/
/* только при height:100% у обоих корневых боксов они будут занимать высоту страницы */
html{border: 5px solid #fc00ff; height: 100%;} /* pink */
body{background:#838383; border: 5px solid #2c2c2c; float:left; width:100%; height: 100%;} /* black */
#wrapper{border: 5px solid #00d8ff; overflow: hidden; min-height: 100%; position: relative;} /* blue */
#footer{height: 100px; border: 2px solid #c29929; top: 30%; position: relative;} /* yellow */
</style>
<!--————————————————————————js—————————————————————————-->
<script type="text/javascript" src="js/jquery-2.0.2.min.js"></script>
<script type="text/javascript" src="js/base.js"></script>
<body>
<div id="wrapper">
<div id="footer"></div>
</div>
</body>
</html>
Вопрос 3. (на примере того же кода, что и в вопросе 2). Разное поведение высоты элементов внутри body с min-height:100% и height:100%. Если мы запишем так: html{height:100%} body{min-height:100%} wrapper{min-height:100%}, то body займет всю высоту окна, а wrapper проигнорирует cвой min-height:100%. Если же body зададим явную высоту height:100%, то высоту окна займет и wrapper. Почему если у body min-height:100%, а не height:100%, то wrapper c height:100% или min-height:100% не занимает всю высоту body(до конца окна) |
Цитата:
Deff - ты унылое гавно! |
при position:fixed идет расчет относительно viewport, при :relative относительно первоначального положения (уже объяснили), при :absolute - относительно ближайшего предка, имеющего position не равный :static. Если таковых нет, то наверно от html
2.1 Нулевое значение рекомендуется указывать без единиц значения. Оно и понятно - зачем, когда при любой единице результирующее значение один фиг нулевое? 3. А где вопрос? |
Magneto, вы процитировали мой первый вопрос с примесью своего предыдущего ответа(он попал в цитату, да еще и с орф-ошибками, не дотерли видно).
Кстати в первом вопросе почему не работает процентное смещение, так и никто не ответил, непорядок. :) Один товарищ говорит, что это потому что у родителя min-height:100% - это не жёсткое задание высоты, а всего лишь ограничение на минимум. И браузер при этом не хочет ничего там расчитывать в процентах. danik.js Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
http://www.w3.org/TR/CSS2/visuren.html#propdef-top |
danik.js +1
|
Цитата:
и можно совмещать тогда min-height и height тогда? чтобы он как бы читал что height (для min-height), но на самом деле было min-height? и еще вот такой пример
<html>
<head>
<style type="text/css">
* {margin:0; padding:0;}
html {height:100%; }
body {height:100%; background:yellow;}
#wrap {min-height:100%; background:red;}
#car {height:60%; background:purple;}
#text {height:40%; background:gray;}
</style>
</head>
<body>
<div id="wrap">
<div id="car">
s
</div>
<div id="text">
s<br>s<br>
s<br>s<br>s<br>
s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>
s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>
s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>
s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>s<br>
</div>
</body>
</html>
почему wrapper не тянется на min-height 100%, ведь у body и html 100%, он тянется на 100% |
wrapper тянется (учись пользоваться отладчиком браузера). А вот car и text не тянутся, потому что у wrapper'а не задана высота (да, min-height задан, но это совсем другое). Читай внимательней посты выше.
|
Цитата:
p.s отладчик показывает что wrapper вытянут на 100%, а не на min-height 100%. google chrome 28.01.1500 |
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 01:47. |