通过 JavaScript 分配时 CSS 过渡不起作用

2023-12-09

我在尝试通过 JavaScript 将 CSS3 转换应用到幻灯片时遇到了一些令人头疼的问题。

基本上,JavaScript 会获取幻灯片中的所有幻灯片,并将 CSS 类应用到正确的元素以提供漂亮的动画效果,如果没有 CSS3 过渡支持,它将仅应用样式而无需过渡。

现在,我的“小”问题。一切都按预期工作,所有幻灯片都获得正确的样式,代码运行没有错误(到目前为止)。但即使应用了正确的样式,指定的过渡也不起作用。此外,当我通过检查器自己应用样式和过渡时,样式和过渡会起作用。

由于我自己找不到合乎逻辑的解释,我想这里有人可以回答,好吗?

我整理了一个现在代码的小例子:http://g2f.nl/38rvma或者使用 JSfiddle(无图像):http://jsfiddle.net/5RgGV/1/


To make transition工作中,必须发生三件事。

  1. 该元素必须具有显式定义的属性,在本例中:opacity: 0;
  2. 该元素必须定义转换:transition: opacity 2s;
  3. 必须设置新属性:opacity: 1

如果您动态分配 1 和 2(如示例中所示),则需要在 3 之前有一个延迟,以便浏览器可以处理请求。当您调试它时它起作用的原因是您通过逐步执行它来创建这种延迟,从而给浏览器时间来处理。延迟分配.target-fadein:

window.setTimeout(function() {
  slides[targetIndex].className += " target-fadein";
}, 100); 

Or put .target-fadein-begin直接添加到 HTML 中,以便在加载时对其进行解析并为转换做好准备。

Adding transition更改元素并不是触发动画的原因,而是更改属性。

// Works
document.getElementById('fade1').className += ' fade-in'

// Doesn't work
document.getElementById('fade2').className = 'fadeable'
document.getElementById('fade2').className += ' fade-in'

// Works
document.getElementById('fade3').className = 'fadeable'

window.setTimeout(function() {
  document.getElementById('fade3').className += ' fade-in'
}, 50)
.fadeable {
  opacity: 0;
}

.fade-in {
  opacity: 1;
  transition: opacity 2s;
}
<div id="fade1" class="fadeable">fade 1 - works</div>
<div id="fade2">fade 2 - doesn't work</div>
<div id="fade3">fade 3 - works</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JavaScript 分配时 CSS 过渡不起作用 的相关文章

随机推荐

  • 具有变异状态的 JavaScript 日志记录对象[重复]

    这个问题在这里已经有答案了 这段 JavaScript 代码 var o console dir o o foo bar console dir o results in the same interactive tree output s
  • 如何在Android中集成Azure媒体播放器

    我有一个必须播放的清单流媒体网址 如何在android中集成azure媒体播放器来播放流视频 我找到了另一种解决方法来播放清单网址 只需连接即可 format m3u8 aapl v3 在网址末尾 您可以使用任何视频播放器播放此网址
  • 类型转换和初始化,在 Swift 中哪个更好?

    由于Swift对类型做了严格的检查 有时我们需要在NSString和String NSArray和 AnyObject 等之间进行转换 但实际上有两种不同的方法可以做到这一点 类型转换 例如str as String 初始化 比如Strin
  • 在 Angular 中取消提交表单

    我需要一个表格才能两者兼而有之 dirty并不是 submitted为了我的验证工作 我正在尝试通过 CSS 使用 ng invalid ng dirty and ng submitted由 Angular 动态添加的类 这意味着我不能简单
  • 为什么 pynput 不检测数字键盘按下?

    我在 Windows 7 上使用 python 3 7 有没有办法检测 pynput 模块中的数字 例如 1 按键 我尝试了很多其他模块 但除了 tkinter 之外我什么也没得到 它需要一个窗户 但我不想要那个 from pynput i
  • 将日期插入数据库 Postgres JDBC

    我是 Java 新手 也是 Postgres 新手 我有一个关于餐厅的小项目 我有一个像这样的 struk eng bill 表 我有一种方法可以将信息插入到该表中 如下所示 public int insertBill int id kar
  • Set-Content 在我的文件末尾附加一个换行符(换行符、CRLF)

    我的原始配置文件 web1 config 没有多余的行 在记事本中查看 显示所有字符 时看起来如下
  • xcodebuild 期间 RestKit/RestKit.h' 文件未找到错误

    我正在尝试使用 Jenkins CI 自动构建一个使用 Restkit 的 iOS 项目 显然 restkit 作为主项目中的一个项目驻留在其中 并且该项目使用 XCode IDE 成功构建 但是当我使用 xcodebuild jenkin
  • Docker 构建:无法获取档案

    我在 Windows 机器上使用 docker 工具箱 我正在尝试从 github 构建这个项目https github com pyannote pyannote video 当我通过运行构建图像时docker build t pyann
  • jQuery/Ajax 请求被发送两次

    我一遍又一遍地扫描我的代码 但似乎找不到问题 当我点击链接时 add user btn文件actions php被调用两次 因此 PHP 脚本被执行两次 这是脚本 我想它与ajax请求前面的javascript有关 function add
  • 抓住模式下方的六条线

    我有这些重复的台词 FINAL RESULTS NSTEP ENERGY RMS GMAX NAME NUMBER 1000 4 7910E 01 2 1328E 01 9 4193E 01 C 62 最终结果表示一组值的平均值 输出文件合
  • Windows $env:path ="$($env:path);。"它是在哪里添加的?

    我通过运行 解决 了一个问题 env path env path 来自 PowerShell 显然它将当前目录添加到我的路径中 请问它添加到哪个路径变量 在我的环境变量对话框中 我会在哪里看到它被添加 用户变量 系统变量 我很困惑 因为我已
  • 如何使用递归构建螺旋方阵?

    我想使用递归构建一个螺旋方阵 我可以使用迭代方法构建螺旋方阵 如下所示 void main int initial direction UP n MAX p 1 intial direction is set to UP because w
  • 使用 JavaScript 写入 HTML 时出现换行问题

    我在用着常规文本框作为用户写评论的文本输入 然后我使用 JQuery 和 JSON 将数据发送到服务器 然后将其插入数据库 当我想显示此文本时 我使用 jQuery 下载它并准备 HTML 并将其显示在浏览器中 但没有新行 如何保留用户输入
  • Grails:启动应用程序而不连接到数据库

    我在 grails 中有一个应用程序 我可以更改欢迎页面中的参数 包括数据库配置 服务器 用户名等 我从数据源外部化了数据库配置 以便我可以更改它 我想做的是能够在不配置任何数据库的情况下启动应用程序 这样我就可以在欢迎页面中配置它 这对于
  • 如何将应用内购买功能添加到我的 flutter 应用程序中?

    我打算向我的 flutter 应用程序添加应用程序内购买功能 但找不到任何有关应用程序内购买的相关信息或示例应用程序 任何人都可以分享包含应用程序内购买功能的任何链接或示例应用程序吗 谢谢 看看这个包 https pub dev packa
  • 删除字符串中的所有空格

    vb net 中是否有任何函数可以删除字符串中的所有空格 我的意思是像 这是什么 这样的字符串应该是 Whatisthis 谢谢 富尔坎 Use 字符串替换 Dim s As String What is this s s Replace
  • 即使从日历中选择日期后,如何保持 mat-datepicker 日历打开?

    我想保留mat datepicker在特定的 div 中打开 我用了opened true属性 但在选择日期后就会关闭 这应该适合你 将其添加到您的input click openCalendar picker keepOpen 这给你的m
  • Angular Proxy.Conf.Json 不适用于多个 api

    我有以下 proxy conf json 日志行和 api 调用 first api target first api secure false logLevel debug second api target second api sec
  • 通过 JavaScript 分配时 CSS 过渡不起作用

    我在尝试通过 JavaScript 将 CSS3 转换应用到幻灯片时遇到了一些令人头疼的问题 基本上 JavaScript 会获取幻灯片中的所有幻灯片 并将 CSS 类应用到正确的元素以提供漂亮的动画效果 如果没有 CSS3 过渡支持 它将