Заполните 100% ширину гибкого контейнера с прокруткой - PullRequest
1 голос
/ 17 июня 2019

У меня есть горизонтально прокручиваемый элемент (с overflow-x:scroll) с гибкими контейнерами, которые содержат гибкие элементы.Я пытаюсь применить фон к гибким контейнерам.

Но, как вы можете видеть в примере ниже (попробуйте прокрутить влево / вправо), фон применяется только к видимой части области просмотра (оранжевый).Есть ли способ расширить его до полной ширины, не окрашивая каждый .item?

.list-container {
  width: 100%;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  background: tomato;
  margin-bottom: 10px;
}
.item {
  flex: 0 0 100px;
  height: 100px;
  margin-right: 10px;
  background-color: skyblue;
  opacity: 0.6;
}
.crop-container {
  width: 300px;
  overflow-x: scroll;
}

.item:first-child {
  margin-left: 10px;
}
.item:last-child {
  margin-right: 10px;
}
<div class='crop-container'>
  <div class='list-container'>
    <div class='item'></div>        
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
  </div>
  <div class='list-container'>
    <div class='item'></div>        
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
  </div>
</div>

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

Вот обновленный код с комментариями:

.list-container {
  /* width:100% Removed to allow element to expand */
  display: inline-flex; /* inline to fit content width */
  /*flex-direction: row;
  flex-wrap: nowrap;  Not needed since it the default behavior */
  background: tomato;
  margin-bottom: 10px;
}
.item {
  width: 100px;  /* Width instead of flex-basis */
  flex-shrink:0; /* Avoid the shrinking*/
  height: 100px;
  margin-right: 10px;
  background-color: skyblue;
  opacity: 0.6;
}
.crop-container {
  width: 300px;
  overflow-x: scroll;
  display: flex;
  flex-direction: column;
  align-items:flex-start; /* Change default alignement to avoid the stretch effect*/
}

.item:first-child {
  margin-left: 10px;
}
/*.item:last-child {
  margin-right: 10px;
} Not needed since all the elements already have margin-right */
<div class='crop-container'>
  <div class='list-container'>
    <div class='item'></div>        
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
  </div>
  <div class='list-container'>
    <div class='item'></div>        
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
  </div>
</div>
0 голосов
/ 17 июня 2019

Добавить overflow-y: hidden к .list-container

.list-container {
  width: 100%;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  background: tomato;
  margin-bottom: 10px;
  overflow-y: hidden;
}
.item {
  flex: 0 0 100px;
  height: 100px;
  margin-right: 10px;
  background-color: skyblue;
  opacity: 0.6;
}
.crop-container {
  width: 300px;
  /*overflow-x: scroll; */ /*You can get rid of it*/
  
}

.item:first-child {
  margin-left: 10px;
}
.item:last-child {
  margin-right: 10px;
}
<div class='crop-container'>
  <div class='list-container'>
    <div class='item'></div>        
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
  </div>
  <div class='list-container'>
    <div class='item'></div>        
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
  </div>
</div>

Надеюсь, это поможет.Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...