Javascript 如何实现这种顺序淡入效果?
我看到这一页,觉得照片的淡入效果真的很酷 我试图用Javascript 如何实现这种顺序淡入效果?,javascript,html,css,reactjs,Javascript,Html,Css,Reactjs,我看到这一页,觉得照片的淡入效果真的很酷 我试图用样式化组件来模拟这种效果,以传递每张图片的索引,作为在它们全部淡入时分离它们的一种方式 -webkit-animation: ${props => `fadein ${props.index}s`}; /* Safari, Chrome and Opera > 12.1 */ @keyframes fadein { from { opacity: 0; } to { opa
样式化组件来模拟这种效果,以传递每张图片的索引,作为在它们全部淡入时分离它们的一种方式
-webkit-animation: ${props =>
`fadein ${props.index}s`}; /* Safari, Chrome and Opera > 12.1 */
@keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
以下是演示:
然而,无论我如何调整淡入时间,它并没有完全完成该页面似乎正在做的事情。在原始页面()上,每幅图片都显示得很快,延迟了一段时间。我检查了原始页面的图像元素,它有这行css
transition: top 70ms cubic-bezier(0.25,0.46,0.45,0.94),left 70ms cubic-bezier(0.25,0.46,0.45,0.94),transform 70ms cubic-bezier(0.25,0.46,0.45,0.94),height 150ms cubic-bezier(0.25,0.46,0.45,0.94) 70ms,-webkit-transform 70ms cubic-bezier(0.25,0.46,0.45,0.94)
我不擅长css,所以我不知道这是否与视觉效果有关。我对您的代码进行了一些编辑,让我解释一下我所做的:
首先,我们需要从零不透明度图像开始,直到加载这些图像,我们还可以根据图像的索引添加延迟转换
我们还需要添加一个setter函数,通过refs更改不透明度状态:
toggleOpacity=o=>{
this.setState({opacity:o});
};
棘手的部分是跟踪图像参考,这就是它的外观,我们还删除了所有关键帧,因为这些关键帧不再是必需的:
const Gallery=()=>{
常量[isSelected,setIsSelected]=useState(null);
常量refs={};
让图像=[];
for(设i=0;i<10;i++){
refs[i]=useRef(null);
让高度=数学地板(数学随机()*400+400);
设宽度=数学地板(数学随机()*400+400);
图像推送(
{
//调用ref函数
参考文献[i].current.toggleOpacity(1);
}}
//设置参考
ref={refs[i]}
索引={i}
setIsSelected={setIsSelected}
/>
);
}
返回(
{images.map(image=>image)}
);
};
.我稍微编辑了您的代码,让我解释一下我所做的:
首先,我们需要从零不透明度图像开始,直到加载这些图像,我们还可以根据图像的索引添加延迟转换
我们还需要添加一个setter函数,通过refs更改不透明度状态:
toggleOpacity=o=>{
this.setState({opacity:o});
};
棘手的部分是跟踪图像参考,这就是它的外观,我们还删除了所有关键帧,因为这些关键帧不再是必需的:
const Gallery=()=>{
常量[isSelected,setIsSelected]=useState(null);
常量refs={};
让图像=[];
for(设i=0;i<10;i++){
refs[i]=useRef(null);
让高度=数学地板(数学随机()*400+400);
设宽度=数学地板(数学随机()*400+400);
图像推送(
{
//调用ref函数
参考文献[i].current.toggleOpacity(1);
}}
//设置参考
ref={refs[i]}
索引={i}
setIsSelected={setIsSelected}
/>
);
}
返回(
{images.map(image=>image)}
);
};
.这里有一个例子。HTML需要一个div来包装整个正文内容,如果您希望它一次全部淡入。看看这个:
<div class="wrapper fade-in">
然后,您的div将拥有一个调用动画(@keyframes)的类:
HTML将如下所示:
<div class="fade-in">
[content]
</div>
必须在CSS中的div类中再次复制供应商代码:
.fade-in {
animation: fadeIn ease 5s;
-webkit-animation: fadeIn ease 5s;
-moz-animation: fadeIn ease 5s;
-o-animation: fadeIn ease 5s;
-ms-animation: fadeIn ease 5s;
}
这里有一个例子。HTML需要一个div来包装整个正文内容,如果您希望它一次全部淡入。看看这个:
<div class="wrapper fade-in">
然后,您的div将拥有一个调用动画(@keyframes)的类:
HTML将如下所示:
<div class="fade-in">
[content]
</div>
必须在CSS中的div类中再次复制供应商代码:
.fade-in {
animation: fadeIn ease 5s;
-webkit-animation: fadeIn ease 5s;
-moz-animation: fadeIn ease 5s;
-o-animation: fadeIn ease 5s;
-ms-animation: fadeIn ease 5s;
}
循环浏览图像并设置一个计时器(设置超时),以便在您希望它们淡入时使用。循环浏览图像并设置一个计时器(设置超时),以便在您希望它们淡入时使用。您好,非常感谢您的回答。然而,有一个问题。请看这个问题:嗨,非常感谢你的回答。然而,有一个问题。请看这个问题: