#css #html #vertical-alignment
#css — код #HTML #выравнивание по вертикали
Вопрос:
Я пытаюсь выровнять три раздела рядом друг с другом. Центральный div содержит ссылку href с изображением, которая расширяет ссылки для редактирования текста. Проблема в том, что я не могу выровнять содержимое этих разделов по вертикали. Все содержимое левого, правого и центрального разделов должно быть выровнено по вертикали посередине следующим образом::
[справа]
[слева] [по центру] [справа]
[правильно]
Это также может выглядеть примерно так:
[слева]
[слева] [справа]
[слева] [в центре] [справа]
[слева] [справа]
[слева]
Но теперь это выглядит так:
[слева] [по центру] [справа]
[слева] [справа]
[слева]
Раздел редактирования содержимого лежит
Пока что это код:
<div id="search-result" class="accordion">
<div class="search-result-left">
<p>CEPT, Conference Europamp;eacute;enne des Adminidstra-</p>
<p>tion Despostes et des Tamp;eacute;lamp;eacute;communications</p>
</div>
<div class="search-result-right">
<p>Evropsko združenje poamp;scaron;tnih in telekomunikaci-</p>
<p>jskih organizacij</p>
</div>
<div class="search-result-center">
<a href="#" class="acc"><img src="CSS/images/arrow_wr.gif"/></a>
</div>
<div class="edit-content">
<p><a href="#">edit</a> -
<a href="#">comment</a> -
<a href="#">translate</a>
</p>
</div>
</div>
и css:
#all-search-results {
font-size: 14px;
color: #000000;
width: 730px;
margin: 0 auto;
line-height: 4px;
}
.search-result-left {
text-align: right;
float: left;
width: 335px;
}
.search-result-center {
text-align: center;
margin: 0 auto;
width: 60px;
}
.search-result-center img{
vertical-align: bottom;
}
.search-result-right {
text-align: left;
float: right;
width: 335px;
}
.edit-content{
color: #669900;
margin-top: 20px;
}
.edit-content a {
color: #669900;
}
Комментарии:
1. Было сделано МНОГО сообщений о вертикальном центрировании div. Пожалуйста, воспользуйтесь механизмом поиска на этом веб-сайте или обратитесь к jakpsatweb.cz/css/css-vertical-center-solution.html (первый хит, который я получил в Google).
2. Есть лучшие способы сделать это, чем это.
3. Я также искал именно эту страницу, но это не совсем то, что я хочу.
Ответ №1:
Чтобы выровнять содержимое по центру div
, я сделал это:
.myDiv {
min-height: 10em;
display: table-cell;
vertical-align: middle;
}
Ответ №2:
Легко, вам придется немного подправить, но идея в том, чтобы разделить его на три части
верхний средний Нижний
затем вы можете переместить первый блок вправо в верхнем блоке, затем поместить 3 блока в середину, а затем переместить еще один вправо внутри нижнего блока. (если мой код не работает, извините, я его не тестировал, но идея есть)
Всегда лучше разбивать вещи на то, что я называю «обертками».
.Wrap{
position: relative;
height: 100px; width: auto;
background: red;
}
.rightContent{
float: right;
height: 100px; width: 200px;
background: blue;
}
#left{
float: left; width: 200px; height: 100px; background: green;
}
#center{
float: left; width: 200px; height: 100px; background: yellow;
}
#right{
float: left; width: 200px; height: 100px; background: grey;
}
HTML
<div class="Wrap">
<div class="rightContent">top right</div>
</div>
<div class="Wrap">
<div id="left">mid left</div>
<div id="center">mid center</div>
<div id="right">mid right</div>
</div>
<div class="Wrap">
<div class="rightContent">bottom right</div>
</div>
Комментарии:
1. Это в основном то, что у меня есть сейчас. Но я не хочу иметь фиксированную высоту. Я думал выровнять эти три раздела вертикально посередине. Если я удалю атрибут высоты из вашего решения, разделы будут выровнены по верху. Другим решением было бы установить фиксированную высоту для этих трех разделов и выровнять содержимое разделов по вертикали посередине, но я надеялся на первый вариант, если это возможно 🙂 Кстати, извините за мой английский, я надеюсь, что есть кто-то, кто это понимает.
Ответ №3:
Вот пример, на который вы можете сослаться
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Universal vertical center with CSS</title>
<style>
.greenBorder {border: 1px solid green;} /* just borders to see it */
</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%">
any text<br>
any height<br>
any content, for example generated from DB<br>
everything is vertically centered
</div>
</div>
</div>
</body>
</html>