html — Не работает vertical-align
Вопрос задан
Изменён 4 года 1 месяц назад
Просмотрен 8k раз
Есть родительский div (зеленый на примере-рисунке) и есть два независимых div-блока с текстом и прочими элементами внутри (красный на рисунке).
В левом мало текста, а во втором — много.
Требуется, чтобы элементы слева всегда были посередине относительно элементов справа, как на рисунке этом:
(источник: joxi.ru)
Я знаю, что для этого ворде как нужно использовать vertical-align: middle, но результат не тот, что нужен. Получается идентично как если бы я bottom написал.
- html
- css
- html5
- css3
Вариант 1 display: inline-block;
:
* { box-sizing: border-box; } . row { border: 2px solid green; padding: 5px; } .col { border: 2px solid tomato; display: inline-block; vertical-align: middle; width: 50%; } .col+.col { margin-left: -5px; }
<div> <div> Lorem ipsum. </div> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, voluptas. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, voluptas. </div> </div>
Вариант 2 display: table-cell;
:
* { box-sizing: border-box; } .row { border: 2px solid green; padding: 5px; display: table; } .col { border: 2px solid tomato; display: table-cell; vertical-align: middle; width: 50%; }
<div> <div> Lorem ipsum. </div> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, voluptas. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, voluptas. </div> </div>
Вариант 3 display: flex;
:
* { box-sizing: border-box; } .row { border: 2px solid green; padding: 5px; display: flex; align-items: center; align-content: center; justify-content: center; flex-flow: row nowrap; } .col { border: 2px solid tomato; width: 50%; }
<div> <div> Lorem ipsum. </div> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, voluptas. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, voluptas. </div> </div>
Вы не очень правильно понимаете как работает и главное как не работает vertical-align
. Чтобы добиться нужного вам результата потребуется для дочерних div
задать display: table-cell;
(и убрать float
)
Ссылка по теме: Разбираемся с vertical-align
Зарегистрируйтесь или войдите
Регистрация через Google Регистрация через Facebook Регистрация через почтуОтправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.
html — Не работает vertical-align: middle;
Задать вопрос
Вопрос задан
Изменён 7 лет 11 месяцев назад
Просмотрен 8k раз
.mainHistory{ width: 1100px; margin: 100px 0 0 0; position: relative; display: block; } .cellHistory{ float: left; width: 33%; text-align: center; } .cellHistory span{ display: inline-block; vertical-align: middle; } <div> <div> <span>01 01 2000</span> </div> <div> <span>Создание фирмы Первоначальное название: ооо фирма </span> </div> <div> <img src="/1. png"> </div> </div>
- html
- css
Необходимо так
.mainHistory { width: 1100px; margin: 100px 0 0 0; position: relative; display: block; font-size: 0; <! -- убираем отступы display: inline-block --> } .cellHistory { display: inline-block; vertical-align: middle; width: 33.33333333333333%; text-align: center; font-size: 14px; } .cellHistory span {}
<div> <div> <span>01 01 2000</span> </div> <div> <span>Создание фирмы Первоначальное название: ооо фирма</span> </div> <div> <img src="http://placehold.it/150x250" alt="" /> </div>
Fiddle
1Зарегистрируйтесь или войдите
Регистрация через Google Регистрация через Facebook Регистрация через почтуОтправить без регистрации
ПочтаОтправить без регистрации
ПочтаНеобходима, но никому не показывается
By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.
html — Почему свойство CSS с вертикальным выравниванием не работает и не помещает диапазон в среднюю высоту своего родителя?
Я с трудом понимаю свойство vertical-align
в течение некоторого времени, и мне не удалось успешно его применить, поэтому я решил написать здесь.
С простой разметкой
Часть текста по центру здесь
и
.родительский{ высота: 100 пикселей; цвет фона: красный; .текст{ вертикальное выравнивание: посередине; цвет фона: зеленый; } }
приводит к
, почему диапазон не центрирован в родительском контейнере? К чему именно относится это свойство?
Кодовое перо для вас:
Имейте в виду, что Я не спрашиваю здесь, как центрировать элемент в div , но почему это конкретное свойство css не работать так, как подсказывает мне здравый смысл.
Здесь начинает действовать вертикальное выравнивание https://codepen.io/anon/pen/QxZpYP
- HTML
- CSS
Если вы хотите использовать вертикальное выравнивание: средний
, его необходимо объединить с отображением : таблица-ячейка
и применить для родительского , и я бы не рекомендовал это решение, однако ниже приведен ваш код, исправлено и некоторые другие решения.
Решение 1
.родительский{ высота: 100 пикселей; отображение: таблица-ячейка; вертикальное выравнивание: посередине; цвет фона: красный } .текст{ цвет фона: зеленый; }
<дел>
Часть текста здесь по центру
Решение 2
Использование определенного line-height
для .parent
и vertical-align
для дочернего элемента. В этом решении дочерний элемент выравнивается по вертикали относительно line-height
, который растянут — он имеет 100 пикселей.
.родитель { высота: 100 пикселей; цвет фона: красный; высота строки: 100 пикселей; } .текст { вертикальное выравнивание: посередине; высота строки: нормальная; цвет фона: зеленый; }
<дел>
Часть текста здесь по центру