Jump to content

Вертикальное выравнивание. Часть 2.


Great Rash
 Share

Recommended Posts

Шикарный способ эмуляции display:table-cell в старых IE, всего с одной доп. оберткой. Особенно радует, что с минимальным допиливанием можно делать несколько ячеек рядом:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>

<style type="text/css">
html, body {
margin: 0;
padding: 0;
height: 100%;
}

.table {
display: table;
height: 100%;
width: 100%;
}

.cell {
background: pink;
display: table-cell;
width: 50%;
text-align: center;
vertical-align: middle;
}

.cell + .cell {
background: lightblue;
}
</style>

<!--[if lte IE 7]>
<style type="text/css">
.cell {
float: left;
clear: right;
writing-mode: tb-rl;
text-align: center;
height: 100%;
width: 49.99%;
}

.content {
display: inline-block;
width: 100%;
writing-mode: lr-tb;
}
</style>
<![endif]-->
</head>
<body>

<div class="table">
<div class="cell">
<span class="content">Я по центру</span>
</div>
<div class="cell">
<span class="content">Я тоже</span>
</div>
</div>

</body>
</html>

Почему строка display: inline-block; в .content, а не в .cell?

Link to comment
Share on other sites

Потому что в IE комбинация writing-mode: tb-rl; text-align: center; центрирует по вертикали целый инлайновый блок (как одно "слово", повернутое набок). А внутри этого блока тексту возвращается нормальная здоровая горизонтальная ориентация. Без дополнительной обертки .content я не представляю, как это сделать.

Link to comment
Share on other sites

Потому что в IE комбинация writing-mode: tb-rl; text-align: center; центрирует по вертикали целый инлайновый блок (как одно "слово", повернутое набок). А внутри этого блока тексту возвращается нормальная здоровая горизонтальная ориентация. Без дополнительной обертки .content я не представляю, как это сделать.

SelenIT, а если надо, чтобы две ячейки были шириной по 33% и разбежались влево и вправо?

я пробовал добавить в .cell float:left; width: 33%;

а в .cell+.cell float:right; но ничего не вышло.

Edited by borus
Link to comment
Share on other sites

В IE7 работает, только что проверил. А в остальных — как вы себе представляете "разбегающиеся" ячейки таблицы (с display:table-cell)? Добавьте в середину еще одну ячейку шириной 34%, что ли...

Link to comment
Share on other sites

  • 1 month later...

Потому что в IE комбинация writing-mode: tb-rl; text-align: center; центрирует по вертикали целый инлайновый блок (как одно "слово", повернутое набок). А внутри этого блока тексту возвращается нормальная здоровая горизонтальная ориентация. Без дополнительной обертки .content я не представляю, как это сделать.

можно еще задавать line-height = height, а для дочерних элементов возвращать line-height в нормальное состояние. по-моему в ие такое работает

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Так ведь если высота автоматическая и зависит от вложенных инлайн элементов, то должно работать vertical-align? Поправьте, если неправ.

Link to comment
Share on other sites

В таком случае, да, зависит. Общая высота определяется самым высоким потомком, а остальные ровняются по его вертикальной середине. Просто из формулировки

задавать line-height = height, а для дочерних элементов возвращать line-height в нормальное состояние
я предположил, что речь о ситуации с единственным дочерним элементом, который меньше высоты контейнера (иначе не было бы вопроса центрирования)...
Link to comment
Share on other sites

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

а, теперь понял. вылетел из головы вариант с процентной высотой

Link to comment
Share on other sites

  • 3 years later...

Здравствуйте!

 

Если применяю вертикальное выравнивание по этому методу, то .header-contacts (с Москвой и Пятигорском) здесь перестаёт занимать всю оставшуюся после логотипа ширину... Можно ли как-то заставить таблицу занимать всю оставшуюся после .our_logo ширину?

Link to comment
Share on other sites

Здравствуйте!

 

Если применяю вертикальное выравнивание по этому методу, то .header-contacts (с Москвой и Пятигорском) здесь перестаёт занимать всю оставшуюся после логотипа ширину... Можно ли как-то заставить таблицу занимать всю оставшуюся после .our_logo ширину?

Не это ли вы случаем ищите? :unsure:

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
Reply to this topic...

×   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