🦋2.3 demo-ani

.demo-ani {
    /* 设置关键帧动画名称 */
    animation-name: animation1;
    /* 设置动画时长 */
    animation-duration: 3s;
    /* 设置动画播放方式:渐入渐出 */
    animation-timing-function: ease-in-out;
    /* 设置动画播放的方向 */
    animation-direction: alternate;
    /* 设置动画播放的次数 */
    animation-iteration-count: infinite;
    /* 设置动画的播放状态 */
    animation-play-state: running;
    /* 设置播放动画的延迟时间 */
    animation-delay: 1s;
    /* 设置动画播放结束应用到元素的样式 */
    animation-fill-mode: forwards;
    background-color: red;
    width: 100px;
    height: 100px;
}
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

🔎3. Vue 部分

const App = Vue.createApp({
    data() {
        return {
            cls: "demo"  // 初始类名为 "demo"
        };
    },
    methods: {
        run() {
            if (this.cls == "demo") {
                this.cls = "demo-ani"; // 如果当前是 "demo",点击时切换到 "demo-ani"
            } else {
                this.cls = "demo"; // 如果当前是 "demo-ani",点击时切换回 "demo"
            }
        }
    }
});

App.mount("#Application");
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

🔎4. 交互流程

  1. 初始状态:

  2. 点击事件:

  3. 动画效果:

  4. 切换回初始状态:

🔎5. 总结

这段代码通过 Vue 3 和 CSS 关键帧动画实现了一个动态的交互效果:

这是一种非常适合学习 CSS 动画与 Vue 的交互方式的示例,展示了如何结合 Vue 的数据绑定和 CSS 动画来实现灵活的用户界面效果。

id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"> class="blog_extension blog_extension_type1" id="blog_extension"> class="blog_extension_card" data-report-click="{"spm":"1001.2101.3001.6470"}"> class="blog_extension_card_left"> class="blog_extension_card_cont"> class="blog_extension_card_cont_l"> 愚公搬代码 class="blog_extension_card_cont_r"> 微信公众号 汇集各种IT相关知识传播
注:本文转载自blog.csdn.net的愚公搬代码的文章"https://blog.csdn.net/aa2528877987/article/details/145394834"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!