Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   vertical-align и DOCTYPE (https://javascript.ru/forum/xhtml-html-css/34714-vertical-align-i-doctype.html)

LRCenter 16.01.2013 08:57

vertical-align и DOCTYPE
 
Следующий код прекрасно работает, выравнивая вложенный блок child по центру вертикали:

<!-- <!DOCTYPE html> -->
<html>
<head>
<title>Заголовок</title>
</head>

<style>
.child{
	width: 400px;
	height: 100px;
	display:inline-block;
	vertical-align:middle;
}

.helper{
	display:inline-block;
	vertical-align:middle;
	height:100%;
	width:0px;
}

.parent{text-align: center;}
</style>


<div class="parent">
	<div class="child">Text</div>
	<div class="helper"></div>
</div>

</html>


Но если раскоментировать <!DOCTYPE html>, или объявить любой другой тип DOCTYPE, вертикальное выравнивание пропадает. Как же увязать вместе vertical-align и DOCTYPE?

ksa 16.01.2013 14:49

Цитата:

Сообщение от LRCenter
Как же увязать вместе vertical-align и DOCTYPE?

У таблички это получается кроссбраузерно. :)

LRCenter 16.01.2013 16:00

Вот именно, а я хотел сверстать без таблиц, только на div-ах, это вообще возможно? Потому что даже хаки не помогают.

Не хотелось бы выбирать между <!DOCTYPE html> и дивной версткой.

ksa 17.01.2013 13:54

Цитата:

Сообщение от LRCenter
а я хотел сверстать без таблиц, только на div-ах

Это вопрос религии? :D

LRCenter 17.01.2013 14:38

Нет, я без предрассудков :no:
Просто не хочется чтобы народные массы разработчиков в меня экскрементами кидались при просмотре моего кода, ибо он публичен.

Так сказать для успокоения совести надо. И вот оказывается, даже такую элементарщину, как выравнивание по высоте не сделать на css без геморроя :(

ksa 17.01.2013 14:59

Цитата:

Сообщение от LRCenter
такую элементарщину, как выравнивание по высоте

Это далеко не элементарщина! :nono:

Platypus 17.01.2013 15:43

Сталкивался с такой проблемой, командой vertical-align выравнить div нельзя, насколько я понимаю этой командой выравнивается только строчные теги и таблицы, могу чуть попозже покапаться и посмотреть как то что Вы хотите сделать div`ами.:write:

LRCenter 17.01.2013 16:08

Platypus,
Да, я был бы признателен, честно говоря.

Platypus 17.01.2013 16:15

LRCenter, вопрос Вам нужен именно в такой структуре сделать или какая то другая, если да, покажите примерно как она должна выглядеть!

LRCenter 17.01.2013 16:21

Именно в такой.

Platypus 17.01.2013 17:15

При апсолютном позиционировании это должно выглядеть примерно так(как я понял класс helper нужен только для помощи в выравнивании т.к. он не понадобился сделал без него, если не так поправь меня):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Заголовок</title>
</head>
<style>
.child{
width: 400px;
    height: 100px;
	position:absolute;
	top:50%;
	left:50%;
	margin-top:-100px;
	margin-left:-150px;
	text-align: center;
	border: 1px solid black;
}
 
.parent{
	margin:0;
	padding:0;
	width:100%;
	height:100%;
	background:#000;
}
</style>
 
 
<div class="parent">
    <div class="child">Text</div>
</div>
</html>

Deff 17.01.2013 17:15

Platypus,
У .parent должна быть position:relaive; - иначе .child позиционируется относительно окна браузера
И сколько не пробовали, без скриптов, в инете все же лучший кроссбраузерный и самый простой способ: в качестве .parent вставлять одноячеистую таблицу, остальные способы - зависят от высоты .child, что не айс при заранее неизвестном кол-ве контента.

Platypus 17.01.2013 17:25

Цитата:

Сообщение от Deff (Сообщение 227838)
Platypus,
У .parent должна быть position:relaive; - иначе .child позиционируется относительно окна браузера
И сколько не пробовали, без скриптов, в инете все же лучший кроссбраузерный и самый простой способ: в качестве .parent вставлять одноячеистую таблицу, остальные способы - зависят от высоты .child, что не айс при заранее неизвестном кол-ве контента.

Deff,
Согласен, но тут уже зависит от задачи!

ksa 17.01.2013 19:49

Цитата:

Сообщение от Platypus
При апсолютном позиционировании

Если не знаешь размеров - не отцентрируешь...

LRCenter 19.01.2013 08:23

Мда, интересный пример, но все же все не так просто как хотелось бы.


Часовой пояс GMT +3, время: 19:29.