Почитайте про дочерние и контекстные селекторы htmlbook.ru/samcss/kontekstnye-selektory и т.д.
.flex-item:hover .discount {стили для discount при наведении на родителя}
p.s.
Вам за это еще никто ничего ласкового не сказал?
а какое свойство в columns отвечает за раскладку по количеству контента?
Все целиком свойство columns распределяет элементы по колонкам, чтобы получить примерно ровный блок.
Но в отличие от вашей задачи все элементы будут идти по порядку по столбцам. Обычной газетной раскладкой. Т.е. так, чтобы связность текста не нарушилась.
toxic2701, columns решит вашу задачу вообще без JS.
Но я так понимаю, что у вас это просто учебная задача на JS.
Плагин masonry (можете посмотреть как он работает) использует абсолютное позиционирование блоков.
Также вы можете поискать статьи, где объясняют как можно написать подобную раскладку (на основе флексов или гридов или просто так).
Способ в лоб: создаете внутри node нужно количество div (count).
Берете по порядку элементы.
Складываете по одному в каждую колонку.
Узнаете высоту каждой. Выясняете минимальную.
В неё отправляете следующий элемент.
И т.д. в цикле.
Артем Прохоров, я же не просила скрин того, что произойдет. Но тоже пойдет.
Разумнее эту выпадаху сложить в песочницу. Не отвечающие же будут её туда прикручивать.
Кстати, можно заменить выпадашку на попап. Дешево и сердито.
Наверное, имелось с виду, ниже первого.
Но на картинке, он не ниже, а утыкается в край первого. Если бы он выглядывал из-под белого, тогда его просто нужно было разбить на 2 части.