Преобразование высоты дочернего элемента div при наведении на родительский элемент div

Я бы хотел transform height из моего .bar в 3px при зависании .wrapper, Я знаю, что должен использовать transition а также transform, но я понятия не имею, как transform мое дитя div наведите его родителя. На данный момент я transform только мой родитель div (понятно почему). Как transformheight моего ребенка, зависания моего родителя div (должен быть бар, идущий вверх / вниз на дне .wrapper)? Обратите внимание, что родительский элемент div не должен преобразовывать его размеры, просто дочерний элемент!

.wrapper {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  width: 200px;
  height: 100px;
  background-color: lightgreen;
  transition: all 1s ease-in-out;
}

.wrapper:hover {
  /*ON HOVER WRAPPER TRANSFORM HEIGHT OF BAR TO 3px*/
  transform: scale(2);
  cursor: pointer;
}

.bar {
  width: 100%;
  height: 0px;
  background-color: blue;
}

.bar:hover {}
<div class="wrapper">
  <div class="bar"></div>
</div>

2 ответа

Решение

Используйте дочерний селектор .wrapper:hover>.bar:

.wrapper {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  width: 200px;
  height: 100px;
  background-color: lightgreen;
  transition: all 1s ease-in-out;
}

.wrapper:hover {
  cursor: pointer;
}

.bar {
  width: 100%;
  height: 0px;
  background-color: blue;
  transition: height 200ms ease-in-out;
}

.wrapper:hover>.bar {
  height: 3px;
}
<div class="wrapper">
  <div class="bar"></div>
</div>

Используйте этот селектор CSS > чтобы сделать это,

.wrapper {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  width: 200px;
  height: 100px;
  background-color: lightgreen;
  transition: all 1s ease-in-out;
}


/*.wrapper:hover {
  transform: scale(2);
  cursor: pointer;
}*/

.bar {
  width: 100%;
  height: 0px;
  background-color: blue;
  transition: 0.6s ease;
}

.wrapper:hover > .bar {
  height: 10px;
}
<div class="wrapper">
  <div class="bar"></div>
</div>

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