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;
}

循环浏览图像并设置一个计时器(设置超时),以便在您希望它们淡入时使用。循环浏览图像并设置一个计时器(设置超时),以便在您希望它们淡入时使用。您好,非常感谢您的回答。然而,有一个问题。请看这个问题:嗨,非常感谢你的回答。然而,有一个问题。请看这个问题: