将兄弟姐妹推出视野,同时保持其宽度

Push siblings out of view while keeping their width

当悬停在弹性元素上时,我现在将 flex-basis 设置为 100%。在执行此操作时,所有兄弟姐妹的宽度都调整为 0(我认为),这在动画中显示。

是否有可能(最好是 css)让这些同级保持它们的宽度(同级的 nr 是可变的,所以在某些情况下会有比下面的示例更多的列)而元素是悬停在扩大到 100% 宽度?这样看起来它们就好像被推出容器而不是调整到 0 的宽度。

现在是这样工作的:https://jsfiddle.net/luffyyyyy/y8p9g2bs/8/

.container {
    width: 100vw;
    height: 60vh;
    display: flex;
    align-items: stretch;
    overflow: hidden;
}

.day-container {
    flex: 1; 
    display: flex;
    flex-direction: column;
    transition: flex-basis 1000ms ease-in-out;
}

.day-container:hover {
    flex-basis: 100%;
}

这是我得到的最远的距离,但我相信要正确居中,您必须使用 Javascript:

https://jsfiddle.net/xum8va4t/

它的工作原理是添加第二个 flexbox 包装器,它像 day-container

一样在悬停时生长

这是目前所能达到的。但是要使其工作,您必须知道同级元素的数量,在您的情况下为 .day-container。因此,从您的 jsfiddle 中共有 5 个 .day-container 元素,因此 100/5 = 20% 应该是 .day-container 元素的 flex-bases

现在,当 .containergeneral 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;
}