首页 > 其他分享 >使用Element.animate()实现动画

使用Element.animate()实现动画

时间:2023-12-27 22:24:06浏览次数:32  
标签:动画 translateX 关键帧 number Element offset animate

Element.animate()实现

<div id="app">
    <button @click="startAmi">开始</button>
    <p>{{msg}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    let app = new Vue({
        el: "#app",
        data: {
            msg: "hello world"
        },
        methods: {
            startAmi(el) {
                el.target.animate([
                    {
                        offset: .2,
                        transform: "translateX(100px)",
                        color: "red"
                    },
                    {
                        offset: 1,
                        transform: "translateX(200px)",
                        color: "blue"

                    }
                ], {
                    duration: 1000,
                    fill: "forwards"
                })
            }
        }
    })
</script>

Element.animate(keyframes,options)

参数:

  • keyframes:关键帧对象数组,或一个关键帧对象,格式如下:

    {
        //设置当前帧的偏移(在动画中的那个阶段完成,就是CSS中定义动画时的百分比),且与其他关键帧对象之间必须升序排序
        //取值在[0-1]之间
        offset?: number | null,
        //给指定关键帧之间应用过渡效果
        // 可选的值有 linear ease-in ease-out ease-in-out
        easing?:string,
        //解析元素的动画如何影响其基础属性值
        //accumulate:累积到基础值
        // add:被添加到与之组合的基础值(又名加法)中
        // replace:覆盖它与组合的基础值:替换
        composite?:"accumulate" | "add" | "auto" | "replace"
        //其它css样式
        ...cssStyle
    }
    
  • options:代表动画持续时间的整数(以毫秒为单位),或者一个配置对象,格式如下:

    {
        	//动画延迟执行时间
        	delay?: number,
    
            direction?: PlaybackDirection,
            //动画完成时间
            duration?: number,
            //动画随时间变化的速率
            easing?: string,
            //动画结束后延迟的毫秒数。这主要用于根据另一个动画的结束时间对动画进行排序。默认值为 0。
            endDelay?: number,
            //规定动画在等待状态和结束状态的样式
            /*
            none		不改变默认行为。
        	forwards	向前填充模式,当动画完成后,保持最后一帧属性值。
        	backwards	向后填充模式,在delay所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
       		both		向前和向后填充模式都被应用。
            */
            fill?: "none" | "forwards" | "backwards" | "both",
            //描述动画应在迭代中的哪个点开始。例如,0.5 表示在第一次迭代的中途开始,设置此值后,具有 2 次迭代的动画将在第三次迭代中途结束。默认值为 0.0。
            iterationStart?: number,
            //动画应重复的次数。默认值为 1
            iterations?: number
    }
    

动画有返回值

动画的返回值可以进行动画的暂停、取消等操作

const  an = el.target.animate([
    {
        offset: .5,
        transform: "translateX(100px)",
        color: "red",
        easing:"linear"
    },
    {
        offset: 1,
        transform: "translateX(200px)",
        color: "blue",
        // fontSize:"26px",
        composite:"replace"

    }
], {
    duration: 2000,
    fill: "forwards"
})
//暂停动画
an.cancel()

标签:动画,translateX,关键帧,number,Element,offset,animate
From: https://www.cnblogs.com/ewar-k/p/17931558.html

相关文章

  • 【秀米教程7】SVG点击图片,横屏下拉效果动画
    原文链接:https://www.cnblogs.com/MrFlySand/p/17930117.html效果展示效果展示:点击图片展开推文内容效果图操作步骤点击【图文模板】-【SVG】-在左边选择自己想要的下拉效果点击下拉效果图的边框-点击【编辑】显示内容:显示当前编辑下的内容,但不能编辑点击【......
  • Cannot read properties of null (reading 'parentElement')问题的解决
    问题描述出现了一堆这种报错,echarts真的,我的一生之敌~~~~~问题解决发现,我使用输入框,将文本内容传递到后端,然后再传回到这个界面,就直接引起了整体的报错,在我去掉输入框时,这个错误就被解决啦~~~所以,我就直接将条件输入的文本框与图表分开了,这样就能够解决上面那个问题啦!......
  • CSS之动画
    一.动画动画类型CSS3可以创建动画,它可以取代许多网页动画图像、Flash动画和JavaScript实现的效果。transform属性可以定义一些主要的动画属性,translate:平移,translat(100px),向右平移100pxscale:缩放,scale(120%),放大20%skew:阴影,skew(30deg),顺时针阴影30度rotate:旋转,rotate(30de......
  • vue3 elementplus 表格表头过长 三个点显示
    vue3:constrenderHeaderMethods=({column})=>{returncreateVNode(resolveComponent('el-tooltip'),{effect:'dark',content:column.label,placement:'top'......
  • Unity引擎2D游戏开发,受伤及死亡的逻辑和动画
    裁切素材制作受伤动画略制作死亡动画由于没有死亡动画素材,所以直接调整Alpha通道数值,使其逐渐消失在Animations中复制野猪受伤动画,命名为boarDeadAnimator中拖入boarDead动画点击AddProperty,选择Color将最后一帧的Alpha值改为0Animator连接动画逻辑从AnyState连接......
  • Angular 17+ 高级教程 – Component 组件 の Query Elements
    前言Angular是MVVM框架。MVVM的宗旨是"不要直接操作DOM"。在 Component组件のTemplateBindingSyntax文章中,我们列举了一些常见的DOMManipulation。constelement=document.querySelector<HTMLElement>('.selector')!;element.textContent='value';......
  • Flutter 页面专场动画
    在不同路由(或界面)之间进行切换的时候,许多设计语言,例如Material设计,都定义了一些标准行为。但有时自定义路由会让app看上去更加的独特。为了更好的完成这一点,PageRouteBuilder提供了一个Animation对象。这个Animation能够通过结合Tween以及Curve对象来自定义路由转换......
  • Flutter hero动画
    在Flutter中,图像从当前页面转到另一个页面称为hero动画,相同的动作有时也被称为共享元素过渡。hero动画基本结构在不同页面分别使用两个herowidgets,同时使用配对的标签来实现动画Navigator管理含有app页面的堆栈。推送一个页面或弹出一个Navigator堆栈中的页面会......
  • 十九、显示动画-位置改变
    ArkUI中,产生动画的方式是改变属性值且指定动画参数。动画参数包含了如动画的时长、变化规律(即曲线)等参数,当属性值发生变化后,按照动画参数,从原来的状态过渡到新的状态,即形成一个动画。AnimateParam对象说明名称类型描述durationnumber动画持续时间,单位为毫秒。默认值......
  • lottie 动画在 vue 中的使用
    前言最近我所负责的项目中,我采用了动画效果,并开始使用gif来实现。然而,在实践过程中,我发现gif格式的动画在git中出现了明显的锯齿感,这让我非常困扰。为了追求更完美的表现效果,我最终选择了lottie来实现我的动画需求。我深知动画效果的呈现对于用户体验至关重要,因此我非常......