Как использовать переполнение с flex-grow

У меня есть этот код:

html,
body,
#container {
  width: 100%;
  height: 100%;
}

#container {
  display: flex;
  background: #ddd;
}

#width {
  width: 200px;
  height: 100%;
  resize: horizontal;
  overflow: hidden;
  background: #eee;
}

#remaining {
  flex-grow: 1;
  overflow: scroll;
}

#resize {
  width: 200px;
  height: 200px;
  resize: both;
  overflow: hidden;
  background: #ccc;
}
<!DOCTYPE html>
<html>

<body>
  <div id = "container">
    <div id = "width">Width</div>
    <div id = "remaining">
      <div id = "resize">Resize</div>
    </div>
  </div>
</body>

</html>

Вот что я пытаюсь сделать:

  • Вы можете изменить размер #width
  • Вы можете изменить размер #resize

Проблема в том, что когда я изменяю размер #resize, #width сжимается, чтобы освободить для него место. Что я ищу, так это когда я изменяю размер, #remaining показывает полосу прокрутки и больше ничего не изменяет.

Я считаю, что это происходит потому, что #remaining не имеет свойства width, а вместо него flex-grow. И поэтому он позволяет изменять ширину, потому что у него нет заданной ширины.

Я ищу чистый ответ HTML/CSS, но JavaScript тоже подойдет. (конечно, если он надежен, не сломается и не сильно замедлит выполнение с использованием таких методов, как setInterval)

Я также хочу сказать, что я использую гибкий макет на #containerТолько, чтобы заставить #remaining занимать все оставшееся пространство, и если display: flex удалить, он все равно будет работать с полным кодом, который у меня есть.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы откажетесь от flex:grow и вместо этого рассчитаете ширину remaining в css, это сработает.

.remaining{
   width: calc(100% - 200px);
   overflow-x: auto;
}

С рабочий пример

Это сработало во фрагменте, который я предоставил, но не в моем полном примере. Но спасибо!

Some guy 14.05.2022 16:56

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