博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5个你想要在项目上使用的JavaScript动画库
阅读量:4118 次
发布时间:2019-05-25

本文共 12769 字,大约阅读时间需要 42 分钟。

英文 | https://www.ordinarycoders.com/blog/article/top-javascript-animation-libraries

翻译 | 小爱

JavaScript动画库可以用于处理复杂的动画,这些动画可以快速创建强大的视觉效果与组件。使用内置属性可以在几分钟内向你的网站添加旋转,平移,缓动和显示。

我们收集了一些视觉上最有趣的动画库,这些库在页面加载时产生了比较好的视觉效果。

为了快速开发,本文将使用CDN(内容交付网络),但是,所有这些JavaScript库都可以下载并应用到你的项目中。

注意:我们建议你花一些时间在网站的小部分中实施这些JavaScript库。如果你过于着急使用这些动画,则可能会使该站点不堪重负,并且动画看起来可能有点花哨。

1、ScrollReveal

地址:https://scrollrevealjs.org/

ScrollReveal是由朱利安·劳埃德(Julian Lloyd)创建的JavaScript库。使用后,JS库会在HTML元素进入或离开视口时显示它们。与所有主流浏览器兼容,可以轻松地将其添加到所需的任意多个HTML元素中。

(1)将ScrollReveal CDN添加到<head>元素:

      
Title
...

一般而言,可以将JavaScript CDN添加到<head>元素中,也可以将其添加到结束<body>标记之前。但是,ScrollReveal文档建议将CDN添加到<head>元素中,以防止在实现ScrollReveal之前出现内容闪烁。

如果你使用的是Bootstrap,其添加方式如下:

      
Title
...

你使用的是Bootstrap,只需在Bootstrap CSS CDN之后添加ScrollReveal CDN。

      
Title
...

将ScrollReveal CDN添加到该<head>元素,并指定ScrollReveal的固定版本并使用最小的发行版。

(2)确定要设置动画的元素:

#custom ScrollReveal class
Card title

Some quick example text to build on the card title and make up the bulk of the card's content.

Go somewhere

ScrollReveal根据元素的类属性值调用它们。我们将为此示例添加一个自定义类,称为reveal-card。

(3)使用ScrollReveal构造函数:

// Card revealScrollReveal().reveal('.reveal-card');

添加了CDN并标识了类属性值后,我们现在可以使用构造函数ScollReveal()。并添加它,然后添加reveal()方法以创建显示动画。在此方法中,将自定义类指定为目标。

(4)将构造函数添加到script.js文件或<script>元素中:

      
Title
...

该脚本可以添加到单独的JS文件中,也可以直接放置在HTML模板中。上面的代码将其直接放置在HTML模板中。

如果你有兴趣将其添加到单独的JS文件中,请学习如何使用Django静态,地址:https://www.ordinarycoders.com/blog/article/django-static-files-img-js-css。

(5)在ScrollReveal中添加可自定义的选项:

要添加延迟:

// Card revealScrollReveal().reveal('.reveal-card', {delay:500});

你还可以选择向显示方法添加选项,例如延迟。以毫秒为单位。

要添加持续时间:

// Card revealScrollReveal().reveal('.reveal-card', {duration:500});

持续时间是另一个ScrollReveal选项,以毫秒为单位。它控制动画完成的时间。

要添加间隔:

// Card revealScrollReveal().reveal('.card', {interval:500});

如果你希望一次显示一组卡片或物件,则间隔选项非常有用。使用Bootstrap卡类属性而不是使用自定义类属性值,是将选项添加到所有卡元素的简便方法。同样,这以毫秒为单位。

(6)将加载隐藏的自定义类添加到CSS:

      
Title
...

将CDN添加到<head>元素中有助于防止闪烁,但是仅在快速Internet连接的情况下。要解决互联网速度缓慢的问题,请创建一个名为的自定义CSS声明load-hidden。

这可以在stylesheet.css文件中,也可以在<style>HTML模板中的元素中,就像构造函数一样。

#a load-hidden to the element
Card title

Some quick example text to build on the card title and make up the bulk of the card's content.

Go somewhere

需要将自定义CSS声明作为类属性值添加到要显示的HTML元素中。然后在页面加载时,将不再有任何闪烁。

2、Typed.js

地址:https://mattboldt.github.io/typed.js/docs/

第二个JavaScript库就是Typed.js,这是Matt Boldt开发的库。该库将打印出你选择的字符串,就好像你在输入文字一样。像以前的库一样,可以通过下载库或使用CDN来添加Typed.js。

(1)将Typed.js CDN添加到<body>元素中:

      
Title ...

在结束<body>标记之前添加CDN 。

(2)将Typed.js自定义id属性添加到模板:

Typed.js使用id属性值而不是class属性值。在HTML模板中,添加带有自定义id属性值的span标签(在本例中)。

(3)添加Typed.js脚本:

      
Title ...

然后在<script>HTML元素或单独的script.js文件中,添加一个JavaScript变量并将其strings作为属性调用。将字符串以数组的形式列出,并在每个短语周围加上引号。上面的示例只是将脚本添加到HTML模板中。

(4)自定义Typed.js:

要增加打字速度:

var typed = new Typed('#typed', {    strings: ['Type anything you want', 'It can type multiple strings'],    typeSpeed: 80,  });

加快字母输入速度(以毫秒为单位)。

要添加启动延迟:

var typed = new Typed('#typed', {    strings: ['Type anything you want', 'It can type multiple strings'],    startDelay: 80,  });

为键入增加开始延迟。这也以毫秒为单位。

要增加后退速度,请执行以下操作:

var typed = new Typed('#typed', {    strings: ['Type anything you want', 'It can type multiple strings'],    backSpeed: 80,  });

指定后退速度将确定键入的后退速度(以毫秒为单位)。

要添加智能退格键:

var typed = new Typed('#typed', {    strings: ['Type anything you want', 'It can type multiple strings'],    smartBackspace: true, // this is a default  });

添加智能退格键,仅允许在与先前字符串不匹配的字符串部分上进行退格。

例如,如果你有两个字符串“我知道CSS”和“我知道JS”,则智能退格键将仅退格为“ CSS”,以保留在第二个字符串中重复的字符串部分。

要添加循环:

var typed = new Typed('#typed', {    strings: ['Type anything you want', 'It can type multiple strings'],    loop: true,    loopCount:1,  });

讨论的最终定制是loop。loopCount如果希望指定循环数,请选择循环键入内容并添加属性。

有关更多属性,请查看下面链接的文档。

Typed.js文档地址:https://mattboldt.github.io/typed.js/docs/

3、Anime.js

地址:https://animejs.com/

转到Anime.js。这个JavaScript动画库是由朱利安·加尼尔(Julian Garnier)创建的,可在Chrome,Safari,IE / Edge,Firefox和Opera浏览器上运行。它可以用于设置各种目标的动画,包括DOM节点,CSS选择器或JavaScript对象。

(1)添加Anime.js CDN:

      
Title ...

将Anime.js CDN添加到HTML文档的底部。

(2)找到要设置动画的元素,类或ID:

Card title

Some quick example text to build on the card title and make up the bulk of the card's content.

Go somewhere

在此示例中,我们将使用cardclass属性值对卡片进行动画处理,但是,你也可以选择对HTML元素本身或ID进行动画处理。

(3)添加Anime.js函数:

      
Title ...

最后,必要的代码是指定目标和属性的JavaScript函数。上面的示例将卡片在页面加载时向右平移100px。

(4)使用其他Anime.js属性:

要翻译对象:

let animation = anime({    targets: '.card',    translateX: 100,    translateY: 100,});

translateX沿X轴从左或右移动对象,同时translateY向上或向下移动对象。单位是像素。

缩放对象:

let animation = anime({     target:'.card',    scaleX:0.5,    scaleY:0.5,});

scaleX水平,scaleY垂直,只需要更改对象的大小,同时更改水平与垂直大小。请注意,如果你在X和Y轴上的缩放比例不均匀,则对象将看起来被压缩或拉长。

旋转对象:

let animation = anime({    targets: '.card',    rotateX: 0.5,    rotateY: 0.5,});

rotateX沿X轴rotateY旋转对象,同时沿Y轴旋转对象。

倾斜对象:

let animation = anime({     target:'.card',    skewX:1,    skewY:4,});

skewX沿X轴skewY倾斜对象,而垂直倾斜对象。

设置持续时间:

let animation = anime({     target:'.card',    duration:6000 });

持续时间以毫秒为单位,并确定动画的总时间。

设置延迟:

let animation = anime({     target:'.card',    duration:6000 });

延迟也以毫秒为单位进行度量,并指定动画何时开始播放。

这些只是开始使用JS库的一些基本属性。但是Anime.js属性参数很强大,一起使用时会产生整体效果。

因此,你可以查看文档以获取更多想法。

Anime.js文档:https://animejs.com/

4、Chart.js

地址:https://www.chartjs.org/

Evert Timberg被认为是Chart.js的作者,它是一个JavaScript库,允许开发人员快速将图表添加到你的项目中。有8种图表可供选择,所有图表都是开源的。此库的图表显示干净,如果你想要这种干净的效果,那它是你的最佳选择。

(1)将Chart.js CDN添加到<head>元素:

      
Title
...

在结束<head>标记之前添加Chart.js CDN 。

(2)将图表添加到模板:

   
 
 

要调用图表,<canvas>请在HTML模板中添加一个元素。然后指定一个自定义的id以及width和height属性。这将是图表在HTML文档中的位置。

(3)添加图表数据:

要创建条形图:

var ctx = document.getElementById('myChart').getContext('2d');var myChart = new Chart(ctx, {    type: 'bar',    data: {        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],        datasets: [{            label: '# of Votes',            data: [12, 19, 3, 5, 2, 3],            backgroundColor: [                'rgba(255, 99, 132, 0.2)',                'rgba(54, 162, 235, 0.2)',                'rgba(255, 206, 86, 0.2)',                'rgba(75, 192, 192, 0.2)',                'rgba(153, 102, 255, 0.2)',                'rgba(255, 159, 64, 0.2)'            ],            borderColor: [                'rgba(255, 99, 132, 1)',                'rgba(54, 162, 235, 1)',                'rgba(255, 206, 86, 1)',                'rgba(75, 192, 192, 1)',                'rgba(153, 102, 255, 1)',                'rgba(255, 159, 64, 1)'            ],            borderWidth: 1        }]    },});

然后将类型,数据和图表颜色添加到<script> HTML元素。上面的脚本将图表指定为条形图,可以直接在<canvas>HTML元素之后添加。

要创建折线图:

var ctx = document.getElementById('myChart')。getContext('2d'); var myChart = new Chart(ctx,{     type:'line',    data:{         ...         }]     },});

数据以与条形图相同的格式添加。唯一需要更改的是type。

要创建雷达图:

var ctx = document.getElementById('myChart')。getContext('2d'); var myChart = new Chart(ctx,{     type:'radar',    data:{         ...         }]     },});

像条形图和折线图一样添加数据。

要创建一个甜甜圈图:

var ctx = document.getElementById('myChart').getContext('2d');var myChart = new Chart(ctx, {    type: 'doughnut',    data: {        datasets: [{            data: [70,10,6],           borderColor:[              "#3cba9f",              "#ffa500",              "#c45850",           ],           backgroundColor: [              "rgb(60,186,159,0.1)",              "rgb(255,165,0,0.1)",              "rgb(196,88,80,0.1)",           ],              borderWidth:2,         }]    },});

甜甜圈图数据的格式也与此类似。

创建饼图:

var ctx = document.getElementById('myChart').getContext('2d');var myChart = new Chart(ctx, {    type: 'pie',    data: {        datasets: [{            data: [70,10,6],           borderColor:[              "#3cba9f",              "#ffa500",              "#c45850",           ],           backgroundColor: [              "rgb(60,186,159,0.1)",              "rgb(255,165,0,0.1)",              "rgb(196,88,80,0.1)",           ],              borderWidth:2,         }]    },});

饼图也一样。

要创建极地面积图:

var ctx = document.getElementById('myChart').getContext('2d');var myChart = new Chart(ctx, {    type: 'polarArea',    data: {        datasets: [{            data: [70,10,6],           borderColor:[              "#3cba9f",              "#ffa500",              "#c45850",           ],           backgroundColor: [              "rgb(60,186,159,0.1)",              "rgb(255,165,0,0.1)",              "rgb(196,88,80,0.1)",           ],              borderWidth:2,         }]    },});

并带有极地面积图。

要创建气泡图:

var ctx = document.getElementById('myChart').getContext('2d');var myChart = new Chart(ctx, {    type: 'bubble',    data: {        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],        datasets: [{            label: '# of Votes',            data: [              {x: -10, y: 3},              {x: 4, y: 10},              {x: 10, y: 5}            ],            ...        }]    },});

对于气泡图,需要将x和y点定义为数据。

要创建散点图:

var ctx = document.getElementById('myChart').getContext('2d');var myChart = new Chart(ctx, {    type: 'scatter',    data: {        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],        datasets: [{            label: '# of Votes',            data: [              {x: -10, y: 3},              {x: 4, y: 10},              {x: 10, y: 5}            ],            ...        }]    },});

对于散点图,还需要将x和y点定义为数据。

(4)使用Chart.js选项:

添加图表图例:

var chart = new Chart(ctx, {    type: 'bar',    data: data,    options: {        legend: {            display: true,            labels: {                fontColor: 'rgb(255, 99, 132)'            }        }    }});

添加填充:

var chart = new Chart(ctx,{     type:'bar',    data:data,    options:{         layout:{             padding:{                 left:50,                right:0,                top:0,                bottom:0             }         }     } }});

添加标题:

var chart = new Chart(ctx,{     type:'line',    data:data,    options:{         title:{             display:true,            text:'Custom Chart Title'         }     } });

有关更多选项,请参见下面链接的文档,或查看如何使用Chart.js |。11 Chart.js示例。

我们仅介绍了一些基础知识以帮助你入门。

Chart.js文档:https://www.chartjs.org/

5、Slick

地址:https://kenwheeler.github.io/slick/

Slick是一个创建轮播图比较方便的JS库,它在创建轮播图方面的功能比较强大,且省时省力。由Ken Wheeler制造的Slick是“将需要的最后一个转盘”。

(1)将Slick CDN添加到文档中:

      
Title
...

首先,你可以将Slick CSS CDN添加到<head>元素。然后在<body>元素的末尾添加Slick JS CDN。你还需要在Slick CDN之前添加jQuery和jQuery Migrate CDN,此库才能正常运行。

(2)创建HTML轮播:

然后,转到HTML模板,创建一个具有自定义类属性值的新除法元素,并嵌套等于所需幻灯片数量的除法元素。

如果你要使用Django模型:

如果你要使用轮播来显示大量商品或产品(例如卡片),建议你使用Django模型,以使用相同的代码快速创建所需数量的幻灯片。

(3)添加Slick JS函数:

$(document).ready(function(){  $('.carousel').slick();});

要使轮播正常运行,你需要做的最后一件事是位于CDN之后的JavaScript函数。

      
Title
...

你可以选择将JS直接放置在CDN下方,也可以使用Django load static将其作为静态元素加载。刷新页面时,会有一个轮播,一次显示一张幻灯片。

(4)添加Slick JS函数:

对于点:

$(document).ready(function(){  $('.carousel').slick({  dots:true,  });});

将设置添加dots为布尔值(即 true或false)。

对于箭头:

$(document).ready(function(){  $('.carousel').slick({  arrows:true,  });});

将设置添加arrows为布尔值(即 true或false)。

对于居中的幻灯片:

$(document).ready(function(){  $('.carousel').slick({  centerMode:true,  });});

用于centerMode 使卡片在视图中居中。

设置幻灯片的速度:

$(document).ready(function(){  $('.carousel').slick({  speed:600,  });});

速度是一个以毫秒为单位的时间整数。

要添加自动播放:

$(document).ready(function(){  $('.carousel').slick({  autoplay:true,  autoplaySpeed:1000,  });});

可以将自动播放添加为布尔值,并且将自动播放速度设置为以毫秒为单位的整数。

对于多张幻灯片:

$(document).ready(function(){  $('.carousel').slick({  slidesToShow: 3,  dots:true,  centerMode: true,  });});

要一次显示多张幻灯片,请设置slidesToShow为整数。

同样,这些只是JS库的基础,但是请参阅文档以获取更多设置选项。

文档地址:https://kenwheeler.github.io/slick/

感谢你的阅读,如果有什么问题,请在留言区给我留言。

学习更多技能

请点击下方公众号

转载地址:http://rmbpi.baihongyu.com/

你可能感兴趣的文章
web.py 0.3 新手指南 - RESTful doctesting using app.request
查看>>
web.py 0.3 新手指南 - 使用db.query进行高级数据库查询
查看>>
web.py 0.3 新手指南 - 多数据库使用
查看>>
一步步开发 Spring MVC 应用
查看>>
python: extend (扩展) 与 append (追加) 的差别
查看>>
「译」在 python 中,如果 x 是 list,为什么 x += "ha" 可以运行,而 x = x + "ha" 却抛出异常呢?...
查看>>
浅谈JavaScript的语言特性
查看>>
LeetCode第39题思悟——组合总和(combination-sum)
查看>>
LeetCode第43题思悟——字符串相乘(multiply-strings)
查看>>
LeetCode第44题思悟——通配符匹配(wildcard-matching)
查看>>
LeetCode第45题思悟——跳跃游戏(jump-game-ii)
查看>>
LeetCode第46题思悟——全排列(permutations)
查看>>
LeetCode第47题思悟—— 全排列 II(permutations-ii)
查看>>
LeetCode第48题思悟——旋转图像(rotate-image)
查看>>
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>