Это то, чего можно достичь до сих пор. Но для того, чтобы это работало, вы должны знать количество родственных элементов, в вашем случае .day-container
. Итак, из вашего jsfiddle всего 5 .day-container
элементов, поэтому 100/5 = 20%
должно быть flex-bases
для .day-container
элементов.
теперь мы переместим все элементы .day-container
до того, как завис на один на 20%, когда .container
завис с помощью general sibling selector '~'
. Вот код:
.container:hover .day-container:not(:hover) {
margin-left: -20%;
}
.container:hover .day-container:hover ~ .day-container {
margin-left: 0;
}
наконец, измените transition
на all
, чтобы все прошло гладко.
Вот так должен выглядеть окончательный код:
body {
margin: 0;
padding: 0;
}
.container {
width: 100vw;
height: 60vh;
display: flex;
align-items: stretch;
overflow: hidden;
}
.day-container {
flex: 1 0 20%;
display: flex;
flex-direction: column;
transition: all 1000ms ease-in-out;
}
.day-container:hover {
flex-basis: 100%;
}
.item.small {
flex: 1;
background-color: royalblue;
}
.item.medium {
flex: 2;
background-color: rebeccapurple;
}
.item.big {
flex: 3;
background-color: goldenrod;
}
.container:hover .day-container:not(:hover) {
margin-left: -20%;
}
.container:hover .day-container:hover ~ .day-container {
margin-left: 0;
}