Как лучше растянуть вложенный блок внутри других блоков на максимальную длину, но не более чем на ширину страницы?

Ссылка скопирована
1 ответ

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

По вводным: задаю блоку display: flex — он растягивается, но и растягиваются и блоки выше.
По вводным: с position absolute внутри relative растягивается, но если контента много, то появляется скролл и header как бы обрезается - контент в блоке выходит за пределы страницы...

Подскажите, решение.
По вводным: пример визуальный прилагаю:https://codepen.io/weranda/pen/OPNxZwx?editors=1100
69207c97227fc902183874.png

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Frontend-редакция Ответ

Чтобы вложенный блок растягивался на доступную ширину, но не вылезал за пределы страницы, обычно достаточно правильно использовать width: 100%, max-width: 100% и убрать фиксированные ширины у внутренних элементов. Если блок находится внутри flex/grid, важен ещё min-width: 0.

Базовый вариант:

.parent {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 16px;
}
 
.child {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.parent { max-width: 1200px; margin: 0 auto; padding: 0 16px; } .child { width: 100%; max-width: 100%; box-sizing: border-box; }

Если внутри flex:

.row {
  display: flex;
}
 
.content {
  flex: 1 1 auto;
  min-width: 0;
}

.row { display: flex; } .content { flex: 1 1 auto; min-width: 0; }

min-width: 0 часто решает проблему, когда вложенный блок или текст растягивает flex-контейнер шире экрана. Без него flex item может не сжиматься меньше содержимого.

Для изображений, таблиц и pre/code добавьте ограничения:

img, video, iframe {
  max-width: 100%;
  height: auto;
}
 
pre, table {
  max-width: 100%;
  overflow-x: auto;
}

img, video, iframe { max-width: 100%; height: auto; } pre, table { max-width: 100%; overflow-x: auto; }

Не используйте width: 100vw внутри обычного контейнера без необходимости. 100vw учитывает ширину viewport и может добавить горизонтальный скролл из-за scrollbar или padding родителя. Если нужно “на всю ширину экрана” из центра контейнера — это отдельный full-bleed приём.

Итог: для обычной адаптивной ширины используйте width: 100%, max-width: 100%, box-sizing: border-box и min-width: 0 в flex/grid. Горизонтальный скролл почти всегда появляется из-за фиксированной ширины, длинного слова, таблицы, pre или 100vw.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно