Я пытаюсь центрировать содержимое вкладок по вертикали, но когда я добавляю стиль CSS display:inline-flex
, горизонтальное выравнивание текста исчезает.
Как сделать выравнивание текста x и y для каждой из моих вкладок?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
Ответы:
Подход 1 -
transform
translateX
/translateY
:Пример здесь / Пример полного экрана
В поддерживаемых браузерах (большинство из них) вы можете использовать
top: 50%
/left: 50%
в комбинации сtranslateX(-50%) translateY(-50%)
для динамического вертикального / горизонтального центрирования элемента.Подход 2 - метод Flexbox:
Пример здесь / Пример полного экрана
В поддерживаемых браузерах установите
display
целевой элементflex
и используйте егоalign-items: center
для вертикального иjustify-content: center
горизонтального центрирования. Только не забудьте добавить префиксы поставщиков для дополнительной поддержки браузера ( см. Пример ).Подход 3 -
table-cell
/vertical-align: middle
:Пример здесь / Пример полного экрана
В некоторых случаях вам необходимо убедиться, что высота элемента
html
/body
установлена на100%
.Для вертикального выравнивания установите родительский элемент
width
/height
в100%
и добавьтеdisplay: table
. Тогда для дочернего элемента, изменитьdisplay
кtable-cell
и добавитьvertical-align: middle
.Для горизонтального центрирования вы можете добавить
text-align: center
к центру текст и любые другиеinline
дочерние элементы. В качестве альтернативы, вы можете использоватьmargin: 0 auto
, предполагая, что элемент являетсяblock
уровнем.Подход 4 - Абсолютно позиционируется
50%
сверху со смещением:Пример здесь / Пример полного экрана
Такой подход предполагает , что текст имеет известную высоту - в этом случае
18px
. Просто расположите элемент50%
сверху, относительно родительского элемента. Используйте отрицательноеmargin-top
значение, равное половине известной высоты элемента, в данном случае --9px
.Подход 5 -
line-height
Метод (наименее гибкий - не рекомендуется):Пример здесь
В некоторых случаях родительский элемент будет иметь фиксированную высоту. Для вертикальной центровки все, что вам нужно сделать, это установить
line-height
значение дочернего элемента, равное фиксированной высоте родительского элемента.Хотя в некоторых случаях это решение будет работать, стоит отметить, что оно не будет работать при наличии нескольких строк текста - например, так .
источник
display: flex
в родительском и дочернемalign-self: center
.Если CSS3 является опцией (или у вас есть запасной вариант), вы можете использовать transform:
В отличие от первого подхода выше, вы не хотите использовать left: 50% с отрицательным переводом, потому что в IE9 + есть ошибка переполнения. Используйте положительное правильное значение, и вы не увидите горизонтальные полосы прокрутки.
источник
transform: translateX(50%) translateY(50%);
вместо. Преобразование выше не является синтаксически правильным в соответствии с документами Mozilla .transform
значений, которые могут принимать значения X и Y, имеют базовую функцию, которая принимает как специализированные функции, так и одну.Лучший способ центрировать прямоугольник как по вертикали, так и по горизонтали, это использовать два контейнера:
Внешний контейнер:
display: table;
Внутренний контейнер:
display: table-cell;
vertical-align: middle;
text-align: center;
Контент окно:
display: inline-block;
Демо:
Смотрите также эту скрипку !
Центрирование в середине страницы:
Чтобы центрировать контент по центру страницы, добавьте в свой внешний контейнер следующее:
position : absolute;
width: 100%;
height: 100%;
Вот демонстрация для этого:
Смотрите также эту скрипку !
источник
Вот как можно использовать 2 простых свойства flex, чтобы центрировать n делителей на оси 2:
align-items: center
будет вертикально центрировать блокиjustify-content: space-around
распределит свободное горизонтальное пространство вокруг дивовисточник
Запустите этот фрагмент кода и увидите вертикально и горизонтально выровненный div.
источник
Самым простым и чистым решением для меня является использование свойства CSS3 «transform»:
источник
Первый ребенок будет выровнен по центру по вертикали и горизонтали
источник
центрировать Div на странице check the fiddle link
Обновление Другой вариант - использовать flex box check the fiddle link
источник
Ниже представлен подход Flex-box для получения желаемого результата.
источник
Другой подход заключается в использовании таблицы:
источник
Для вертикального и горизонтального центрирования элемента мы также можем использовать нижеуказанные свойства.
Это свойство CSS выравнивает элементы по вертикали и принимает следующие значения:
flex-start : элементы выравниваются по верху контейнера.
гибкий конец : элементы выровнены по дну контейнера.
центр : элементы выравниваются в вертикальном центре контейнера.
baseline : элементы отображаются на базовой линии контейнера.
растянуть : элементы растягиваются, чтобы соответствовать контейнеру.
Это CSS-свойство justify-content , которое выравнивает элементы по горизонтали и принимает следующие значения:
flex-start : элементы выравниваются по левой стороне контейнера.
гибкий конец : элементы выровнены по правой стороне контейнера.
центр : элементы выравниваются в центре контейнера.
space -ween : элементы отображаются с одинаковым интервалом между ними.
space -round : элементы отображаются с одинаковым интервалом вокруг них.
источник
Сетка css подход
источник
Необходимо следовать следующему новому и простому решению:
источник
источник
Просто сделайте сверху, снизу, слева и справа до 0.
источник
Вы можете добиться этого, используя CSS (ваш элемент
display:inline-grid
+grid-auto-flow: row;
) Grid и Flex Box (родительский элементdisplay:flex;
),Смотрите ниже фрагмент
источник
Ссылка на источник
Смотрите другие методы здесь
источник
Самый простой способ центрировать div как вертикально, так и горизонтально:
Еще один пример :
источник
Эта проблема связана с тем, что люди могут зайти на эту страницу при поиске: Когда я хочу центрировать div для ("100px квадрат)" ожидающего ... "анимированного GIF, я использую:
источник
Если вы предпочитаете это без :
flexbox / grid / table
или без :
vertical-align: middle
Ты можешь сделать:
HTML
CSS
источник
Это должно работать
источник
Просто ! Используйте display flex на контейнере и поле auto для текста !!!!
Демо: https://jsfiddle.net/ay95f08g/
Протестировано: Safari, Chrome, Firefox и Opera на MacOs в Мохаве. (все последние обновления 25 февраля 2019 г.)
источник
Многие должны были сделать то же самое. Вы можете использовать следующий метод для создания div в середине страницы.
ура!
источник
Самый простой
flexbox
подход:Самый простой способ центрировать отдельный элемент по вертикали и горизонтали - это сделать его гибким элементом и установить для его поля значение
auto
:Это расширение полей в каждом направлении будет толкать элемент точно к середине его контейнера.
источник