css - 如何遍历数组以在 ReactJS 上显示和隐藏文本
问题描述
我有一个演示。这是一个简单的React
应用程序,我在其中显示一组文本。我想遍历数组并隐藏和显示文本。我认为我可能能够做到这一点,React
但我认为现在它可能必须与CSS
. 我可以隐藏并显示第一种颜色,但我如何循环显示颜色,以便显示红色然后显示绿色等。
*{
font-family: Lato;
}
@keyframes fade-animation {
0% {
opacity: 0;
}
20% {
opacity: 0;
}
40% {
opacity: 1;
}
60% {
opacity: 1;
}
80% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.titles{
position: relative;
text-align: center;
}
.titles p{
font-size: 40px;
position: absolute;
opacity: 0;
}
.titles p:nth-child(1) {
animation: fade-animation 5s linear 0s infinite;
}
/* .titles p:nth-child(2) {
animation: fade-animation 5s linear 15s infinite;
} */
解决方案
如果由于某种原因您必须将动画逻辑保留在 CSS 文件中,那么您将需要 Sass/Scss 的帮助来构建循环(请参见此处的示例)。纯 CSS 将无法实现这一点。
但是,React/内联 CSS 的混合可能会有所帮助。在您的 React 组件中:
{colors.map((color, i) => (
<p style={{animation: `fade-animation 30s linear ${i * 5}s infinite`}}>{color}</p>
))}
您可能还需要按如下方式更新动画,以便显示/隐藏按顺序进行。对于以上 6 色的 30s 动画,以下动画设置将正确播放。
@keyframes fade-animation {
0% {
opacity: 0;
}
8.3% {
opacity: 1;
}
16.6% {
opacity: 0;
}
100% {
opacity: 0;
}
}
要计算动画数学,只需确保以下两件事:
对于n
您希望循环的数组中的项目:
项目在屏幕上可见的时间百分比应该是
100 / n
(在我们上面的示例中,它是介于 0% - 16.6% 之间的帧,其中不透明度不为 0)。每个项目被延迟动画
m / n
的m
长度(在我们上面的示例中,整个动画需要 30 秒,因此每个项目被额外延迟 5 秒)。
推荐阅读
- javascript - 如何使用重叠 div 获取当前悬停位置?
- c# - 为什么在将值传递给另一个 C# 表单到文本框字段时 SELECT 不选择 TESTID?
- c# - .netcore 从 2.1 升级到 3.1 问题
- python - 使用 tkinter 的 tix 模块的 Python 代码在命令提示符下工作正常,但在转换为可执行文件后使用它时显示错误
- axapta - 使用来自单击事件处理程序 d365fo 的临时表填充网格
- ajax - 在 Laravel 中使用 Ajax 编辑数据
- javascript - 在 JavaScript 中用另一个按钮替换一个按钮
- c# - Stripe - 如何在 Checkout.Session 中获取账单地址信息
- vue.js - Ionic vue 框架(CAPACITOR),二维码扫描器问题
- android - 如何在Android上恢复自定义视图的translationX