Один хакерский способ сделать это - использовать псевдоэлемент элемента hovered, чтобы скрыть элемент рядом с ним, однако, когда дело доходит до элементов, расположенных справа, это уже другая история.
использование позиции Относительно, мы можем извлечь sh их справа и снова использовать псевдоэлемент, чтобы имитировать c расширение ширины, потому что если мы увеличим ширину, элемент будет перенесен благодаря вашим flex-wrap:wrap;
Это означает, что это просто визуально, если есть длинный контент, он не будет работать так хорошо, и вам придется держать видимым переполнение.
.item {
width: 50%;
background-color: lightblue;
/* overflow: hidden; */ /* Removed */
font-size: xx-large;
position: relative;
}
.item:hover {
background-color: lightgreen;
}
.item:before {
height: 100%;
background: lightgreen;
position: absolute;
width: 60%;
top: 0;
left: 100%;
z-index: 1;
}
.item:hover:before {
content: '';
}
/* select only the elements on right side */
.item:nth-child(2n):hover {
right: 30%;
}
<div style="display:flex; flex-wrap:wrap;">
<div class="item">item 1</div>
<div class="item">item 2</div>
<div class="item">item 3</div>
<div class="item">item 4</div>
</div>
Я предлагаю вам переосмыслить свой макет, если вы хотите достичь желаемого конечного результата.