如何在 css 中使用@keyframes 进行交叉淡入淡出图像库?

2023-12-09

我有一个fiddle (小提琴A)其中 2 个图像(2 个图块)发生图像交叉淡入淡出图库。这是我使用过的 html/css 片段。

<div class="featured-block" style="display:flex; justify-content: center;">
  <a href="https://www.google.com/" class="featured-block__item cf">
    <div class="featured-block__item-inner">
      <figure class="featured-block__image img-fit" itemprop="image" itemscope="" itemtype="http://schema.org/ImageObject">
        <img class="default-opacity" src="https://i.imgur.com/EUqZ1Er.png" data-fallback-img="https://i.imgur.com/EUqZ1Er.png" alt="Outburst">
      </figure>
    </div>
  </a>
</div>

以下是我在上面的 html 中使用了 2 个图像(2 个图块)的 @keyframes:

@keyframes cf4FadeInOut {
    0% {
        opacity: 0;
    }
    20% {
        opacity: 1;
        z-index: 999;
    }
    33% {
        opacity: 1;
    }
    53% {
        opacity: 0;
        z-index: 1;
    }
    100% {
        opacity: 0;
    }
}

上面的css动画Fiddle A工作得很好(这正是我想要的)当有2 个图块(2 张图片).

问题陈述:

上面的小提琴(小提琴 A)对于 2 个图像来说工作得非常好。我想要同样的css-animation/交叉淡入淡出图像库当有时发生3 和 4 图像.

这是 4 张图像(4 个图块)的小提琴https://jsfiddle.net/zwjt8qko/1/embedded/result(小提琴B)

这是 3 张图像(3 个图块)的小提琴https://jsfiddle.net/f6gr7kL1/embedded/result(小提琴C)

我想知道我应该做出哪些改变Fiddle B(4 个图像)和 Fiddle C(3 个图像)中的关键帧上面这样,同样的CSS 动画/交叉淡入淡出发生的事情正在发生Fiddle A现在。

我也对 JavaScript 解决方案持开放态度。


JavaScript 方法

基本做法:

  1. 在你的 CSS 中,所有图片默认为opacity: 0.
  2. 在 HTML 中,在其中一张图片上设置一个类名称,以将该图片的不透明度更改为1.
  3. 在 JavaScript 中,定期在图片中切换该类。
  4. 甚至不用考虑关键帧,直接在 JavaScript 中进行延迟即可。这使您可以更轻松地修改脉冲动画不同部分的持续时间,而不必计算总时间的百分比animation-duration就像您必须使用关键帧一样。
const pics = document.querySelectorAll('.pic');
const lastPic = pics.length - 1;
const transitionDuration = 800; // matches CSS
const transitionDelay = 3000; // up to you
const totalDelay = transitionDuration + transitionDelay;
const intervalDelay = (transitionDuration * 2) + transitionDelay; // time to fade out + time to fade in + time to stay active

function toggleClass() {
  const activePic = document.querySelector('.pic.active');
  const activeIndex = Array.prototype.indexOf.call(pics, activePic);
  const nextIndex = activeIndex === lastPic ? 0 : activeIndex + 1;
  const nextPic = pics[nextIndex];

  setTimeout(() => activePic.classList.remove('active'), transitionDelay);
  setTimeout(() => nextPic.classList.add('active'), totalDelay);
}

setInterval(toggleClass, intervalDelay);
.wrapper {
  width: 400px;
  height: 300px;
  position: relative;
}
.pic {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  opacity: 0;
  transition: opacity 800ms ease; /* immediately start fading out when active class is lost */
}
.pic.active {
  opacity: 1;
}
<div class="wrapper">
  <img class="pic active" src="https://via.placeholder.com/400x300?text=picture%201" alt="">
  <img class="pic" src="https://via.placeholder.com/400x300?text=picture%202" alt="">
  <img class="pic" src="https://via.placeholder.com/400x300?text=picture%203" alt="">
  <img class="pic" src="https://via.placeholder.com/400x300?text=picture%204" alt="">
</div>

关键帧法

我不会在这里详细介绍,但它可能看起来像这样:

@keyframes pulse1 {
  0% {
    opacity: 1;
  }
  20% {
    opacity: 0;
  }
}

@keyframes pulse2 {
  0% {
    opacity: 0;
  }
  25% {
    opacity: 1;
  }
  45% {
    opacity: 0;
  }
}

@keyframes pulse3 {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  70% {
    opacity: 0;
  }
}

@keyframes pulse4 {
  0% {
    opacity: 0;
  }
  75% {
    opacity: 1;
  }
}

请注意,我们甚至没有切换z-index因为没有意义:一次只能看到其中一个。只需从一开始就将它们全部放在彼此的顶部,然后它们z-index没关系。

(我不认为z-index你问题中的动画部分甚至正在做任何事情,因为z-index不可设置动画。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 css 中使用@keyframes 进行交叉淡入淡出图像库? 的相关文章

  • 通过 jquery/javascript 在警报或确认对话框中单击“确定”?

    我正在考虑在backbone js 和jquery 中编写一些UI 测试 它们可能不是最好的方法 但这是我正在考虑的事情 通过纯代码自动化测试而无需记录和回放 使用这种方法唯一让我摸不着头脑的是 在某些 用例流程 执行的 中 会出现确认 警
  • jQuery 验证日期范围问题

    我的代码中有很多地方有成对的相关开始和结束日期字段 范围 我需要验证开始日期早于结束日期 我正在使用 jQuery 验证插件 这是我的代码 http jsfiddle net jinglesthula dESz2 http jsfiddle
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • 在 IE10 中禁用捏合放大

    在 IE10 触摸模式下 我希望仅使页面的特定部分可缩放 其余的不应该 我找到了这个 http msdn microsoft com en US library ie hh772044 aspx http msdn microsoft co
  • 仅水平 CSS 视差效果,层数大于 100vw

    如何用水平引导网站仅 CSS 视差效果 要求 仅 CSS 视差 父层必须具有宽度 高度 100vw 100vh 子层的宽度 高度必须 gt 100vw 100vh child layers must visually align 100 w
  • 将 Google 电子表格解析为 Javascript 数组

    我有一个 Google 电子表格 https docs google com spreadsheets d e 2PACX 1vRc8Lx0N wf3f1xAAXkNFUqQjaWPFcde3YjK02gCBqGpUrULwHC6NC0sn
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • 如何在 div 容器内的元素之间留出空间

    我有一个弹性容器 它将由元素动态填充 容器没有固定宽度 I use max width max content 并且可以包含我想要的任意数量的元素 问题是我需要这些元素之间的间距 但不需要元素和容器之间左侧和右侧的间距 当然我可以用 ele
  • Symfony 2 使用 CSS 设置背景图片

    I want to put a background image for a menu in symfony But I can t figure out how to do it I managed to style a lot of t
  • 如何将当前元素传递给 Knockout.js 绑定中的 Javascript 函数?

    因此 我尝试根据是否选中子复选框 使用 Knockout js 将类添加到元素 为此 我试图通过this作为我的函数的参数 目前 我的精简 DOM 结构如下 tr td td tr
  • HTML 和 JavaScript - 将滚动操作从一个元素传递到另一个元素

    假设我有两个 div div div div A scrollable list div 我想让它当光标停在里面时 control并且鼠标滚轮滚动 view将会滚动 无论如何要实现这一目标 好的 快速修复对我有用 即使固定 div 不可滚动
  • (0, eval) () 的作用是什么? [复制]

    这个问题在这里已经有答案了 以下内容来自这个问题 https stackoverflow com questions 14119988 return this 0 evalthis 14120023 14120023 function q
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • 如何生成 JavaScript 堆栈跟踪? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪有什么建议吗 较新的浏览器 Chrome 和 Firefox 公开了一个允
  • 如何修复 getImageData() 错误画布已被跨源数据污染?

    我的代码在本地主机上运行得很好 但在网站上却不起作用 我从控制台收到此错误 对于这一行 getImageData x y 1 1 data Uncaught SecurityError Failed to execute getImageD
  • 文本后面有粗下划线

    如何使用 span 和 css 在文本 ABC 后面重现这种下划线 我已经能够做下划线below嵌套的文本span和彩色的border bottom 但无法获取behind图像和above文本基线 p style font size 48p
  • 如何修复nodejs Express服务器中的“MulterError:意外字段”?

    我正在设置一个服务器来从客户端上传 zip 文件 服务器运行express和multer来执行此操作 上传文件时 服务器抛出 MulterError 意外字段 错误 我无法弄清楚是什么导致了它 我尝试过使用 png 图像 效果很好 但对于
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr

随机推荐

  • “取消引用类型双关指针将违反严格别名规则”警告

    我使用将 enum 转换为 int 的代码 像这样的东西 enum foo foo foobar int pi reinterpret cast
  • Python - 读取文件并用分隔符分隔行的最佳方法

    读取文件并按分隔符分隔行的最佳方法是什么 返回的数据应该是元组列表 这个方法能打败吗 这可以更快地完成 使用更少的内存吗 def readfile filepath delim with open filepath r as f retur
  • Clang:如何检查是否执行了 LTO

    对于海湾合作委员会来说 这answer告诉我们如何验证是否执行了链接时优化 对于 clang 我看不到任何类似于 gnu lto 更具体地说 我有一个二进制文件 我非常确定 LTO 应该有显着的好处 但我什么也没看到 我想知道 cmake
  • 如何正确实现其他实体对Identity user的引用?

    我正在使用 Identity 它有自己的上下文 public class ApplicationUser IdentityUser some custom fields public class IdentityContext Identi
  • 在 Crystal Report 末尾添加附加页面

    我有一份订单报告 我想在末尾添加一个附加页面 说明订单的条款和条件 有人能帮我吗 在报表页脚中 将其设置为在打印之前创建一个新页面 在 部分专家 中 选择 报表页脚 gt 分页 选项卡 gt 选中 之前新建页面 复选框 将您的条款和条件放入
  • Plotly Dash - 渐变线

    是否可以使用 Plotly Dash 创建线条颜色渐变的折线图 纯粹为了美观 我尝试使用类似的东西 line color linear gradient 90deg red red 60 white 绘图破折号中的整个图形代码示例 dcc
  • 单击时更改 javafx 按钮颜色?

    我知道我可以使用按下的伪选择器来设置颜色 myButton pressed 问题是 我尝试通过以下方式在代码中覆盖样式表中的 css 背景颜色来做到这一点 myButton setStyle fx background color FFF
  • 如何按顺序迭代Golang中的地图?

    请看下面我的地图 var romanNumeralDict map int string map int string 1000 M 900 CM 500 D 400 CD 100 C 90 XC 50 L 40 XL 10 X 9 IX
  • Facebook getUser() 始终返回 0 [PHP SDK 3.1.1] [重复]

    这个问题在这里已经有答案了 fb php ini set display errors On error reporting E ALL require once facebook src facebook php facebook new
  • 禁用用户主文件夹创建

    当admin用户创建用户时 我自定义代码来打开和关闭 homeFolderCreationEager 但它只能延迟文件夹的创建 当相应的用户登录时 会自动创建该用户的文件夹 我怎样才能防止这种情况发生 任何善意的帮助将不胜感激 如中所述wi
  • 如何解决 java.lang.ClassNotFoundException: org.aspectj.lang.ProceedingJoinPoint 异常?

    大家好 我在运行我的应用程序时在 Spring Boot 上收到以下错误 java lang IllegalStateException Failed to load ApplicationContext at org springfram
  • 如何为jtable固定列设置图像,当我运行时,它仅获取图像路径

    我创建了一个程序来在 jtable 固定列中设置 imageIcon 我创建了一个 jtable 并获取数据库记录 然后将第一列设置为固定列 我在固定列中设置了一个图像图标 当我编译这个程序时 我只得到 imageicon 的路径 而不得到
  • Java 扫描器“倒带”

    我正在使用 Java Scanner 对象来解析文本文件 我需要扫描文件的一部分两次 出于性能原因 这样我就不必暂时存储其内容 因此 是否有一种方法可以将扫描仪 倒回 到特定的文件位置 或者 有没有办法克隆扫描仪 以便我可以独立使用每个实例
  • Haskell Double 除以 Int

    我有下面的代码 问题是我尝试划分Double by an Int factorial Int gt Int factorial 0 1 factorial e e factorial e 1 sumX Double gt Int gt Do
  • 在目标视图控制器 viewWillAppear 中检测向后/弹出导航[重复]

    这个问题在这里已经有答案了 有许多众所周知的解决方案用于检测视图控制器在向后导航过程中何时从屏幕上消失 由UINavigationController 即当视图控制器从导航堆栈中弹出时 换句话说 检测源视图控制器内的向后导航 相反 我需要检
  • 整数问题 Flex

    我对这段代码有疑问
  • 4xN 多米诺骨牌的组合数量

    我想找到 4 x N 区域 4 个单位宽度和 N 个单位高度 N 1 多米诺骨牌砖的可能不同组合的数量使用动态规划 多米诺骨牌的尺寸为 2x1 例如 对于水平和 对于垂直砖 Now 示例 4x1 两块多米诺骨牌叠在一起 4x2 砖块配置示例
  • 强制横向应用程序遇到困难

    我有两个应用程序 它们都强制用户在横向模式下使用 iPhone 以获得更宽的屏幕 而不是更高的屏幕 我发现的一件事是 我的第一个视图看起来不错 但所有其他视图都会将其子视图 UIButtons UIPicker UIViews 挤压到一侧或
  • 如何覆盖宽度属性?

    我怎样才能覆盖CSSwidth以便竞争widthHTML 属性定义了计算的大小 下面的示例以 500px 的宽度渲染 但我想要 100px 假设 css 规则无法更改 只是被更强的规则掩盖 编辑以澄清 我不想在内联或其他地方设置显式大小 i
  • 如何在 css 中使用@keyframes 进行交叉淡入淡出图像库?

    我有一个fiddle 小提琴A 其中 2 个图像 2 个图块 发生图像交叉淡入淡出图库 这是我使用过的 html css 片段 div class featured block style display flex a href https