Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 08.09.2018
Сообщений: 11

Выравнивание блоков флексбоксом

17.03.2019, 05:20. Показов 1134. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Подскажите, как правильно выравнивать блоки вертикально?
Я задаю флекс-контейнеру flex-direction: column и justify-content: space-between/around, но почти в 100% случаев без дополнительных margin/padding результат выглядит сомнительно и далек от оригинала(макета).
А с дополнительными margin/padding верстка ведет себя непредсказуемым образом. По крайней мере у меня.

И до кучи вопрос по min-heigth/max-height. Когда лучше использовать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2019, 05:20
Ответы с готовыми решениями:

Выравнивание блоков
Есть сайт на вордпрессе. Почему-то блоки отображаются странно. Вот так выглядит как должно быть и так есть когда мало новостей: ...

Выравнивание блоков
В чем разница, при выравнивании блоков через display: inline-block; или через float: left; при использовании float...

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

10
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
17.03.2019, 06:14
Czo, [del] Используйте align-item.
0
1 / 1 / 0
Регистрация: 08.09.2018
Сообщений: 11
17.03.2019, 09:12  [ТС]
Если они в колонку будут, то align-item будет выравнивать колонку по-горизонтали. А мне нужно как-то вертикально это делать.
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
17.03.2019, 10:26
Czo, А почему Вы спецификацию не читаете? Разве это так сложно, пойти в гугле найти спецификацию и прочитать ее разок, что бы не задавать глупые вопросы или на ютубе уйма видео об этих флексах. А если Вам нужно будет что бы блоки находились в низу поперечной оси Вы тоже будете писать на форуме?
Приоткрою для Вас завесу и скажу что у свойства justify-content кроме этих двух свойств space-between/around есть еще и эти flex-start / flex-end / center / space-between / space-around и я думаю Вам не составит труда понять какой из них нужно применять.
Это на всякий случай, если Вы вдруг не поймете.
Кликните здесь для просмотра всего текста
flex-direction: column; justify-content: center;
0
1 / 1 / 0
Регистрация: 08.09.2018
Сообщений: 11
17.03.2019, 11:41  [ТС]
Приоткрою Вам завесу тайны: этот форум и существует для того чтобы новички могли задавать глупые вопросы. Если Вас это раздражает, то зачем Вы вообще здесь?

Про вышеупомянутые свойства justify-content я знаю, но мне их функционала НЕ ХВАТАЕТ, т.к. в макете, например, из ряда вертикальных блоков, одни блоки могут находиться почти впритык друг к другу, другие могут иметь приличный отступ и т.д.

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

Возможно, я изначально недостаточно полно изложил суть вопроса, но это не повод впадать в истерику.
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
17.03.2019, 12:09
Czo,
Цитата Сообщение от Czo Посмотреть сообщение
этот форум и существует для того чтобы новички могли задавать глупые вопросы
Да, но не на столько глупые что бы спрашивать: "как сделать блоки по центру если они стоят вертикально".
Цитата Сообщение от Czo Посмотреть сообщение
но мне их функционала НЕ ХВАТАЕТ

Цитата Сообщение от Czo Посмотреть сообщение
т.к. в макете, например, из ряда вертикальных блоков, одни блоки могут находиться почти впритык друг к другу, другие могут иметь приличный отступ и т.д
Это уже совсем другое решение, не то которое Вы описали изначально.
Сначала Вы спросили:
Цитата Сообщение от Czo Посмотреть сообщение
Подскажите, как правильно выравнивать блоки вертикально?
, Вам ответили, но Вам это не подошло, Вам нужно было другое
Цитата Сообщение от Czo Посмотреть сообщение
Если они в колонку будут, то align-item будет выравнивать колонку по-горизонтали. А мне нужно как-то вертикально это делать.
, а теперь Вы говорите
Цитата Сообщение от Czo Посмотреть сообщение
Возможно, я изначально недостаточно полно изложил суть вопроса
что изначально недостаточно полно изложили суть вопроса, вы серьёзно?
А потому спрашиваете почему у людей истерика?
По Вашему следующему ответу я понял что при flex-direction: column; Вам нужно расположить их по центру поперечной оси, вот я Вам и предложил решение, а теперь Вы говорите что
Цитата Сообщение от Czo Посмотреть сообщение
т.к. в макете, например, из ряда вертикальных блоков, одни блоки могут находиться почти впритык друг к другу, другие могут иметь приличный отступ и т.д
Так почему нельзя было сразу показать макет, что Вам нужно сделать и как Вы хотите это сделать.

Добавлено через 5 минут
Но что в итоге Вам нужно не понятно
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
17.03.2019, 12:18
Вот решение, которое Вы просили
HTML5
1
2
3
4
5
<div class="wrapper">
    <div class="block_1"></div>
    <div class="block_1"></div>
    <div class="block_1"></div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.wrapper {
    height: 800px;
    display: flex;
    justify-content: center;
    flex-direction: column;
 
}
 
.block_1 {
    width: 150px;
    height: 150px;
    margin: 10px;
    background-color: #987465;
}
Миниатюры
Выравнивание блоков флексбоксом  
0
1 / 1 / 0
Регистрация: 08.09.2018
Сообщений: 11
17.03.2019, 13:10  [ТС]
Не хочу спорить по каждому слову, которое я написал и на которое получил ответ. Это будет уже спор ради спора.
Так почему нельзя было сразу показать макет, что Вам нужно сделать и как Вы хотите это сделать.
Это было бы, конечно, проще, но я не знаю инструментов, как это сделать.
К примеру, как вы код копипастили выше, чтобы он так наглядно выгядел?
Или пикчу добавляли(мне вроде пока нельзя, до 20 сообщений правила запрещают).

Ну, вот почти конкретная ситуация из макета:
<sector>
<div class="flex-container">
<h2>about us</h2>
<p>lorem ipsum</p>
<div>какой-то блок</div>
</div>
</sector>

Задачи:
1)расположить блоки вертикально(делал через flex-direction: column)
2)отцентровать их по горизонтали(align-items:center)
3)отступы:
- внутренние отступы сверху и снизу контейнера: в макете 130px;
- h2 и p разделяется отступом: в макете 40px;
- p и нижележащий div разделяется отступом: в макете 130px;

Я не особо парился на тему pixel perfect, поэтому, чтобы создать отступы по верхнему/нижнему краю решил применить space-around на контейнер и посмотреть, что будет.
В этом случае, флекс раскидал всё равномерно, но h2 и p оказались слишком далеко друг от друга.
Я задал padding: 130px 0; для контейнера, обернул h2 и p в отдельный блок(чтобы сделать их одним флекс-элементом и "склеить") и применил space-between. Результат получился более-менее приемлимый, но "расклеивать" их пришлось дополнительным margin.
Кроме того, у меня почему-то возникали ошибки, если для контейнере указан min-height или max-height. Флекс почему-то вообще убирал вертикальные отступы и собирал блоки в кучу(визуально это выглядело, как justify-content: center или вроде того).
Зато с конкретной высотой(например, height:700px), флекс нормально растягивал блоки по контейнеру. Но меня терзают сомнения, не будет ли проблем с отображением, если, например, потребуется добавить еще несколько блоков в этот контейнер?

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

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

Надеюсь, максимально подробно изложил суть вопроса.
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
17.03.2019, 15:33
Czo,
Цитата Сообщение от Czo Посмотреть сообщение
К примеру, как вы код копипастили выше, чтобы он так наглядно выгядел?
Для этого есть специальные "форматирующие теги" (на скриншоте показал):
1. Вставляешь архивы, изображение и прочие файлы (там будет показан их список)
2. Выделение текста, пример: flex-direction: column;
3. Вставка ссылок
4. Смайлики
Сейчас посмотрю по Вашей проблеме.
Миниатюры
Выравнивание блоков флексбоксом  
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
17.03.2019, 15:44
Czo, По Вашему вопросу у меня получилось так: Code Pen
HTML5
1
2
3
4
5
6
7
<div class="wrapper">
  <div class="wrapper_block">
    <h2>ABOUT US</h2>
    <p>lorem ipsum</p>
    <div class="block">Какой-то блок</div>
  </div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
body {
    margin: 0;
    padding: 0;
}
 
.wrapper {
    display: flex;
    justify-content: center;
    border: 2px solid red;
    padding: 130px 0 130px 0;
}
 
.wrapper_block {
    text-align: center;
    border: 2px solid green;
}
 
.wrapper_block p {
    margin: 40px 0 130px 0;
}
Миниатюры
Выравнивание блоков флексбоксом  
1
1 / 1 / 0
Регистрация: 08.09.2018
Сообщений: 11
17.03.2019, 16:26  [ТС]
Ок, логику понял. И спасибо за терпение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2019, 16:26
Помогаю со студенческими работами здесь

Выравнивание блоков
Привет! Не могу выровнять блок с картинкой и блок с текстом при уменьшении окна браузера. Зелёный - картинка. Серый - текст. ...

Выравнивание блоков HTML
Есть блоки расположенные так: http://s1.********************/uploads/thumbs/2015/02/521d34d0bcb82b8f768e450bb8a41c5a.png у них display...

Выравнивание блоков текста
Как с помощью CSS можно сделать такое выравнивание:

Горизонтальное выравнивание блоков
Доброго времени суток, сверстал сайт блочной версткой, возникла проблема: два блока стоят рядом (float:left, right соответственно) не...

Выравнивание блоков с текстом
Нужно выровнять правую часть блоков с текстом... Что посоветуете?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru