Я знаю, что есть несколько вопросов по этой теме, но я думаю, что они зависят немного от другого CSS properties
, заданного ранее.
У меня есть вложенный <div id="tituloParametros>"
, и мне нужно, чтобы его текст / содержание было центрировано по вертикали и горизонтали.
Это моя разметка:
<div id="outer">
<div id="parametros">
<div id="tituloParametros">Ingresa los puntos conocidos x,f(x)</div>
</div>
<div id="resultados">
<div id="graficos">
<div id="bars"></div>
<div id="fx"></div>
<div id="pinchetabla">Tabla inútil</div>
</div>
<div id="loquerealmenteimporta"></div>
</div>
</div>
А это примененный CSS:
#outer{
padding-left: 15px;
padding-top: 15px;
width: 1350px;
height: 640px;
}
#parametros {
float:left;
width: 20%;
height: 100%;
}
#tituloParametros {
height: 9%;
width: 100%;
background-color: red;
text-align:center;
vertical-align:middle
}
#resultados {
float:right;
width: 80%;
height: 100%;
}
#graficos {
height: 75%;
width: 100%;
}
#bars {
float: left;
height: 100%;
width: 30%;
}
#fx {
float: left;
height: 100%;
width: 30%;
}
#pinchetabla {
float: left;
height: 100%;
width: 40%;
}
#loquerealmenteimporta {
height: 25%;
width: 100%;
}
Я думал так:
text-align:center;
vertical-align:middle
Оба сделают это, но этого не произошло. Добавление display: table-cell;
тоже не решает эту проблему, оно фактически обрезает фон до границ текста.
3 ответа
Вы правы - подход table
/ table-cell
не работает здесь.
В качестве альтернативы вы можете прибегнуть к методу абсолютного позиционирования. Элемент будет центрирован по вертикали, когда значение top
будет 50%
вычтено на половину высоты элемента. В этом случае это не должно быть проблемой, потому что высота уже установлена с помощью единицы измерения %
. 100%
- 50%
- 9%
* .5
= 45.5%
Если бы это было не так, вы могли бы использовать calc()
или отрицательные поля для вычитания блок px
из блока %
. В этом случае стоит отметить, что дочерний элемент абсолютно расположен относительно родительского элемента.
Обновленный CSS - ОБНОВЛЕННЫЙ ПРИМЕР ЗДЕСЬ
#parametros {
float:left;
width: 20%;
height: 100%;
outline : 1px solid black;
position:relative;
}
#tituloParametros {
background-color: red;
width: 100%;
height: 9%;
text-align:center;
position:absolute;
top:45.5%
}
Элемент #tituloParametros
теперь центрирован внутри родительского элемента. Если вы хотите центрировать текст внутри него, вы можете обернуть текст элементом span, а затем использовать подход вертикального центрирования table
/ table-cell
:
#tituloParametros {
/* other styling.. */
display:table;
}
#tituloParametros > span {
display:table-cell;
vertical-align:middle;
}
Вот мое исправление! :::: HTML:
<div id="parametros">
<div id="tituloParametros"><p>Ingresa los puntos conocidos x,f(x)</p></div>
</div>
CSS:
#tituloParametros {
height: 70px;
width: 100%;
background-color: red;
text-align:center;
vertical-align:middle
}
#tituloParametros p{
line-height: 70px;
}
divs
height
и width
<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>
Вот демо http://www.jakpsatweb.cz/css/priklady /vertical-align-final-solution-en.html
Похожие вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].
line-height
, поскольку оно будет работать с динамическая высота..