Как отцентрировать объект css
Перейти к содержимому

Как отцентрировать объект css

  • автор:

Центрирование в CSS: Полное руководство

Вещи, связанные с центрированием в CSS , это, пожалуй, олицетворение того, на что чаще всего жалуются пользователи. Это на самом деле должно быть так сложно? — иронично интересуются они.

Я думаю, что проблема заключается не в том, что центрирование трудно осуществить, а в том, что, в зависимости от ситуации, существует так много различных способов сделать это, что их трудно охватить все.

Поэтому давайте создадим дерево решений и, надеюсь, теперь этот вопрос станет для вас проще.
Мне нужно отцентрировать элементы.

Горизонтально

Это элементы inline или inline-* (например, текст или ссылки)?

Вы можете отцентрировать элементы inline горизонтально, в родительском элементе block-level с помощью:

.center-children < text-align: center;
 
Этот текст отцентрирован.

body < background: #f06d06; >header, nav < text-align: center; background: white; margin: 20px 0; padding: 10px; >nav a

Это будет работать для inline , inline-block , inline-table , inline-flex и т.д.

Это элемент уровня блока?

Вы можете отцентрировать элемент block-level , придав ему margin-left и margin-right или auto ( при этом также нужно задать width , в противном случае это будет полная ширина, и центрирование не потребуется ). Это часто делается в подобных сокращениях:

.center-me
body < background: #f06d06; >main < background: white; margin: 20px 0; padding: 10px; >.center

Это будет работать независимо от ширины элемента block-level или родительского элемента.
Обратите внимание, что вы не можете использовать привязку к центру float . Хотя, существует способ .

У вас есть более чем один элемент block-level?

Если у вас есть два или более элемента block-level , которые должны быть отцентрированы горизонтально в ряд, скорее всего вам лучше применить для них разные типы display . Вот примеры, как сделать из них inline-block и flexbox :

 
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд. Я содержу больше контента, чем другие элементы моего уровня.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд. Я содержу больше контента, чем другие элементы моего уровня.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд.

body < background: #f06d06; font-size: 80%; >main < background: white; margin: 20px 0; padding: 10px; >main div < background: black; color: white; padding: 15px; max-width: 125px; margin: 5px; >.inline-block-center < text-align: center; >.inline-block-center div < display: inline-block; text-align: left; >.flex-center

Если только вы не хотите расположить несколько элементов block-level друг над другом. В этом случае по-прежнему прекрасно работает техника автоматического отступа:

 
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд. Я содержу больше контента, чем другие элементы моего уровня.
Я элемент блочного типа, у меня есть другие элементы того же уровня, и все мы отцентрированы в ряд.

body < background: #f06d06; font-size: 80%; >main < background: white; margin: 20px 0; padding: 10px; >main div < background: black; margin: 0 auto; color: white; padding: 15px; margin: 5px auto; >main div:nth-child(1) < width: 200px; >main div:nth-child(2) < width: 400px; >main div:nth-child(3)

Вертикально

Вертикальное центрирование в CSS немного сложнее

Это элементы inline или inline-* ( например, текст или ссылки )?

Это одиночная строка?

Иногда линейные / текстовые элементы могут центрироваться по вертикали, просто потому, что отступ снизу и сверху равны:

.link

 
Мы Отцентрированные Фрагменты Текста

body < background: #f06d06; font-size: 80%; >main < background: white; margin: 20px 0; padding: 50px; >main a

Если отступ по некоторым причинам для вас это не вариант, и вы хотите отцентрировать текст, который не будет оборачивать, существует прием, аналогичный тому, что мы делали с line-height :

.center-text-trick

 
Я отцентрированная строка.

body < background: #f06d06; font-size: 80%; >main < background: white; margin: 20px 0; padding: 40px; >main div

Это несколько строк?

Аналогично отступ сверху и снизу может задать эффект центрирования для нескольких строк текста. Но иногда это не будет работать, если элемент текста представляет собой ячейку таблицы или для него с помощью CSS задано такое поведение. В этом случае применяется свойство vertical-align , в отличие от общих случаев выравнивания элементов:

 
Мы - отцентрированные по вертикали несколько строк текст в ячейке таблицы.
Мы - отцентрированные по вертикали несколько строк текста в созданной через CSS структуре таблицы.

body < background: #f06d06; font-size: 80%; >table < background: white; width: 240px; border-collapse: separate; margin: 20px; height: 250px; >table td < background: black; color: white; padding: 20px; border: 10px solid white; /* по умолчанию используется vertical-align: middle; */ >.center-table < display: table; height: 250px; background: white; width: 240px; margin: 20px; >.center-table p

Если выравнивание в формате таблицы неприменимо для вас, возможно, вы могли бы использовать flexbox ? Один дочерний элемент flex может легко быть отцентрирован внутри родительского элемента flex :

.flex-center-vertically

Мы - отцентрированные по вертикали несколько строк текста в контейнере flexbox.

body < background: #f06d06; font-size: 80%; >div < background: white; width: 240px; margin: 20px; >.flex-center < background: black; color: white; border: 10px solid white; display: flex; flex-direction: column; justify-content: center; height: 200px; resize: vertical; overflow: auto; >.flex-center p

Имейте в виду, что это актуально только для тех случаев, когда контейнер имеет фиксированную высоту ( в пикселях, процентах и т.д. ), поэтому для контейнера здесь задана высота.

Если оба этих метода неприменимы, вы могли бы использовать технику " призрачного элемента ", в которой внутри контейнера по всей высоте размещается псевдо-элемент и текст вертикально выравнивается с помощью этого элемента:

.ghost-center < position: relative; >.ghost-center::before < content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle; >.ghost-center p

Мы - отцентрированные по вертикали несколько строк текста в контейнере. Центрирование выполнено внутри псевдо элемента.

body < background: #f06d06; font-size: 80%; >div < background: white; width: 240px; height: 200px; margin: 20px; color: white; resize: vertical; overflow: auto; padding: 20px; >.ghost-center < position: relative; >.ghost-center::before < content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle; >.ghost-center p

Это элемент block-level?

Вы знаете высоту элемента?

Довольно часто вы можете не знать высоту в макете веб-страницы по многим причинам: если ширина изменяется, текст адаптивный и может изменять высоту. Высота текста может меняться в зависимости от различных применяемых к нему стилей.

Элементы с фиксированным соотношением сторон, например, изображения, могут изменять свою высоту при изменении ширины. И т.д.

Но если вы знаете высоту, вы можете выровнять элемент по центру следующим образом:

.parent < position: relative; >.child < position: absolute; top: 50%; height: 100px; margin-top: -50px; /* при вычислении отступа и границы не используется box-sizing: border-box; */ >

Как отцентрировать объект css

Преобразования CSS основаны на размере элементов, поэтому, если вы не знаете, насколько высокий или широкий ваш элемент, вы можете установить его на 50% сверху и слева от относительного контейнера и перевести его на 50% слева и вверх центрировать его вертикально и горизонтально.

Имейте в виду, что с помощью этой методики элемент может заканчиваться визуализацией на нецелой границе пикселя, что делает его размытым. См. Этот ответ в SO для обходного пути.

HTML

CSS

СОВМЕСТИМОСТЬ КРЕСТОВЫХ БРАУЗЕРОВ

Ниже приведено общее объявление преобразования для предыдущего примера:

Для получения дополнительной информации см. CanIuse .

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Использование Flexbox

HTML:

CSS:

HTML:

CSS:

См Динамическая горизонтального и вертикального центровку под Flexbox документации для получения более подробной информации о Flexbox и какие стили означают.

Поддержка браузера

Flexbox поддерживается всеми основными браузерами, за исключением версий IE до 10 .

Некоторые недавние версии браузера, такие как Safari 8 и IE10, требуют префиксов поставщиков .

Для быстрого создания префиксов существует инструмент Autoprefixer , сторонний инструмент.

Для старых браузеров (например, IE 8 и 9) доступен Polyfill .

Для более подробного просмотра поддержки браузера Flexbox см. Этот ответ .

Использование позиции: абсолютная

Работа в старых браузерах (IE> = 8)

Автоматические поля, в сочетании со значениями нуля для left и right или top и bottom смещений, будут центрировать абсолютно позиционированные элементы внутри своего родителя.

HTML

CSS

Элементы, которые не имеют своей собственной неявной ширины и высоты, как изображения, будут нуждаться в этих значениях.

Техника элемента призрак (взлома Михала Чернова)

Этот метод работает, даже когда размеры контейнера неизвестны.

Настройте элемент «призрак» внутри центрированного контейнера, который будет на 100% высотой, затем используйте vertical-align: middle как для элемента, так и для центрированного элемента.

CSS

HTML

Использование выравнивания текста

Наиболее распространенным и простым типом центрирования является текст строк в элементе. CSS имеет правило text-align: center для этой цели:

HTML

CSS

Это не работает для центрирования целых элементов блока . text-align управляет только выравниванием встроенного контента, такого как текст в его родительском блочном элементе.

Подробнее о text-align в разделе « Типография ».

Центрирование по отношению к другому элементу

Мы увидим, как центрировать контент в зависимости от высоты близкого элемента.

Совместимость: IE8 +, все другие современные браузеры.

HTML

CSS

Основными пунктами являются .thumb , .details и .position-container container:

В .position-container должен display: table .

.details должны иметь реальную ширину width: . и display: table-cell , vertical-align: middle .

.thumb должна иметь width: 100% если вы хотите, чтобы она заняла все оставшееся пространство, и на нее будет влиять ширина .details .

Изображение (если у вас есть изображение) внутри .thumb должно иметь width: 100% , но это не обязательно, если у вас есть правильные пропорции.

Вертикальное выравнивание с тремя строками кода

Используйте эти 3 строки для вертикального выравнивания практически всего. Просто убедитесь, что div / image, к которому вы применяете код, имеет родителя с высотой.

CSS

HTML

Вертикально выравнивать изображение внутри div

HTML

CSS

Горизонтальное и вертикальное центрирование с использованием таблицы

Можно легко центрировать дочерний элемент, используя свойство отображения table .

HTML

CSS

Используя calc ()

Функция calc () является частью нового синтаксиса в CSS3, в котором вы можете вычислить (математически), какой размер / позиция занимает ваш элемент, используя различные значения, такие как пиксели, проценты и т. Д. Примечание: — всякий раз, когда вы используете эту функцию , всегда занимайтесь пространством между двумя значениями calc(100% — 80px) .

CSS

HTML

Вертикально выровнять элементы динамической высоты

Применение css интуитивно не дает желаемых результатов, потому что

Для самой широкой поддержки браузера используется обходной путь со вспомогательными элементами:

HTML

CSS

Использование высоты линии

Вы также можете использовать line-height чтобы центрировать вертикально одну строку текста внутри контейнера:

CSS

Это довольно уродливо, но может быть полезно внутри элемента . Свойство line-height работает только тогда, когда текст, который будет центрирован, охватывает одну строку. Если текст переносится на несколько строк, результирующий вывод не будет центрирован.

Центрирование вертикально и горизонтально, не беспокоясь о высоте или ширине

Следующая методика позволяет добавить ваш контент в элемент HTML и центрировать его как по горизонтали, так и по вертикали, не беспокоясь о его высоте или ширине .

Внешний контейнер

Внутренний контейнер

Поле содержимого

демонстрация

HTML

CSS

Центрирование с фиксированным размером

Если размер вашего контента фиксирован, вы можете использовать абсолютное позиционирование до 50% с margin который уменьшает половину ширины и высоты вашего контента:

HTML

CSS

Горизонтальное центрирование с фиксированной шириной

Вы можете центрировать элемент горизонтально, даже если вы не знаете высоту содержимого:

HTML

CSS

Вертикальное центрирование с фиксированной высотой

Вы можете центрировать элемент по вертикали, если знаете высоту элемента:

HTML

CSS

Использование margin: 0 auto;

Объекты могут быть центрированы с использованием margin: 0 auto; если они являются блочными элементами и имеют определенную ширину.

Как отцентрировать объект css

Центрирование изображения с помощью JavaScript + CSS

centr-imgРассмотрим специфичный способ центрирования изображения в блоке с использованием javascript + css. Он может показаться большим костылем, однако он работает во всех браузерах, включая IE6.
О том, что нужно сделать. Имеется некий блок div, заранее определенных размеров (в нашем примере квадрат со сторонами по 220 пикс), в этом блоке должно отображаться отцентрированное изображение. Стоит обратить внимание на то, что размер исходного изображения может быть в пределах размера блока, либо меньше. С лева показана иллюстрация блока с указанием размеров.
pic11В примере воспользуемся изображением размерами меньше блока, и выставим его по центру. В качестве данных у нас есть размеры блока (220 x 220px). Размеры картинки мы будем определять посредством javascript, после её загрузки. Суть алгоритма проста: вычисляем разницу между размерами блока и изображения, затем определяем количество пикселей для отступа с лева и сверху.

pic1.jpg

boxWidth (ширина) и boxHeight (высота) — этим переменным необходимо задать значение размера блока, в котором показывается изображение, в данном примере они равны 220 пикселям.
После того как код javascript отработает, изображение получит отступы посредством margin-top и margin-left. В итоге отступ сверху — 49 пикселей, с лева – 30 пикселей. Как получилось отцентрировать картинку в блоке можно увидеть в иллюстрации с лева.
Заключение. Данный метод центрирования изображения в блоке довольно необычный, и не сложный по своей сути, он может подойти для позиционирования изображений, в каких либо галереях, каталоге товаров и т.п. Разумеется, существует множество различных иных способов центрирования изображения, использовать его или нет решать вам.
Пример

Похожие публикации:

  1. Как поставить две картинки рядом в css
  2. Как поставить текст снизу css
  3. Как при наведении на картинку заменить ее на другую картинку css
  4. Как прижать кнопку к низу блока css

Как отцентрировать текст?

Мне нужно отцентрировать текст таким образом введите сюда описание изображения Вроде бы ничего сложного, но у меня текст по непонятным причинам перемещается на вторую строку. введите сюда описание изображения Текст был помещен в блок, которому были заданы высота и ширина. Затем он был отцентрирован внутри блока ( text-align: center ) и внутри родителя ( margin: 0 auto ).

body < background: pink; >* < margin: 0; padding: 0; font-size: 20px; >.groups_line < margin: 0 auto; width: 1565px; padding-right: 40px; padding-left: 40px; display: flex; >.line < width: 519px; min-height: 319px; height: fit-content; margin-right: 4px; position: relative; background: #63313a; >.line:last-child < margin-right: 0px; >.first_group < background-image: url(img/[email protected]); > .second_group < background-image: url(img/kaboompics.com_Woman_preparing_a_lunch_on_the_kitchen_table.png); >.third_group < background-image: url(img/photo-1453822858805-7c095c06011e.png); >.border < position: absolute; width: 466px; height: fit-content; border: 3px solid #b59f5b; top: 170px; left: 50%; transform: translate(-50%); >.border > .heading < color: #b59f5b; font-family: "Open Sans"; font-size: 14px; font-weight: 700; padding-top: 23px; padding-bottom: 16px; text-transform: uppercase; text-align: center; font-family: "Josefin Sans", sans-serif; >.text < color: #ffffff; font-family: "Josefin Sans"; font-size: 20px; font-weight: 550; text-transform: uppercase; text-align: center; width: 353px; margin: 0 auto; font-family: "Josefin Sans", sans-serif; >.parent_data < display: flex; padding-left: 15px; padding-right: 15px; padding-bottom: 10px; justify-content: space-between; >.data < color: #ffffff; font-family: "Open Sans"; font-size: 12px; font-weight: 300; position: absolute; left: 0; bottom: 0; line-height: 40px; margin: 0 7px; >.number < color: #ffffff; font-family: "Open Sans"; font-size: 12px; font-weight: 300; line-height: 40px; >.fa-comment < margin: 0 7px; color: #b59f5b; >.comment_logo < display: flex; align-items: center; position: absolute; bottom: 0; right: 0; >> .comment_logo

 

beauty health lifestyle

FROM GRAPEFRUIT TO LEMONS TO ORANGES, CITRUS DOES YOU GOOD!

June 14, 2015

24

health

5 Tips To Supercharge Your Motivation

June 14, 2015

24

Beauty

To Keep Makeup Looking Fresh Take A Powder

June 14, 2015

24

codepen В чем может быть ошибка?

Как в CSS выровнять текст по центру?

Используйте стилевое свойство text-align со значением center, добавляя его к абзацу (селектору P) или к определенному слою (пример 1). Результат примера показан на рис. 1. В данном примере текст внутри слоя с именем text выравнивается по центру веб-страницы.

Как выровнять текст в CSS?

  1. left — выравнивание по левому краю;
  2. right — по правому краю;
  3. center — по центру;
  4. justify — по ширине.

Как в CSS отцентрировать текст по блоку?

Для горизонтального центрирования: text-align: center – центрирует инлайн-элементы в блоке. margin: 0 auto – центрирует блок внутри родителя.

Как выровнять текст по вертикали в CSS?

  1. padding или margin.
  2. line-height = height.
  3. Вертикальное выравнивание иконок и смайликов
  4. display: table-cell; и vertical-align: middle;
  5. vertical-align и :before.
  6. position: absolute; (или position: fixed;) и картинки

Как выровнять текст по ширине CSS?

Для выравнивания текста в блоке, например абзаце, применяется стилевое свойство text-align. Его значение justify и устанавливает выравнивание текста по ширине, т. е. сразу по левому и правому краю текстового блока (пример 1).

Как переместить текст вниз в CSS?

Если вы хотите переместить текст вниз, используйте padding-top. line-height может работать в зависимости от вашей ситуации. Проблема с высотой строки может быть, если у вас есть фоновый цвет, а затем он также будет расширяться.

Как отцентрировать текст HTML?

  1. Использование тегов
  2. Центрировать этот текст!
  3. Центрировать этот текст!

Как центрировать объект в CSS?

  1. Сделайте контейнер относительно позиционированным (position: relative), что превратит его в контейнер для абсолютно позиционированных элементов.
  2. Сам элемент сделайте абсолютно позиционированным (position: absolute).
  3. Поместите элемент посередине контейнера с помощью 'top: 50%'.

Как центрировать div?

Для центрирования по горизонтали Вам необходимо задать ширину, а также значение auto для левого и правого отступа (тут мы используем сокращенную запись CSS). Этот способ работает с блочными элементами (div, p, h1, прочее. ).

Как выровнять текст или блок div по вертикали CSS?

Для вертикального выравнивания текста лучше использовать вертикальные отступы или свойство line-height . Для абсолютно позиционированных элементов с известной высотой (например, иконок) идеально подойдет способ с отрицательным свойством margin-top .

Как центрировать текст по вертикали?

Данный метод работает, когда вы хотите центрировать вертикально одну строчку текста. Все что нужно сделать - это задать высоту строки больше, чем размер шрифта. По умолчанию свободное пространство будет распределено равномерно сверху и снизу текста. И строка будет отцентрирована вертикально.

Как сделать вертикальную прокрутку CSS?

Принудительная установка прокрутки в блоке CSS

Можно также принудительно создать прокрутку по высоте и ширине. Для этого каждой оси: overflow-y: scroll; (вертикаль) overflow-x: scroll; (горизонталь) укажем параметр scroll, принудительная прокрутка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *