У меня есть div с двумя изображениями и h1
. Все они должны быть вертикально выровнены внутри div, рядом друг с другом.
Одно из изображений должно быть absolute
расположено внутри div.
Какой CSS необходим для работы всех распространенных браузеров?
<div id="header">
<img src=".." ></img>
<h1>testing...</h1>
<img src="..."></img>
</div>
Ответы:
Вау, эта проблема популярна. Это основано на недоразумении в
vertical-align
собственности. Эта превосходная статья объясняет это:Понимание
vertical-align
, или "Как (Не) Вертикально Центрировать Содержание" Гэвином Кистнером.«Как центрировать в CSS» - это отличный веб-инструмент, который помогает найти необходимые атрибуты центрирования CSS для различных ситуаций.
В двух словах (и для предотвращения гниения ссылок) :
vertical-align: middle
. Однако «контекст» - это не вся высота родительского контейнера, а высота текстовой строки, в которой они находятся. Пример jsfiddleabsolute
и указать егоheight
,margin-top
иtop
положение. пример jsfiddleline-height
для заполнения его высоты. Этот метод довольно универсален по моему опыту. пример jsfiddleисточник
vertical-align: middle
) заключается в том, что вам нужно указать фиксированную высоту. Не очень возможно для адаптивного веб-дизайна .inline-block
иtable-cell
элементами. Если у вас возникли проблемы с этим, попробуйте настроитьline-height
элемент контейнера (т.е. контекст), поскольку он используется вvertical-align
вычислениях линейного блока.Теперь, когда поддержка flexbox увеличивается, этот CSS, примененный к содержащему элементу, будет вертикально центрировать содержащийся элемент:
Используйте префиксную версию, если вам также нужно ориентироваться на Explorer 10 и старые (<4.4) браузеры Android:
источник
align-items
разделЯ использовал этот очень простой код:
HTML:
CSS:
Очевидно, что, используете ли вы
.class
или#id
, результат не изменится.источник
Это сработало для меня:
источник
margin : 0 auto
, это не сработает из-заdisplay: table-cell
источник
justify-content: center
исправило мое отсутствие горизонтального центрированияТехника от моего друга:
HTML:
CSS:
ДЕМО здесь
источник
Чтобы расположить элементы блока по центру (работает в IE9 и выше), требуется оболочка
div
:источник
Выровняли как ? Вершины изображений выровнены по верху текста?
Абсолютно позиционируется относительно DIV? Возможно, вы могли бы набросать то, что вы ищете ...?
fd описал шаги для абсолютного позиционирования, а также для настройки отображения
H1
элемента таким образом, чтобы изображения отображались внутри него. К этому я добавлю, что вы можете выровнять изображения, используяvertical-align
стиль:... это объединит заголовок и изображения с выровненными верхними краями. Существуют другие варианты выравнивания; обратитесь к документации . Также может оказаться полезным сбросить DIV и переместить изображения внутри
H1
элемента - это обеспечивает семантическую ценность для контейнера и устраняет необходимость настраивать отображениеH1
:источник
Используйте эту формулу, и она будет работать всегда без трещин:
источник
Почти все методы должны указывать высоту, но часто у нас нет никаких высот.
Итак, вот 3-х строчный трюк CSS3, который не требует знать высоту.
Это поддерживается даже в IE9.
с его префиксами поставщика:
Источник: http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
источник
Двумя способами вы можете выровнять элементы по вертикали и по горизонтали
1. Bootstrap 4.3.X
для вертикального выравнивания:
d-flex align-items-center
для горизонтального выравнивания:
d-flex justify-content-center
2. CSS3
источник
Мой трюк заключается в том, чтобы поместить в div таблицу с 1 строкой и 1 столбцом, установить 100% ширины и высоты, а также свойство vertical-align: middle.
Скрипка: http://jsfiddle.net/joan16v/sbqjnn9q/
источник
# 3 способа сделать дочерний центр центром в родительском элементе div
Преобразовать / Перевести Метод
демонстрация
источник
Используя CSS для вертикального центра, вы можете позволить внешним контейнерам действовать как таблица, а содержимое - как ячейка таблицы. В этом формате ваши объекты будут оставаться в центре. :)
В качестве примера я вложил несколько объектов в JSFiddle, но основная идея такова:
HTML
CSS
Пример нескольких объектов:
HTML
CSS
Результат
https://jsfiddle.net/martjemeyer/ybs032uc/1/
источник
По умолчанию h1 является элементом блока и будет отображаться в строке после первого img, а второй img появится в строке, следующей за блоком.
Чтобы это не происходило, вы можете установить h1 для поведения встроенного потока:
Что касается абсолютного позиционирования img внутри div , вам нужно установить содержащий div для «известного размера», прежде чем это будет работать должным образом. По моему опыту, вам также нужно изменить атрибут позиции с значения по умолчанию - положение: относительный работает для меня:
Если вы можете заставить это работать, вы можете попытаться постепенно удалять атрибуты height, width, position из div.header, чтобы получить минимальные обязательные атрибуты для получения желаемого эффекта.
ОБНОВИТЬ:
Вот полный пример, который работает на Firefox 3:
источник
Мы можем использовать функцию вычисления CSS, чтобы вычислить размер элемента, а затем соответствующим образом расположить дочерний элемент.
Пример HTML:
И CSS:
Демо создано здесь: https://jsfiddle.net/xnjq1t22/
Это решение хорошо работает с отзывчивым
div
height
иwidth
также.Примечание. Функция calc не проверяется на совместимость со старыми браузерами.
источник
На сегодняшний день я нашел новый обходной путь для вертикального выравнивания нескольких текстовых строк в div с использованием CSS3 (и я также использую систему сетки bootstrap v3 для украшения пользовательского интерфейса), как показано ниже:
Насколько я понимаю, непосредственный родительский элемент текста, содержащего элемент, должен иметь некоторую высоту. Я надеюсь, что это вам тоже поможет. Спасибо!
источник
Мой новый любимый способ сделать это с помощью сетки CSS:
источник
Просто используйте таблицу из одной ячейки внутри div! Просто установите высоту ячейки и таблицы с 100%, и вы можете использовать выравнивание по вертикали.
Стол из одной ячейки внутри div обрабатывает выравнивание по вертикали и обратно совместим с каменным веком!
источник
Я использую следующее решение (без позиционирования и без высоты строки), так как в течение года оно работает с IE 7 и 8.
источник
Это мое личное решение для элемента i внутри div
Пример JSFiddle
HTML
CSS
источник
Для меня это сработало так:
Элемент «a» преобразован в кнопку с использованием классов Bootstrap, и теперь он центрируется по вертикали внутри внешнего «div».
источник
источник
Просто это:
Стол из одной ячейки внутри div обрабатывает выравнивание по вертикали и обратно совместим с каменным веком!
источник
источник
Вот еще один (отзывчивый) подход:
http://jsfiddle.net/herrfischerhamburg/JcVxz/
источник
Я парень .NET, который только начал заниматься веб-программированием. Я не использовал CSS (ну, немного). Я использовал немного JavaScript для выполнения вертикального центрирования вместе с функцией jcuery .css.
Я просто публикую все из моего теста. Это, вероятно, не слишком элегантно, но пока работает.
источник
...
или CSS
Покрытие браузера
источник
table-cell
, что делаетvertical-align: middle;
работу. Более того, он работает без вложенного div-оболочки / буфера и работает как с текстом, так и с изображениями (или обоими), и вам не нужно изменять свойства позиции.