如何使用 jQuery 在第二次单击时反转 CSS 动画

2024-05-12

我制作了以下菜单图标 CSS 动画,当我点击它时会触发它。当我使用 jQuery 第二次单击它时,我想使其反向动画。

#path1 {
  stroke-dasharray: 33px;
  stroke-dashoffset: 33px;
  animation: line 1.5s linear forwards;
  animation-play-state: paused;
}

@keyframes line {
  100% {
    stroke-dashoffset: -15.5;
  }
}

#halfLineLeft {
  transform-origin: 1% 50%;
  animation: shrinkleft 1s linear forwards;
  animation-play-state: paused;
}

 #halfLineRight {
  transform-origin: 100% 1%;
  animation: shrinkleft 1s linear forwards;
  animation-play-state: paused;
}

@keyframes shrinkleft {
  100% {
    transform: scale(0,1);
  }
}
svg {
  transform: translate(350px, 200px);
}

这是我迄今为止拥有的 jQuery...

$("svg").click(
  function(){
     $("#path1, #halfLineLeft, #halfLineRight").css("animation-play-state", "running");
  }
 );

当我第二次单击 SVG 图标时,我似乎无法弄清楚如何使其反向动画。我尝试了这段代码,但没有任何运气:

$("svg").click(
  function(){
     $("#path1, #halfLineLeft, #halfLineRight").css("animation-state", "running"),
     $("#path1, #halfLineLeft, #halfLineRight").css("animation-direction", "reverse");
  }
 );

这是带有实时动画的 codepen 链接:

http://codepen.io/anon/pen/xEORBJ http://codepen.io/anon/pen/xEORBJ


我不知道这是否是最有效的方法,但添加反向关键帧和切换类似乎可行。

代码笔示例 http://codepen.io/pythagoras1357/pen/zKBdwx

#path1.active {
  animation: line 1.5s forwards;
}

#path1.inactive {
  stroke-dashoffset: -15.5;
  animation: unline 1s linear forwards;
}

#halfLineLeft.active {
  animation: shrinkleft 1s linear forwards;
}

#halfLineRight.active {
  animation: shrinkleft 1s linear forwards;
}

#halfLineLeft.inactive {
  transform: scale(0, 1);
  animation: unshrinkleft 1s linear forwards;
}

#halfLineRight.inactive {
  transform: scale(0, 1);
  animation: unshrinkleft 1s linear forwards;
}

#path1 {
  stroke-dasharray: 33px;
  stroke-dashoffset: 33px;
}

@keyframes line {
  100% {
    stroke-dashoffset: -15.5;
  }
}

@keyframes unline {
  100% {
    stroke-dashoffset: 33px;
  }
}

@keyframes shrinkleft {
  100% {
    transform: scale(0, 1);
  }
}

@keyframes unshrinkleft {
  100% {
    transform: scale(1, 1);
  }
}

#halfLineLeft {
  transform-origin: 1% 50%;
}

#halfLineRight {
  transform-origin: 100% 1%;
}

svg {
  transform: translate(50px, 50px);
}

$("svg").click(
  function() {
    $("#path1, #halfLineLeft, #halfLineRight").toggleClass("active");

    if (!$("#path1, #halfLineLeft, #halfLineRight").hasClass("active")) {

      $("#path1, #halfLineLeft, #halfLineRight").addClass("inactive");

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

如何使用 jQuery 在第二次单击时反转 CSS 动画 的相关文章

  • 智能位置表单字段

    我的用户注册表单上有一个文本字段location 我本质上希望这个字段能够根据 Google 地图 或同等地图 进行验证 只允许有效位置通过 最好采用类似的格式滑铁卢 伦敦 or 伦敦 英国 要求 除了位置名称之外 我还想返回该位置中心的坐
  • 如何使用 HTML CSS JS 创建滑块/切换来更改屏幕上的字体大小 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 is there any way I can make this gt 所以我想制作一个滑块 切换器 用户可以拖动 滑动它来改变不同的
  • POST 表单数据为 application/json

    我正在开发一个 API 它接收 application json post 请求 并触发一些流程 我目前的主要问题是发送一个 application json 帖子 其中包含来自输 入表单的数据 我已经尝试过 jQuery ajax 但由于
  • 如何选择两个元素之间的所有元素

    我想选择两个给定元素之间的所有元素 我有这样的html h2 This is firsty h2 p Some para p ul li list items li li list items li li list items li li
  • 如何删除事件监听器?

    下面是我的事件监听器代码 window addEventListener beforeunload function e if sessionStorage token abide call api 如果我想删除这个事件监听器 我该怎么办
  • jQuery - 将所有展开的文本包装在 p 标签中

    我遇到以下情况 以下代码被写入我的页面 div Some text here which is not wrapped in tags p Some more text which is fine p p Blah blah another
  • 图像仅在 iPhone x 上拉伸

    我目前正在设计和构建一个 html 和 css 网站 遇到了一个小问题 我使用 chrome 开发工具检查了响应能力 根据手机和平板电脑的大小调整窗口大小 一切看起来都很好 然而 现在我在 iPhone X 上检查了该网站 图像全部垂直拉伸
  • 将 javascript 合并到一个文件中

    最近阅读了雅虎的网络优化技巧并使用 YSlow 我在我的一个网站上实现了他们的一些想法http www gwynfryncottages com http www gwynfryncottages com你可以在这里看到该文件http ww
  • 电子邮件模板 - MS Office Outlook 365 中不显示表格背景图像

    为了电子邮件模板的目的 我需要在 table 它包含图像上的文本 现在我已经尝试过 https stackoverflow com a 15620571 6191987 https stackoverflow com a 15620571
  • Magento 中的 jquery/prototype 冲突

    这是一个基于 Themeforest 的 Acumen 主题的 Magento 商店 出乎意料的是 jquery 的东西现在不起作用了 Acumen 通过 magento 静态块加载 jquery 但这些都没有被触及 昨天我正在努力添加 j
  • 标点符号加载“动画”,javascript?

    我正在寻找一种好方法来显示一些标点符号加载 动画 我想要的是这样的 This will display at second 1 Waiting for your input This will display at second 2 Wai
  • 使用 jQuery 拖放

    我想使用 jQuery 进行简单的拖放操作 到目前为止我还没有做任何事情 但之前的尝试都没有成功 你有没有尝试过jQuery UI 可拖动 http jqueryui com demos draggable 简单用例 div class u
  • jquery:如何检查div中的所有单选按钮是否被选中

    我的 html 看起来像这样 div div
  • JQuery 可排序嵌套可排序 div

    这个问题与这个有关Nest jQuery UI 可排序 https stackoverflow com questions 19129476 nest jquery ui sortables 但我无法解决我的问题 问题是 我有一个包含项目的
  • 如何使用javascript隐藏div

    我想使用 Javascript 隐藏一个 div 下面是我的div div class ui dialog titlebar ui widget header ui corner all ui helper clearfix span cl
  • 设置股票数据 Highcharts xAxis 的格式

    我已经浏览了需要为 xAxis 属性设置的 Highcharts 选项来格式化时间标签 但没有运气了解这对于这种情况到底是如何工作的 我在白天 盘中 检索了股票的动态数据 我需要显示这些数据 因为检索的数据每天从 9 30 开始到 17 0
  • 无法做到最大宽度

    我有一个页面 内容如下 div testingtestingtestingtestingtestingtestingtestingtestingtesting testingtestingtestingtestingtestingtesti
  • 为 Gmail 设计 HTML 电子邮件

    我正在生成一封使用内部样式表的 html 电子邮件 即 h2 class foo Email content here 在 Gmail 中查看时 内部样式表中的所有样式似乎都被忽略 Gmail 似乎忽略了内联规则以外的所有样式 例如 h2
  • 如何使用 jQuery 在 ASP.NET MVC 3 中设置会话变量?

    所以这就是问题 如何使用 jQuery 在 ASP NET MVC 3 中设置 Session 变量 我正在尝试使用 ajax or post但问题是我真的不知道该怎么办 描述 只需发布到控制器并在那里设置会话变量即可 Sample jQu
  • 如何禁用 TinyMCE 文本区域

    我已经尝试了以下所有方法 tbxNote attr disabled disabled doesn t work tbxNote attr disabled true doesn t work either tinyMCE init mod

随机推荐

  • jQuery:如何检查一个元素是否是最后一个同级元素?

    如何检查一个元素是否是最后一个兄弟元素 对于连续的最后一个单元格 我想执行不同的操作 这不起作用 td each function var this this if this this parent last td alert 123 如果
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 无限循环中的 JavaScript 警报消息

    无限循环中的警报框 在这里我尝试在两个连续字段上放置弹出警报消息 这样它们就不能留空 我知道为什么会发生这种情况 因为当第一个函数的 onblur 事件启动时 它会将焦点放在第二个字段上 当它跳回第一个时 第二个文本字段的 onblur 启
  • AWS SDK S3 node.js 连接到本地 MinIO 服务器

    我有用 Node js 编写的应用程序服务器 它将文件上传到 AWS S3 存储 为此我正在使用https www npmjs com package aws sdk https www npmjs com package aws sdk当
  • 用 Fragment 替换 ViewPager - 然后导航回来

    我有一个最初托管 ViewPager 的活动 连接到 FragmentPagerAdapter 当用户单击 ViewPager 子片段内的项目时 我使用 FragmentTransaction 将空容器视图替换为我想要导航到的新片段 如果我
  • 如何获取所有数字列(嵌套与否)的“.describe()”统计信息?

    获取数据帧 或列表或数组 中任何列的简单描述性统计数据的最佳方法是什么 无论是否嵌套 一种高级 df describe 还包括带有数值的嵌套结构 就我而言 我有一个包含许多列的数据框 有些列的每一行都有一个数字列表 在我的例子中是时间序列结
  • 为什么我必须将 TS 文件导入为 JS 文件?

    我正在使用 WebdriverIO 帮助进行一个测试项目 我们在 TS serting 方面遇到了巨大的困难 因为 TS 转译器似乎可以正确解析 TS 模块 但解析在运行时失败 例如 如果我有一个模块 config config ts ex
  • 找不到模块“lodash”

    今天我尝试了解有关 Google Web Starter Kit 的更多信息 因此我关注了这些说明 https developers google com web fundamentals getting started web start
  • 查找连续的组合[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中的滚动或滑动窗口迭代器 https stackoverflow com questions 6822725 rolling or sliding window iterator in
  • 已取消的邮件图标显示“不支持”

    发送到 Outlook 的已取消邀请电子邮件包含 不支持 附件 这是我用来取消电子邮件邀请的 ics 有人可以帮助我理解我在这里缺少什么吗 PS Gmail 能够解析此 ics 并从日历中删除该事件 BEGIN VCALENDAR VERS
  • 使用 TLS/SSL 保护 Cassandra 通信

    我们希望保护 Cassandra 免受中间人攻击 有没有办法配置 Cassandra 使客户端 服务器和服务器 服务器 复制 通信采用 SSL 加密 谢谢 简短的回答 不 对于客户端 服务器 节俭 151 https issues apac
  • Grails 渲染 PDF 文件

    我正在尝试在网页中呈现 PDF 文件 但使用以下语法时 我得到了一个奇怪的字符组合 render file new File path to file pdf fileName myPdfFile pdf 有谁知道除了上面的行之外我还需要添
  • 如何返回n对括号的所有有效组合?

    def paren n lst for x in range n current string join lst solutions list for i in range len current string 1 close curren
  • 仅使用 GRPC 连接到对话流 StreamingDetectIntent,卡在等待 responseStream.MoveNext

    我正在尝试将 DialogFlow API v2 与 Unity 结合使用 由于 Unity 还没有官方 SDK 所以我使用了 Grpc beta unity SDK 以及使用 Grpc 工具中的 Protobuf 和 protoc 创建的
  • 从底部工作表对话框片段中获取值

    我从片段A开始bottomSheetDialogFragment 我想从该bottomSheetDialogFragment中选择日期 然后将其设置在片段A中 选择日期已经完成 我只想将其获取到片段A中以在某些字段中设置它 我怎样才能得到这
  • git:如何查明某个分支是否有拉取请求?

    我在 git 分支上 有没有办法查看该分支是否有拉取请求 在这种特殊情况下 Atlassian Stash 用于管理拉取请求 当然我可以使用Stash的Web界面来搜索拉取请求 但我也可以仅使用 git 命令行工具从脚本执行此操作吗 Cor
  • Gradle 无法在新的 Android Studio 2.0 中同步我的项目

    我刚刚将 Android Studio 从 1 5 升级到 2 0 即安装了全新版本 升级似乎进行得很顺利 但是当我打开项目时 当 Gradle 同步我的项目时 我遇到了问题 Gradle 同步运行几分钟后 我收到此错误 Failed to
  • 使用 Byte Buddy 拦截对 Java 8 lambda 表达式的调用

    我尝试使用 Byte Buddy 拦截对方法的调用和对 Java 8 lambda 表达式的调用AgentBuilder如下 static final Instrumentation inst ByteBuddyAgent install
  • 求 matplotlib 中绘制的两条曲线之间的面积(fill_ Between area)

    我有一个清单x and y两条曲线的值 两者都有奇怪的形状 而且我没有它们中任何一个的函数 我需要做两件事 绘制它并对曲线之间的区域进行着色 如下图所示 求曲线之间阴影区域的总面积 我可以绘制这些曲线之间的区域并对其进行着色fill bet
  • 如何使用 jQuery 在第二次单击时反转 CSS 动画

    我制作了以下菜单图标 CSS 动画 当我点击它时会触发它 当我使用 jQuery 第二次单击它时 我想使其反向动画 path1 stroke dasharray 33px stroke dashoffset 33px animation l