Відповіді:
Використовуйте line-height:50px;
замість висоти. Це повинно зробити трюк;)
Майте на увазі, що line-height
підхід не вдається, якщо у вас є тривале речення, у span
якому порушується рядок, оскільки не вистачає місця. У цьому випадку у вас буде два рядки з проміжком з висотою N пікселів, вказаними у властивості.
Я застряг у ньому, коли хотів показати зображення з вертикально центрованим текстом на правій стороні, який працює у чуйному веб-додатку. В якості основи я використовую підхід, запропонований Еріком Нікусом та Феліпе Тадео.
Якщо ви хочете досягти:
і це:
.container {
background: url( "https://i.imgur.com/tAlPtC4.jpg" ) no-repeat;
display: inline-block;
background-size: 40px 40px; /* image's size */
height: 40px; /* image's height */
padding-left: 50px; /* image's width plus 10 px (margin between text and image) */
}
.container span {
height: 40px; /* image's height */
display: table-cell;
vertical-align: middle;
}
<span class="container">
<span>This is a centered sentence next to an image</span>
</span>
Це найпростіший спосіб зробити це, якщо вам потрібно кілька рядків. Загорніть span
текст в інший span
і вкажіть його висоту line-height
. Хитрість в кілька ліній скидання внутрішніх span
«сек line-height
.
<span class="textvalignmiddle"><span>YOUR TEXT HERE</span></span>
.textvalignmiddle {
line-height: /*set height*/;
}
.textvalignmiddle > span {
display: inline-block;
vertical-align: middle;
line-height: 1em; /*set line height back to normal*/
}
Звичайно, зовнішнє span
може бути div
або тим, щовідошу
span
s, як і будь-який інший вбудований елемент, може містити будь-який вбудований HTML-елемент . Незважаючи на те, я писав, що це textvalignmiddle
може бути, div
якщо це необхідно (і ви можете встановити це, display:inline;
якщо ви настільки spans
span
є загальним вбудованим контейнером для html і не так багато, як натяк на те, що це лише текст; `Його можна використовувати для групування елементів для стилістичних цілей ...` Я пропоную прочитати специфікацію, перш ніж наштовхувати свої особисті стандарти кодування на інших, заявляючи їх як факт
Флексбокс спосіб:
.foo {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
}
.foo
проміжок display: flex-inline
краще підійде
Мені це знадобилося для посилань, тому я загорнув проміжок a-тегом і дівом, а потім по центру відзначив сам тег span
HTML
<div>
<a class="tester" href="#">
<span>Home</span>
</a>
</div>
CSS
.tester{
display: inline-block;
width: 9em;
height: 3em;
text-align: center;
}
.tester>span{
position: relative;
top: 25%;
}
Зображення та текст вертикального центру CSS
У мене є Створення однієї демонстрації для вертикального центру зображень та тексту, а також у мене тест на firefox, хром, сафарі, Internet Explorer 9 та 8 теж.
Це дуже короткий і простий CSS і HTML. Перевірте код нижче, і ви можете знайти вихід на екрані.
HTML
<div class="frame">
<img src="capabilities_icon1.png" alt="" />
</div>
CSS
.frame {
height: 160px;
width: 160px;
border: 1px solid red;
white-space: nowrap;
text-align: center; margin: 1em 0;
}
.frame::before {
display: inline-block;
height: 100%;
vertical-align: middle;
content:"";
}
img {
background: #3A6F9A;
vertical-align: middle;
}
Виведіть сюди опис зображення