【Anime.js】——JavaScript动画库:Anime.js

news2024/11/25 0:42:20

官方文档

官网定义:

anime.js 是一个简便的JS动画库,用法简单而且适用范围广,涵盖CSS,DOM,SVG还有JS的对象,各种带数值属性的东西都可以动起来。

一、搭建开发环境

1、新建一个文件夹 ,用vs code打开,将其添加到工作区。

2、打开终端

在终端输入:

npm i animejs --save

 3、创建文件夹,使用anime.js包

位置如图。

4、实现一个简易的动画样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: brown;
        }
    </style>
</head>
<body>
    <div></div>
    <script src="node_modules/animejs/lib/anime.min.js"></script>
    <script>
        anime({
            targets:'div',
            translateX:'400px',
            easing:'linear',
            duration:2000
        })
    </script>
</body>
</html>

 就能实现一个方块匀速运动的效果了。

 二、基本功能和使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <div id = 'first'></div>
    <div class = 'second'></div>
    <div class = 'second'></div>
    <div class = 'second'></div>
    <script src="../node_modules/animejs/lib//anime.min.js"></script>
    <script>
        anime({
            targets:'#first',
            translateX:'400px'
        })
    </script>
</body>
</html>

 第一个div动:

 如果把代码改成这样:

 <script>
        anime({
            targets:'.second',
            translateX:'400px'
        })
 </script>

 可以看到,targets用来作为选择器来选择移动元素。 

开始制作动画

anime({
targets: 'div',
translateX: [
    { value: 100, duration: 1200 },
    { value: 0, duration: 800 }
],
rotate: '1turn',
backgroundColor: '#FFF',
duration: 2000,
loop: true
});

targets属性定义了制作动画的元素或js对象:

  • css选择器 如:'div','#el path';
  • DOM元素 如: document.querySelector('.item')
  • 节点列表 如: document.querySelectorAll('.item')
  • 对象
  • 数组 如:['div', '.item', domNode]

动画属性

1、CSS:

  • opacity 透明度 0~1
  • backgroundColor
  • fontSize
  • borderRadius
  • backgroundColor

2、transforms变换:

  • translateX x轴的值
  • translateY y轴的值
  • retate 旋转
  • scale 大小变换 例:scale:2   scale:0.5   
  • rotate 旋转 例:rotate:'1turn'(旋转一周)

3、对象属性

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
    </style>
</head>

<body>
    <div id="JSobjectProp">
        <span>{"myProperty":"0"}</span>
    </div>
    <script src="../node_modules/animejs/lib//anime.min.js"></script>
    <script>
        var myObject = {
            prop1: 0,
            prop2: '0%'
        }
        var JSobjectProp = anime({
            targets: myObject,
            prop1: 50,
            prop2: '100%',
            easing: 'linear',
            round: 1,
            update: function () {
                var el = document.querySelector('#JSobjectProp span');
                el.innerHTML = JSON.stringify(myObject);
            }
        });
    </script>
</body>

</html>

开始: 

 

 变为:

4、DOM属性

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    </style>
</head>

<body>
    <input class="text-output" value="0">
    <script src="../node_modules/animejs/lib//anime.min.js"></script>
    <script>
        var domAttributes = anime({
            targets: 'input',
            value: 1000, // value变化为1000
            round: 100, //表示小数,把1分成了100份,也就是展示两位小数点
            easing: 'easeInOutExpo'
        });
    </script>
</body>

</html>

 5、给每个属性单独设置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
    </style>
</head>
<body>
    <div></div>
    <script src="../node_modules/animejs/lib//anime.min.js"></script>
    <script>
        anime({
                targets: 'div',
                translateX: {
                    value: 250,//通过value来设置值
                    duration: 800 //表示延长动画效果的时间
                },
                rotate: {
                    value: 360,
                    duration: 1800,
                    easing: 'easeInOutSine'
                },
                scale: {
                    value: 2,
                    duration: 1600,
                    delay: 800,
                    easing: 'easeInOutQuart'
                },
                delay: 250 // All properties except 'scale' inherit 250ms delay
            });
    </script>
</body>
</html>

 6、属性参数

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
    </style>
</head>

<body>
    <div></div>
    <script src="../node_modules/animejs/lib//anime.min.js"></script>
    <script>
        anime({
            targets: 'div',
            translateX: 270,
            direction: 'alternate',
            loop: true,
            // 接收三个参数:
            // el:表示当前目标元素
            // i: 表示当前目标元素下标
            // l:表示目标元素的总长度
            delay: function (el, i, l) {
                return i * 100;
            },
            endDelay: function (el, i, l) {
                return (l - i) * 100;
            }

        });
    </script>
</body>

</html>

随学随记,暂时记到这


笔记参考:https://www.jianshu.com/p/39fc8a837b31 

官方文档:https://animejs.com/documentation/#functionBasedParameters

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CpG ODN丨艾美捷ODN 1982 (synthetic)参数说明

艾美捷CpG ODN系列——ODN 1982 (synthetic)&#xff1a;具有硫代磷酸酯骨架的GpC寡脱氧核苷酸。 艾美捷CpG ODN丨ODN 1982 (synthetic)化学性质&#xff1a; 序列&#xff1a;5-tccatgagcttcctgagct-3&#xff08;小写字母表示硫代磷酸酯键&#xff09;。 MW&#xff1a;638…

Java-1214

Spring5总体学习内容 Spring基本概念IOC容器AopJdbcTemplate事务管理Spring5新特性 框架概述 Spring是轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分&#xff1a;IOC、Aop IOC&#xff1a;控制反转&#xff0c;把创建对象的过程交给Spri…

【ant-design】生态介绍和表单设计器 汇总

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ ant-design生态ant-designant-design-vueant-design-pro2️⃣ 表单设计器form-render - 阿里团队开源表单设计器&#xff0c;自家 Antd UI 框架友好form-create - 支持Vue3 及 ElementPlusUI、AntDesign、iview 框架Form Genera…

如何建立好客户信任关系?

2022年9月8日&#xff0c; 一个秋高气爽阳光明媚的日子。 正当我优雅的端起coffee&#xff0c; 专注投入早A晚C的重要一环时&#xff0c; 光头老邱按下一沓资料&#xff0c; 一并丢下经典语录&#xff1a; 这个客户对我们很重要&#xff01; emmm...... 重要的客户托付给…

Centos实现软路由

因公司需求,需要一台Centos主机,既需要做服务器,又要做路由器,要求能够对外提供有线和WIFI,还要求在学校复杂的局域网环境中,能够通过IP直接访问。带着需求去华强北找符合这样设备,华强北给的方案是爱快软路由+centos虚拟机,满足了服务器和路由器功能,但是没法使用学校…

理解频域、时域、FFT和加窗 加深对信号的认识

学习信号时域和频域、快速傅立叶变换(FFT)、加窗&#xff0c;以及如何通过这些操作来加深对信号的认识。 理解时域、频域、FFT傅立叶变换有助于理解常见的信号&#xff0c;以及如何辨别信号中的错误。尽管傅立叶变换是一个复杂的数学函数&#xff0c;但是通过一个测量信号来理…

[附源码]Nodejs计算机毕业设计基于的二手车商城Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

java计算机毕业设计springboot+vue小区防疫健康信息管理及出入登记平台

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以小区防疫健康信息管理及出入登记平台的实际应用需要出发,架构系统来改善现小区防疫健康信息管理及出入登记平台工作流程繁琐等问题。不仅如此以操作…

浅析即时通讯音视频开发多人实时音视频聊天架构

移动互联网发展迅猛&#xff0c;目前实时音视频技术已被广泛地应用在了实时在线教育、智能家居、在线直播、安防监控等领域。这之中&#xff0c;诸如多人视频会议、在线实时视频教育等场景&#xff0c;跟传统的一对一实时音视频聊天&#xff0c;在技术架构的实现上有很大不同。…

Java+mysql基于JSP的家教兼职网站

随着家教兼职网站需求和在线家教兼职网站渗透率的提升,中国家教兼职网站在线市场将释放巨大潜力,家教兼职网站系统的建设和发展成为业界广泛关注的重点,本文将对此进行分析,以期为我国家教兼职网站电子商务的发展提供参考。目前对于国内外知名兼职平台,各媒体都已经宣传的比较到…

多肽偶联壳聚糖川芎嗪纳米粒pEGF-CS-TMP-NPs

多肽偶联壳聚糖川芎嗪纳米粒pEGF-CS-TMP-NPs 中文名称&#xff1a;多肽偶联壳聚糖川芎嗪纳米粒 英文名称&#xff1a;pEGF-CS-TMP-NPs 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 外观:固体或粘性液体 包装&#xff1a;瓶装/袋装 …

kubevirt

Kubevirt 是Redhat开源的以容器方式运行虚拟机的项目&#xff0c;以k8s add-on方式&#xff0c;利用k8s CRD为增加资源类型VirtualMachineInstance&#xff08;VMI),使用容器的image registry去创建虚拟机并提供VM生命周期管理。kubevirt提供vm-import-operator可以支持从vmwar…

iNavFlight之RC遥控MSP协议

iNavFlight之RC遥控MSP协议1. RC摇杆MSP协议2. 地面站配置 & MSP遥控器2.1 iNav地面站-配置2.2 iNav地面站-MSP遥控器3. RC摇杆总体逻辑框架4. RC摇杆代码设计框架5. MSP摇杆代码设计5.1 rxMspInit5.2 rxMspFrameStatus5.3 rxMspReadRawRC5.4 rxMspFrameReceive6. 整体Rx业…

中医药信息网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;关于我们.、联系我们.、宣传资料、中药信息、方剂信息、名医信息 管理员功能&#xff1a; 1、管理…

科技向善:用OpenVINO减少食物浪费

作者&#xff1a;Anisha Udayakumar 翻译&#xff1a;张晶 项目背景 您是否知道每年大约有2300亿美元的食物被浪费&#xff0c;其中高达五分之一属于可食用农产品&#xff1f;我们都在自己的家中经历过某种类型的食物浪费&#xff0c;但最大量的浪费发生在杂货店的新鲜食品和…

多网点跨区域远程监测?银行监测一步到位,太方便了

随着人民生活水平不断提高&#xff0c;金融行业得到不断发展&#xff0c;同时对其业务能力提出更高的要求&#xff0c;因此银行的组织架构也不断扩充&#xff0c;各大银行的基本架构可为总行、省分行、市支行、分理处、ATM网点组成。 建设一套数据中心与分行及营业网点的机房监…

Polygon zkEVM 审计及递归证明

1. 引言 Polygon zkEVM自2022年12月1日已开始审计&#xff0c;为未来的主网上线做准备。审计公司有2个&#xff1a;Spearbit和Hexens&#xff0c;审计的内容有&#xff1a; Polygon zkEVM采用模块化设计&#xff0c;审计的内容主要分为&#xff1a; client端&#xff1a;包括…

类加载器、类加载器的过程、类加载的分类、双亲委派模型

文章目录1.类加载器1.1类加载器1.2类加载的过程1.3类加载的分类1.4 双亲委派模型1.5 ClassLoader 中的两个方法1.类加载器 1.1类加载器 作用 负责将.class文件&#xff08;存储的物理文件&#xff09;加载到内存中 1.2类加载的过程 类加载时机 创建类的实例&#xff08;对象…

【内网安全-通讯上线】通讯上线基础知识

目录 一、基础知识 1、关键词&#xff1a; 2、代理技术 3、IP隧道技术 4、使用场景 二、示例 1、不出网上线 1&#xff09;理论&#xff1a; 2&#xff09;示例&#xff1a; 三、代理技术 1、dome 2、第一步&#xff1a;网络通讯 3、第二步&#xff1a;控制上线 …

word插件grammerly,边写论文边修改语法

下载网址&#xff1a;报错信息 下载网址&#xff1a;Grammarly for MS Office | Grammarly 官网安装提示&#xff1a; Install Grammarly for all users by following these steps: Uninstall your current version of the Grammarly add-in via Control Panel > Program…