reactjs React/CSS转换:translate()转换会在转换期间将一些元素放在不合适的位置

hyrbngr7  于 2023-05-06  发布在  React
关注(0)|答案(1)|浏览(148)

当使用transform移动flexbox中的所有元素时:translate()某些元素在过渡过程中出现在不适当的位置,然后捕捉到位。我数了一下,这个问题出现的第一个元素是第13个。
更新:到目前为止,我发现这个问题发生在Chrome和Edge上。但在Firefox上,它就像预期的那样工作。我还简化了代码,因此我将稍微更改之前的代码。而且,项目偏移的距离越远,问题就越严重。
更新:问题似乎是由重新计算图像大小/位置引起的。当我添加溢出时:隐藏到图像中,问题就消失了。不知道为什么会这样...
React代码:

<div
          key={index}
          className="item-container"
          tabIndex={active ? 0 : undefined}
          style={{
            transform: `${activeItem < itemRefs.current.length - 4 ? `translateX(-${activeItem * 100}%)` : undefined}`,
            
          }}
          ref={(ref) => (itemRefs.current[index] = ref)}
        >
          <img src={url}/>
        </div>

CSS:

.item-carousel {
  height: 30%;
  display: flex;
  overflow-x: hidden;
}
.item-container{
  display: flex;
  box-sizing: border-box;
  min-width: 20%;
  max-width: 20%;
  max-height: 250px;
  padding: 5px;
transition: transform 0.25s ease;
}

item-carousel是包含我移动的所有项目的主flexbox,item-container用于单个项目。
An item out of place during transition
我试过删除CSS文件中几乎所有的内容。只保持项目轮播,但问题仍然发生,所以我不认为这是问题所在。

b4lqfgs4

b4lqfgs41#

很高兴使用帧运动布局动画。
否则你应该提供一个最小的reproduce环境

相关问题