Ячейка Flexbox не соответствует размеру содержащейся ячейки Flexbox

У меня есть макет страницы, в котором используется flexbox - например, ячейка / столбец содержимого и ячейка / столбец навигации. Внутри содержимого у меня есть таблица данных flexbox. Одна из ячеек / столбцов, если таблица имеет содержимое, которое может быть довольно широким, шире, чем сама ячейка, и у меня для overflow-x установлено значение auto, чтобы его можно было прокручивать по горизонтали.

Хотя такая прокрутка не идеальна, она случается нечасто, и я рад представить ее в таком виде.

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

Если я добавлю overflow: hidden в ячейку содержимого макета страницы, он будет корректно сжиматься, однако это останавливает работу position: sticky со строками в пределах flexbox таблицы содержимого.

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

Есть ли способ добиться «правильного» размера при встраивании в ячейку flexbox?

.pg_main {
  display: flex;
  flex-flow: row wrap;
}

.pg_content {
  flex: 1 0 20px;
}

.Row {
  display: flex;
  flex-flow: row wrap;
}

.Type {
  flex: 0 0 150px;
}

.Price {
  flex: 1 0 150px;
  white-space: nowrap;
  overflow-x: auto;
}

.Price div {
  display: inline-block;
  text-align: center;
  padding: 0 4px;
}
  <br/>
  <div class = "pg_main">
    <div class = "pg_content">
      <div class = "Row">
        <div class = "Type">Type</div>
        <div class = "Price">
          <div>100g<br/>$88.00</div>
          <div>200g<br/>$88.00</div>
          <div>300g<br/>$88.00</div>
          <div>400g<br/>$88.00</div>
          <div>500g<br/>$88.00</div>
          <div>600g<br/>$88.00</div>
          <div>700g<br/>$88.00</div>
          <div>800g<br/>$88.00</div>
          <div>900g<br/>$88.00</div>
          <div>1000g<br/>$88.00</div>
          <div>1100g<br/>$88.00</div>
          <div>1200g<br/>$88.00</div>
          <div>1300g<br/>$88.00</div>
          <div>1400g<br/>$88.00</div>
          <div>1500g<br/>$88.00</div>
          <div>1600g<br/>$88.00</div>
          <div>1700g<br/>$88.00</div>
          <div>1800g<br/>$88.00</div>
          <div>1900g<br/>$88.00</div>
          <div>2000g<br/>$88.00</div>
          <div>2100g<br/>$88.00</div>
          <div>2200g<br/>$88.00</div>
          <div>2300g<br/>$88.00</div>
          <div>2400g<br/>$88.00</div>
          <div>2500g<br/>$88.00</div>
          <div>2600g<br/>$88.00</div>
          <div>2700g<br/>$88.00</div>
          <div>2800g<br/>$88.00</div>
          <div>2900g<br/>$88.00</div>
        </div>
      </div>
    </div>
  </div>
  <br/>
  <br/>
  <br/>
  <div class = "Row">
    <div class = "Type">Type</div>
    <div class = "Price">
      <div>100g<br/>$88.00</div>
      <div>200g<br/>$88.00</div>
      <div>300g<br/>$88.00</div>
      <div>400g<br/>$88.00</div>
      <div>500g<br/>$88.00</div>
      <div>600g<br/>$88.00</div>
      <div>700g<br/>$88.00</div>
      <div>800g<br/>$88.00</div>
      <div>900g<br/>$88.00</div>
      <div>1000g<br/>$88.00</div>
      <div>1100g<br/>$88.00</div>
      <div>1200g<br/>$88.00</div>
      <div>1300g<br/>$88.00</div>
      <div>1400g<br/>$88.00</div>
      <div>1500g<br/>$88.00</div>
      <div>1600g<br/>$88.00</div>
      <div>1700g<br/>$88.00</div>
      <div>1800g<br/>$88.00</div>
      <div>1900g<br/>$88.00</div>
      <div>2000g<br/>$88.00</div>
      <div>2100g<br/>$88.00</div>
      <div>2200g<br/>$88.00</div>
      <div>2300g<br/>$88.00</div>
      <div>2400g<br/>$88.00</div>
      <div>2500g<br/>$88.00</div>
      <div>2600g<br/>$88.00</div>
      <div>2700g<br/>$88.00</div>
      <div>2800g<br/>$88.00</div>
      <div>2900g<br/>$88.00</div>
    </div>
  </div>
  <br/>

min-width: от 0 до .pg_content

Temani Afif 30.03.2021 03:20
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
1
12
0

Другие вопросы по теме

Как расширить текст без смещения окружающих элементов с помощью flexbox
Выровняйте элементы одинаково, используя CSS с разными родительскими элементами
Как я могу перевернуть все элементы флексбокса в CSS?
Как заставить расположенные рядом элементы div в гибком контейнере обертывать свое содержимое перед тем, как обернуть себя
Мои гибкие коробки неправильно выравниваются или перекрываются
4 элемента в строке, но с пустым местом, если элементов меньше 4?
Как центрировать содержимое навигации и обеспечить растягивание фона на всю ширину на больших экранах?
CSS Flexbox с компонентом, возвращающим TopBar и SideBar, и еще одним, возвращающим основной контент
Как синхронизировать наложенное изображение с основной формой круга?
Как я могу разделить содержимое <a> и <nav> в <header> моего HTML на левое и правое в одном родительском блоке с помощью CSS?