Делить ширину между несколькими элементами динамически? - PullRequest
0 голосов
/ 14 сентября 2018

Я хотел бы иметь поле в css, горизонтальное пространство которого используется несколькими элементами. Эти элементы должны всегда использовать 100% width этого элемента, если только они не столкнутся, и в этом случае они равномерно распределяют доступную ширину между всеми элементами.

В приведенном ниже примере показаны 2 элемента, которые совместно используют пространство в контейнере. Когда синий выходит за пределы высоты красного, оба должны растягиваться, чтобы снова использовать ширину 100%. В этом примере я использую flexbox, чтобы показать намерение использовать width: 100% в элементах. Но если есть решение, которое не использует flexbox, я был бы счастлив использовать это.

html, body {
  background: gray;
}

.col {
  width: 300px;
  height: 150px;
  background: lightgray;
  
  display: flex;
}

.col > div {
  width: 100%;
  height: 50px;
}

.a {
  background: red;
}

.b {
  position: relative;
  background: blue;
  
  top: 0px;
  
  animation: ani 2s infinite;
}

@keyframes ani {
  50% {
    top: 100px;
  }
}
<div class="col">
  <div class="a"></div>
  <div class="b"></div>
</div>

Мне интересно, есть ли решение для чистого CSS для этого.

1 Ответ

0 голосов
/ 14 сентября 2018

Не знаю, для какой цели вам нужно, чтобы это работало, но если у вас есть два элемента div, и вы хотите, чтобы оба элемента div равнялись 100%, когда второе значение div достигает 50px, то вам также следует использовать анимацию для контейнера. Я создал простой фрагмент ниже,Пожалуйста, дайте мне знать, если это работает для вас!

html, body {
  background: gray;
}

.col {
  width: 300px;
  height: 150px;
  background: lightgray;
  
  display: flex;
  flex-direction: row;
  animation: anicontainer 2s infinite;
}

.col > div {
  width: 100%;
  height: 50px;
}

.a {
  background: red;
}

.b {
  position: relative;
  background: blue;
  
  top: 0px;
  
  animation: ani 2s infinite;
}

@keyframes ani {
  50% {
    margin-top:-50px;
    top: 100px;
  }
}
@keyframes anicontainer {
  50% {
    flex-direction: column;
  }
}
<div class="col">
  <div class="a"></div>
  <div class="b"></div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...