gpt4 book ai didi

javascript - 无法在 React 中重现淡入效果

转载 作者:行者123 更新时间:2023-11-29 15:10:50 25 4
gpt4 key购买 nike

我想重现我在这个 vanilla JS example 中编码的效果在我的 React 应用中。

这是我的 Sass

.item
opacity: 0
transition-property: opacity
transition-timing-function: ease-in

.is-transitioning
opacity: 1

生成图像及其容器的循环:

this.props.images.map((image, index) => <ImageContainer key={`img-${index}`} 
image={image}
transitionDuration={Math.trunc(index * Math.random() * 1000) + 200} />
)

最后是 ImageContainer 组件:

    const ImageContainer = (props) => (

<div className="item is-transitioning"
style={{ transitionDuration: `${props.transitionDuration}ms` }}
>
<img src={`${props.image.path}`} />
</div>
);

export default ImageContainer;

即使正确应用了内联类并且有 css,我也想不通为什么没有显示效果。

最佳答案

问题是 is-transitioning 是从一开始添加的,因此您的元素已经在 opacity:1 并且会发生通知。您需要添加类才能触发不透明度更改并查看过渡。

如果您无法添加类,另一种方法是使用动画。这是您可以转换为 React 的 JS 示例:

Array.from(document.querySelectorAll('.item')).map((i, index) => {
i.style.animationDuration = `${(index * Math.trunc(Math.random() * 1000)) + 200}ms`;
});
.container {
display: flex;
}

.item {
display: flex;
justify-content:center;
align-items: center;
width: 1rem;
height: 1rem;
background-color: teal;
padding: 2rem;
margin-right: 1.2rem;
border-radius: 10px;
font-size: 2rem;
color: white;
opacity: 0;
animation:change 2s forwards;
}
@keyframes change{
to {
opacity:1;
}
}
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>

只需保留您编写的相同代码并将 transitionDuration 替换为 animationDuration 并调整 CSS。

关于javascript - 无法在 React 中重现淡入效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com