Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пробелема с vertical-align в DIV

244
25 ноября 2007 года
UAS
2.0K / / 19.07.2006
[HTML]<html><head>
<title></title>
</head>

<style type="text/css">
div#admin {
border: solid #00659c 2px;
width: 100%;
background-color: #efefef;
font-size: 12px;
font-weight: bold;
font-family: Verdana, Arial, Sans-Serif;
height: 30px;
text-align: left;
vertical-align: middle;
margin: 0px;
padding: 4px;
}
div#admin a { color: #00659c; }
div#admin a:hover { color: #DD6900; }
</style>

<body>


<div id="admin">
<a href="%DIR_UP%index.php">Главная страница</a>&nbsp;|&nbsp;
<a href="./admin/config.php">Настройки</a>&nbsp;|&nbsp;
<a href="./admin/exit.php">Выход</a>
</div>

</body>
</html>[/HTML]

вот. вообщем проблемка мелкая. текст почему-то никак не хочет выравняться в середине (т.е. не работает свойство vertical-align).

Знает ли кто в чем загвоздка?
251
25 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Вышеприведенное выравнивание работает только в нормальный броузерах, не ИЕ.
Хак, который выкопал с гугля ;)
[html]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Универсально вертикальное центрирование с помощью CSS</title>
<style>
.greenBorder {border: 1px solid green;} /* просто чтобы видеть бордер */
</style>
</head>

<body>
<div class="greenBorder" style="display: table; height: 400px; #position: relative; overflow: hidden;">
<div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div class="greenBorder" style=" #position: relative; #top: -50%">
любой текст<br>
любая высота<br>
любой контент, например, генерированный с базы данных<br>
все вертикально отцентрировано
</div>
</div>
</div>
</body>
</html>
[/html]
12
25 ноября 2007 года
alekciy
3.0K / / 13.12.2005
А он и не должен работать.
Цитата:

Область применения: строковые и 'table-cell' элементы


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

На своем хомяке делал вертикальное выравнивание через высоту линейного блока, селектор #menu_page a.

251
25 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Или еще так, без хаков:
[html]<div id="outer">
<div id="middle">
<div id="inner">
любой текст<br>
любая высота<br>
любой контент, например, генерированный с базы данных<br>
все вертикально отцентрировано
</div>
</div>
</div>[/html]И структуризированный стиль:

<style type="text/css">
#outer {height: 400px; overflow: hidden; [COLOR=Blue]position: relative;[/COLOR]}
[COLOR=Green]#outer[id] {display: table; position: static;}[/COLOR]

[COLOR=Blue]#middle {position: absolute; top: 50%;} [/COLOR][COLOR=Gray]/* for explorer only*/[/COLOR]
[COLOR=Green]#middle[id] {display: table-cell; vertical-align: middle; position: static;}[/COLOR]

[COLOR=Blue]#inner {position: relative; top: -50%} [/COLOR]/* for explorer only */
[COLOR=Gray]/* optional: #inner[id] {position: static;} */[/COLOR]
</style>


Цветовая легенда: ;)
[COLOR=Blue]CSS style for Internet Explorer only[/COLOR]
[COLOR=Green]CSS styles for standard browsers

[/COLOR]
[COLOR=black]CSS2 селектор #value[id] есть эквивалентом #value, но ИЕ игнорит эти типы значений. В общем, синтаксис *[foo] обозначает любой эллемент с атрибутом foo. Любой HTML-эллемент #something должен иметь id атрибута, установленный в "something". Получается, #value[id] работает только в стандартных броузерах (похоже работает и .value[class])[/COLOR][COLOR=Green]
[/COLOR]
12
25 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Если мы так делаем, то фактически вместо div-а получаем таблицу. Зачем тогда применять div? Тогда уж лучше и главное проще и правильнее будет применять таблицу.
251
26 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: alekciy
Если мы так делаем, то фактически вместо div-а получаем таблицу. Зачем тогда применять div? Тогда уж лучше и главное проще и правильнее будет применять таблицу.


Ответил по сабжу, если автор допускает применение таблиц в своем коде, то конечно лучше заюзать таблицу.

244
26 ноября 2007 года
UAS
2.0K / / 19.07.2006
Эхххх((( Придется все таки значить использовать таблицу. Ладно, всем спасибо
308
26 ноября 2007 года
Комаджу
850 / / 26.07.2006
Цитата: alekciy
Если мы так делаем, то фактически вместо div-а получаем таблицу. Зачем тогда применять div? Тогда уж лучше и главное проще и правильнее будет применять таблицу.

Я бы не согласился, что фактически получается таблица. Фактически получается div со свойствами таблицы. А применять таблицу будет неправильно. Таки таблицы для табличных данных.

244
26 ноября 2007 года
UAS
2.0K / / 19.07.2006
Комаджу, но по крайней мере я на 100% уверен сейчас, что делая на таблицах - все будет отображаться правильно во всех браузерах. Сам я, конечно, тоже уже вовсю пытаюсь к блочной верстке перейти. В разы удобней, но блин приходиться прогибаться под каждый браузер, в частности под осла =(
308
26 ноября 2007 года
Комаджу
850 / / 26.07.2006
Цитата: UAS
Комаджу, но по крайней мере я на 100% уверен сейчас, что делая на таблицах - все будет отображаться правильно во всех браузерах. Сам я, конечно, тоже уже вовсю пытаюсь к блочной верстке перейти. В разы удобней, но блин приходиться прогибаться под каждый браузер, в частности под осла =(

Так я разве против? Прекрасно понимаю, что кому-то удобнее верстать таблицами и ничего против не говорю никогда. Только в плане div'ной верстки разумнее указать для блока табличные свойства, чем использовать саму таблицу.

12
26 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Комаджу
Я бы не согласился, что фактически получается таблица.


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

Поэтому в данном случаем делать div который реально будет таблицей просто нет совршенно ни какого смысла.

308
26 ноября 2007 года
Комаджу
850 / / 26.07.2006
А как же философия css с его "привернуть новый дизайн просто - достаточно сменить css"?
12
26 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Комаджу
А как же философия css с его "привернуть новый дизайн просто - достаточно сменить css"?


Вот именно это и получается. Через CSS ты можешь сделать поведение TABLE таким, как будто это DIV или A, а сменив CSS ты можешь сделать DIV талицей.

Именно поэтому я подчеркиваю, что визуального представление зависит не от используемого тега, а именно от того, что прописано в CSS. Если некий тег прописан именно как таблица (а к примеру для XML у нас может быть вообще произвольное имя тега), это таблицей и будет.

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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог