Как сделать фигуру по центру в css
Перейти к содержимому

Как сделать фигуру по центру в css

  • автор:

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

Нужно, расположить блок по центру (bootstrap4) как это показано в макете. Не понимаю как это сделать, уже час с этим мучаюсь. как сделано у меня: моё как должно быть по макету: макет

* < margin: 0; color: #ffffff; >button, button:active, button:focus < outline: none; >.home < height: 670px; background-size: cover; background-image: url("../img/first-bg1.png"); background-repeat: no-repeat; padding-top: 10px; >.home .nav__links a < color: #ffffff; text-decoration: none; font-family: 'Roboto', sans-serif; text-transform: uppercase; font-weight: 600; font-size: 12px; padding-left: 20px; >.home p < font-family: 'Roboto', sans-serif; font-weight: 300; font-size: 15px; line-height: 20px; >.home hr < width: 50px; margin: 25px auto; color: #00e0d0; >.home h2 < text-transform: capitalize; font-family: 'Playfair Display', serif; font-size: 30px; text-align: center; >.home .nav__links a:hover < color: #00e0d0; >.home .learnMore
       Главная страница     

we are awesome creative agency


This is Photoshop`s version of Lorem Ipsum. Proin gravida nibh vel velit autctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor nisi elit consequat ipsum, nec sagittis sem nibh id elit. Duis sed odio amet nibh vulputate cursus a sit amet mauris. Morbi accumsan ipsum velit.

CSS — Выравнивание по центру

В CSS некоторые на первый взгляд простые вещи оказывается не так-то просто выполнить. Одной из таких вещей, является выравнивание, т.е. когда один элемент необходимо расположить определённым образом относительного другого.

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

Примечание: под каждым решением приведен список браузеров с указанием версий, в которых указанный CSS код работает.

CSS - Выравнивание по центру

CSS — Выравнивание блока по центру

1. Выравнивание одного блока по центру другого. При этом первый и второй блок имеют динамические размеры.

.parent { position: relative; } .child { position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); -o-transform: translate(-50%, -50%); transform: translate(-50%, -50%); }

Браузеры, которые поддерживают данное решение:

  • Chrome 4.0+
  • Firefox 3.6+
  • Internet Explorer 9+
  • Opera 10.5+
  • Safari 3.1+

2. Выравнивание одного блока по центру другого. При этом второй блок имеет фиксированные размеры.

.parent { position: relative; } .child { position: absolute; left: 50%; top: 50%; /* ширина и высота 2 блока */ width: 500px; height: 250px; /* Значения определяются в зависимости от его размера */ /* margin-left = - width / 2 */ margin-left: -250px; /* margin-top = - height / 2 */ margin-top: -125px; }

Браузеры, которые поддерживают данное решение:

  • Chrome 1.0+
  • Firefox 1.0+
  • Internet Explorer 4.0+
  • Opera 7.0+
  • Safari 1.0+

3. Выравнивание одного блока по центру другого. При этом второй блок имеет размеры, заданные в процентах.

.parent { position: relative; } .child { position: absolute; /* ширина и высота 2 блока в % */ height: 50%; width: 50%; /* Значения определяются в зависимости от его размера в % */ left: 25%; /* (100% - width) / 2 */ top: 25%; /* (100% - height) / 2 */ }

Браузеры, которые поддерживают данное решение:

  • Chrome 1.0+
  • Firefox 1.0+
  • Internet Explorer 4.0+
  • Opera 7.0+
  • Safari 1.0+

CSS — Выравнивание по горизонтали

1. Выравнивание одного блочного элемента ( display: block ) относительно другого (в котором он расположен) по горизонтали:

.block { margin-left: auto; margin-right: auto; }

Браузеры, которые поддерживают данное решение:

  • Chrome 1.0+
  • Firefox 1.0+
  • Internet Explorer 6.0+
  • Opera 3.5+
  • Safari 1.0+

2. Выравнивание строчного ( display: inline ) или строчно-блочного ( display: inline-block ) элемента по горизонтали:

.parent { text-align: center; } .child { display: inline-block; }

Браузеры, которые поддерживают данное решение:

  • Chrome 1.0+
  • Firefox 3.0+
  • Internet Explorer 8.0+
  • Opera 7.0+
  • Safari 1.0+

CSS — Выравнивание по вертикали

1. Отцентровать один элемент ( display: inline , display: inline-block ) относительно другого (в котором он расположен) по центру. Родительский блок в этом примере имеет фиксированную высоту, которая задаётся с помощью свойства CSS line-height .

.parent { line-height: 500px; } .child { display: inline-block; vertical-align: middle; }

Браузеры, которые поддерживают данное решение:

  • Chrome 1.0+
  • Firefox 3.0+
  • Internet Explorer 8.0+
  • Opera 7.0+
  • Safari 1.0+

2. Центрирования одного блока относительно другого по вертикали посредством представления родителя как таблицы, а ребёнка как ячейки этой таблицы.

.parent { display: table; } .child { display: table-cell; vertical-align: middle; }

Браузеры, которые поддерживают данное решение:

  • Chrome 1.0+
  • Firefox 1.0+
  • Internet Explorer 8.0+
  • Opera 7.5+
  • Safari 1.0+

Если Вы знаете какие-нибудь другие интересные хитрости или полезные готовые решения по выравниванию, то поделитесь ими в комментариях.

Если статья понравилась, то поделитесь ей в социальных сетях:

Комментарии: 10

18.12.2020, 10:18

Возникла у меня тут задачка, казалось-бы простая — сделать кастомный нумерованный список, с большими цифрами-буллетами, и примыкающим к ним многострочными item’ами, отцентрованными по вертикали относительно буллетов.
Ну дизайнер так надизайнил, а че — красиво ведь…

Вобщем все известные трюки не сработали, и в результате родил новый.
На флексах.

А вдруг, кому-либо пригодится…
А может, кто-нибудь более грамотный что-либо оптимизирует… 😉

CSS — разместить объект точно по центру блока

Перевод небольшой статьи с замечательного сайта для веб-дизайнеров CSS-Tricks.

Статья посвящена одному интересному моменту — как правильно точно отцентрировать один объект с фиксированными размерами внутри другого. В принципе ничего сложного (и большого секрета) в этом нет, но статья мне понравилась, поэтому решил перевести и разместить у себя. Особенно хороши картинки — глядя на них, можно и текст не писать — все наглядно понятно. Далее — вольный перевод статьи Криса Койера:

На днях мне потребовалось создать страницу-заглушку для сайта. Мне необходимо было разместить изображение логотипа точно по центру экрана, а именно — отцентрированную по вертикали и горизонтали. Немного подумав, я задал для изображения класс centered и прописал для него правила:

В результате изображение разместиться точно по центру экрана:

Mangling Angular

Angular Builder поддерживает параметры среды:- NG_BUILD_MANGLE- NG_BUILD_MINIFY- NG_BUILD_BEAUTIFYМожно установить их при запуске скрипта. … Continue reading

Вертикальное и горизонтальное центрирование всего и вся в CSS Flexbox

В этой статье будет рассмотрен очень важный момент при вёрстке любого шаблона, а именно центрирование элементов. В Flexbox это стало гораздо проще и стабильнее.

Эта статья одна из завершающих из цикла переводов про CSS Flexbox. Скоро все они будут скомпонованы в один большой, понятный и объёмный гайд по изучению CSS Flexbox.

��Мой Твиттер — там много из мира фронтенда, да и вообще поговорим��. Подписывайтесь, будет интересно: ) ✈️

В примерах с навигацией используется пример кода отсюда.

Разочаровались в попытках использования CSS для выравнивания по центру с div ’ами, изображениями и текстом?

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

К сожалению, во флотах нет опции center , только left и right . Ну и конечно же там нет опции vertical-center .

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

Вообще, во Flexbox стало очень легко отцентровывать текст, изображения и div ’ы. Но это не означает того, что это единственный способ центрировать контент.

Вы наверное делали как я и искали на пространствах сети лучшие способы горизонтальной и вертикальной центровки в HTML.

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

Как отцентровать текст в CSS с помощью text-align

Если вам нужно отцентровать текст c CSS внутри элемента, например div ’а, заголовка или параграфа, вы можете смело использовать свойство text-align .

Выставление text-align на center является самым распространенным способом горизонтального выравнивания текста с помощью CSS. Этот подход не ограничивается только текстом, он может использоваться для центровки почти всех элементов потомков, которые меньше родительского контейнера.

Вот три вещи, которые нужно обязательно знать правильного использования text-align , чтобы горизонтально отцентровать текст или элементы потомки.

Текст или элемент центрирования должен быть обёрнут или находится в родительском элементе, который самой собой шире.

Родительский элемент должен иметь text-align: center .

Если вы центрируете элемент, то его свойство display должно быть с inline-block .

Если у вас несколько дочерних элементов, то они все дружно будут отцентрированы внутри родительского контейнера.

text-align имеет несколько свойств:

center : текст отцентрован.

left : текст выровнен по левой стороне контейнера.

right : текст выровнен по правой стороне контейнера.

justify : текст выстраивается ровно по левой и правой граням контейнера, за исключением последней строки.

justify-all : выравнивает последнюю строку.

start : тоже самое, что и left , если написание идёт слева направо. Но будет right , если написание справа налево.

end : start, только наоборот.

match-parent : тоже, что и inherit , но только start и end высчитываются с учетом родительского элемента.

Используйте эти свойства для выравнивания текста внутри родительского элемента или div ’а врапера. Тут всё обыденно и просто.

Выравниваем элементы горизонтально с text-align

Вы можете смело использовать свойство text-align , чтобы выравнивать элементы потомки.

Хороший пример — центровка панели навигации. Это может показаться тягомотиной, так как ширина каждого элемента меню зависит от его текста.

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

Вы можете применить text-align: center для врапера панели навигации. А внешний “родительский” элемент, то есть ul , должен быть с dispay: inline-block .

.navbar text-align:center; 
width: 100%;
>
.navbar ul display:inline-block;
>
.navbar li float:left;
>
.navbar li + li margin-left:20px;
>

Ну, а чтобы элементы меню выглядели выровненными, поставим им float: left .

И теперь у вас горизонтально выровненное меню.

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

В наше время у нас уже есть кое-что получше, а именно CSS Flexbox.

CSS Flexbox

Flexbox был добавлен в стандарты CSS несколько лет назад, в основном для того, чтобы разобраться с распределением места и выравниванием элементов. По сути, это синтаксис одномерной раскладки.

А в купе с более новым CSS Grid, веб-разработчики получают куда более мощный инструмент для разработки сложных шаблонов, которые в последствии будет куда проще поддерживать.

Мы говорим, что это одномерный контроль раскладки, но на самом деле у него есть оси x и y. Как вы увидите далее, выравнивание в каждом случае будет происходить с разными свойствами.

Flexbox уже поддерживается всеми современными браузерами, включая даже Internet Explorer, который скоро прикроют. В общем, вы можете смело и уверенно использовать Flexbox в вашем CSS.

Центрируем текст горизонтально и вертикально, используя CSS для выравнивания по центру

Центрирование текста по абсолютному центру традиционно было было одной из самых распространенных проблем с костыльными решениями, которые решил Flexbox. В прошлом было неимоверно много хаков и костылей, таких как использование display: table и т.п. Как я и упоминал ранее, Flexbox сделал этот сложный и неестественный процесс куда более проще.

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

How to Center

Anything with HTML & CSS


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

или . Вообще очень крутая штука в CSS Flexbox в том, что его инструментарий может центрировать вертикально и горизонтально буквально всё, что только можно!

.text-example display: flex; 
align-items: center;
justify-content: center;
flex-direction: column;
width: 100%;
text-align: center;
margin: 10% 0;
min-height: 200px;
background-color: rgba(33, 33, 33, .3);
align-items: center;
>

Тут div будет занимать всю доступную ширину и будет минимум в 200px высотой. Это даст нам вертикальные маргины для использования в этом примере.

Вся магия произойдет тогда, когда вы выставите display на flex . Когда display стоит на flex , вы можете использовать дополнительные flexbox свойства для управления уже самим макетом.

align-items и justify-content это важные свойства для абсолютного центрирования текста горизонтально и вертикально. Горизонтальное центрирование происходит с помощью justify-content , а вертикальное с align-items .

align-items может использоваться не только для центровки текста вертикально, но и любого дочернего элемента.

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

Горизонтальное центрирование div’ов с использованием CSS Flexbox

Flexbox делает центровку элементов простым и естественным процессом.

Поставьте родительскому элементу .navbar display:flex; . Выставите ширину, в этом примере я хочу, чтобы панель навигации растянулась по всему вьюпорту, то есть на 100%.

Чтобы выставить по центру дочерние элементы, поставьте justify-content: center для элемента родителя.

.navbar display: flex; 
justify-content: center;
width: 100%;
>

Чтобы сделать CSS более юзабельным, я разбил стили по разным селекторам:

.flex display: flex; 
>

.flex-horizontal-center justify-content: center;
>

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

Вертикальное центрирование div’ов с CSS Flexbox

Горизонтальное центрирование никогда не было самым сложным моментом.

Но что у нас с вертикальным центрированием? Ну или как бы мы применили CSS, что вертикально выровнять элементы?

Во многих случаях, это тот момент, при котором большинство разработчиков рвут на себе волосы.

Тут столько правил и костылей, которые нужно запомнить, а ведь всё равно что-нибудь да порушит всю раскладку.

Flexbox наконец-то исправил проблемы с вертикальным центрированием, выдав эту кейсу четкое и понятное правило для применения.

Как и с justify-content: center , которое выстраивает элементы потомки по центру оси x, flexbox align-items: center делает это по оси y.

.flex-vertical-center align-items: center; 
>

В примере с меню в хедере, враппер навигационной панели отцентрирован вертикально.

Тут элемент хедер служит родителем для навигационной панели, и его ширина равна 100%, а min-height стоит на 80px.

Так как навигационная панель сама по себе меньше, чем 80px, то тут есть пустое место, с которым мы можем поиграться. Так мы можем сделать навигацию равноудаленной от вершины до низа хедера, добавив ему display: flex и align-items: center .

Абсолютное центрирование div’ов с использованием CSS Flexbox

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

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

Всё, что вам для этого нужно сделать, это добавить как justify-content: center и align-items: center , ну и flex-direction: column в css для .

.flex-center align-items: center; 
justify-content: center;
flex-direction: column;
>

Вы можете применять эту комбинацию flexbox свойств для центровки любого элемента, а не только navbar . Изображения, div ’ы и т.п. Все они могут быть также абсолютно отцентрированы внутри родительского элемента.

Можете посмотреть на то, как я применил этот принцип на полноэкранном фоновом изображении.

Как отцентровать изображение в CSS с помощью text-align и Flexbox

Вообще, изображения могут быть выровнены с использованием свойств text-align и flexbox.

Вы можете применить text-align для элемента родителя изображения с right , left и center возможностями выравнивания.

.image-example width: 60vw; 
min-width: 360px;
text-align: center;
margin: 5% auto;
background-color: #ccc;
>

Вы также можете применить флоат слева или cправа, для размещения изображения у желаемой грани контейнера. Я склонен к тому, чтобы использовать флоат, так как обычно я выравниваю изображения внутри текста статьи.

Но тут всё ещё довольно проблематично сделать выравнивание без flexbox. Если вы примените абсолютное центрирование из флексов для контейнера изображения, то вы смело можете выставить картинку по центру обеих осей, ну или только одной, тут уже на ваш выбор.

Просто ради забавы, давайте выровняем изображение с использованием flexbox.

Те же самые правила, что и в примере выше.

Делаем родительский элемент display: flex , он должен быть больше или равным изображению по размерам, align-items и justify-content должны иметь center, а flex-direction выставлен на column .

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

Заключение

Контроль элементов и позиционирования текста это важнейший аспект при хорошей вёрстке.

В былые времена, центрирование и выравнивание элементов были нудным делом и требовали комбинации из разных костылей.

CSS Flexbox поменял подход к выравниваю элементов. И теперь горизонтальное центрирование, также как и вертикальное стали очень простыми.

А комбинирование свойств позиционриования из Flexbox c text-align , может сделать ваши шаблоны куда привлекательнее без громоздких костылей.

Исходный код доступен на GitHub!

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

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