Как расположить блоки, чтобы средний был по центру?

Имеем 3 блока разного размера, как расположить их так, чтобы средний был в центре, а остальные по бокам?
Писать justify-content: space-between подойдёт только для одинаковых боковых блоков.

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

Дополнительно:

А как в таком случае должны будут повести себя блоки, если их размеры составят
1: 10%
2: 15%
3: 50%
Второй никак не сможет расположиться в центре без наложения на третий.

  • ... и для наглядности рисунка не хватает
  • Сергей delphinpro, то есть невозможно?
  • Kolya112151, Возможно в определенных рамках, с соблюдением некоторых условий, но не универсально. Мы не знаем какого рода у вас блоки.
  • modelair, ну вот, например схематичная шапка сайта

    Как расположить блоки, чтобы средний был по центру?

  • Kolya112151, ну, в таком случае вам нужно отдельно позиционировать этот блок
  • Kolya112151, ну вот, это уже более определенно.
    Здесь мы видим меню, которое в теории может изменять свою ширину, если в админке добавят или скроют пункты. И есть логотип, ширина которого постоянна.
    Таким образом можно задать ширины блоков так

    Если на меньших экранах логотип нужно слегка уменьшить, то добавляем

  • Аналогичная тема и решения без абсолютов https://qna.habr.com/q/1088262
    Правда, тоже нужно думать о содержимом.
  • в общем-то вот.

    делаем блок на полную ширину с абсолютным позиционированием относительно родителя, выравниваем его содержимое с помощью justify-content. профит.

    https://codepen.io/modelair/pen/MWzwPwY

    • Ну да, как вариант, абсолютно позиционировать центральный блок. Спасибо, не сразу увидел ответ)
      А в прошлом вопросе нет ответа с решением. Разве что был один комментарий, который подтолкнул меня к решению, но комментарии нельзя отмечать решением, насколько я понял.
    • Kolya112151, нет, позиционируется его родитель:) н осмысл вы поняли

    Разобрался. Короче всё на изичах! Просто пишем flex-basis: 33.33% для каждого дочернего блока.
    Или если один из боковых блоков превышает 33%, то пишем боковым блокам больший процент.
    Например 40% 20% 40%. И в итоге получается всё адаптивно.

    • боковым блокам 100% напиши и не придётся думать вообще об их размерах
    • Можно просто боковым блокам flex: 1 задать, а центральный не трогать, не заморачиваясь с процентами.

     

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

     

      • Как расположить блоки, чтобы средний был по центру?Есть ответ
      • 08.04.2024
      Ответить

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

      Пример кода на HTML и CSS с использованием flexbox для центрирования блоков:

      В данном примере у нас есть контейнер с классом "container" и три блока с классом "block". С помощью свойства "display: flex;" у контейнера мы создаем гибкую модель для распределения элементов внутри. Свойство "justify-content: center;" центрирует блоки вдоль оси главной оси контейнера.

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

    Оставить комментарий