准备好把你的网页设计提升到一个新的水平了吗?JavaScript 动画库是可以将静态页面转换为动态、引人注目的体验的秘密武器。无论您是经验丰富的开发人员还是刚刚起步的开发人员,这些库都能提供强大的工具,将您的创意愿景变为现实。让我们深入了解 12 年掀起波澜的 2024 大 JavaScript 动画库!
GSAP就像动画库的瑞士军刀。它坚固耐用、用途广泛,深受全球专业人士的喜爱。
例:
gsap.to(".box", {duration: 2, x: 300, rotation: 360, ease: "bounce"});
这个简单的代码使框元素向右移动 300 像素,同时旋转 360 度,具有弹性效果。
Anime.js证明,有时候,少即是多。它的轻巧特性不会在功率上妥协。
例:
anime({
targets: '.circle',
translateX: 250,
scale: 2,
duration: 3000
});
此动画在 3 秒内平滑移动并放大圆形元素。
Velocity.js都是关于性能的,同时又不牺牲功能。这就像在你的动画上绑上火箭一样!
例:
$(".element").velocity({
translateY: "200px",
rotateZ: "45deg"
}, 1000);
此代码将元素向下转换 200 像素,并在一秒钟内将其旋转 45 度。
Three.js开辟了一个全新的维度 - 从字面上看!它是您在浏览器中创建令人惊叹的 3D 图形的门户。
例:
const geometry=new THREE.BoxGeometry();
const material=new THREE.MeshBasicMaterial({color: 0x00ff00});
const cube=new THREE.Mesh(geometry, material);
scene.add(cube);
此代码段创建了一个简单的绿色 3D 立方体,您可以对其进行操作和动画制作。
Lottie 将复杂的动画变成了小菜一碟。这就像你的口袋里有一个专业的动画师!
例:
lottie.loadAnimation({
container: document.getElementById('lottie-container'),
renderer: 'svg',
loop: true,
autoplay: true,
path: 'data.json'
});
此代码从 JSON 文件加载并播放 Lottie 动画。
Popmotion就像一条变色龙 - 它可以轻松适应任何JavaScript环境。
例:
animate({
from: 0,
to: 100,
onUpdate: latest=> console.log(latest)
});
这个简单的动画从 0 到 100 计数,记录每个值。
Mo.js使创建动态图形就像用蜡笔绘图一样简单,但结果却更加壮观!
例:
const burst=new mojs.Burst({
radius: { 0: 100 },
count: 5,
children: {
shape: 'circle',
fill: { 'cyan' : 'yellow' },
duration: 2000
}
});
此代码创建一个连拍动画,其中包含五个扩展和改变颜色的圆圈。
Typed.js为您的文本增添了人情味。这就像在您的网站上有一个幽灵打字员!
例:
new Typed('#element', {
strings: ['Hello, World!', 'Welcome to my website!'],
typeSpeed: 50
});
这将创建一个在两个短语之间交替的键入动画。
AniJS 就像魔术一样 - 您无需编写任何代码即可创建动画!
例:
<div data-anijs="if: click, do: fadeIn, to: .target"></div>
此 HTML 属性在单击时创建淡入动画。
Framer、Motion 和 React 就像花生酱和果冻一样搭配在一起。它是你的 React 工具包的完美补充。
例:
<motion.div
animate={{ x: 100 }}
transition={{ duration: 2 }}
/>
这个 React 组件在 2 秒内向右移动 100 个像素。
ScrollMagic 将滚动变成一场冒险。这就像在用户滚动浏览您的网站时创建一部迷你电影!
例:
new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 300
})
.setTween("#animate", {scale: 2.5})
.addTo(controller);
这将创建一个动画,该动画在用户滚动时缩放元素。
Motion One 证明了好东西来自小包装。它很轻,但很有冲击力!
例:
animate("#box", { x: 100 }, { duration: 1 });
这条简单的线在一秒钟内将一个盒子向右移动 100 像素。
你有这12 个令人惊叹的 JavaScript 动画库,可以将您的 Web 项目从普通转变为非凡。无论您是创建简单的悬停效果还是复杂的 3D 世界,这些库都能满足您的需求。
请记住,最适合您的库取决于您的特定需求和项目要求。不要害怕尝试不同的选项来找到您的完美匹配。
在之前的一篇文章《默认的input标签太丑?教你如何使用CSS写出带动画的样式》中有讲过如何实现一个漂亮的input标签样式。
既然已经折腾了,今天这篇文章我们就继续折腾,看看如何通过CSS3实现一个带动画的checkbox样式?
CSS3
感兴趣的可以自行去github上看源文件,地址如下:
https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html
checkbox作为多选框,在form表单中的使用频率是非常高的,例如问卷调查的多选题,个人兴趣爱好的选择时都会用到多选框。
而浏览器默认的checkbox样式都很丑,看起来就是一个小小的方框,虽然Bootstrap已经有好看的checkbox样式,但是它不支持动画,在交互上仍然存在缺陷,所以我们就试图自己写出一个带动画的checkbox效果。
首先我们来看看checkbox的动态效果图(中间的黑色圆圈实际为录制GIF图时产生的,请忽略)
checkbox效果图
接下来我们具体分析下页面的元素组成,主要包括以下部分。
默认的checkbox标签,将其display设置为none,隐藏起来。
label标签,表现为实际显示的动态选中和未选中效果。
我们需要达到的效果是,在未选中checkbox时,默认为灰色的边框,白色的背景;在选中checkbox时,改变背景色,出现白色的打勾动画效果。
在这部分,我们来具体分析下页面的代码组成。
HTML
首先是页面的HTML部分代码,如上一部分所示,页面其实只有两个元素组成,这两个元素放在一个容器下,故HTML代码如下所示。
HTML部分代码
CSS
我们来看看CSS部分的代码,因为CSS部分代码比较多,我们一一来分析。
首先是外层container的样式,同时对页面的html和body也做一些简单处理,代码如下所示。
container样式
其次是checkbox标签的样式,因为原生的checkbox除了在传输数据时有用处,在页面呈现上并没有作用,故设置display:none;将其隐藏。
checkbox样式
然后是最重要的label部分,在未点击之前label呈现一个正方形,有基本的样式。
基本样式
在点击方形框后,出现的对勾是通过伪元素::before和::after实现的,对勾实际为两个矩形拼接而成,左侧的矩形用::after元素表示,右侧的矩形用::before元素表示。两者的通用样式通过如下代码实现。
伪元素实现
然后是针对::before和::after所特有的样式,因为两者的位置和旋转的角度不同,代码也会出现差异。
特有样式
然后是定义的打钩的动画效果,这里使用keyframes关键字定义,考虑到浏览器兼容性,定义的动画具有不同的前缀。定义的动画也包括两部分,首先是右侧的矩形动画效果。
右侧矩形动画效果
然后是左侧矩形的动画效果,同样考虑到浏览器的兼容性,样式代码如下。
左侧矩形动画
至此,所有代码都已讲解完毕,如果运行之后就会看到文章开始的动画效果。
本篇文章主要讲的是如何使用自定义的动画完成checkbox效果,感兴趣的可以直接去github上看源文件代码,后续会写一个跟开关switch有关的文章,敬请期待~
1.什么是CSS?
2.为什么使用CSS?
3.CSS作用
动画的原理
定义
概念
浏览器渲染过程步骤
三棵树
如何更新样式
一般JS来更新样式
三种更新方式
1.JS/CSS》样式》布局》绘制》合成
全走
比如:div.remove()会触发当前消失,其它元素relayout。
2.JS/CSS》样式》绘制》合成
跳过Layout
比如:改变背景色,直接repaint+composite。
3.JS/CSS》样式》合成
跳过Layout和Paint
比如:改变transform,直接composite。
CSS动画优化
一. transform
四个常用功能
经验:
transform: translate
经验:
#demo{
left:50%;
top:50%;
transform:translate(-50%,-50%);
}
transform: scale
经验:
transform: rotate
经验:
transform: skew
经验:
transform 可以组合使用
transition 过渡
作用
语法
并不是所有的属性都能过度
二. animation
缩写语法
使用animation
如何让动画停在最后一帧
@keyframes 完整语法
本文为作者本人的原创文章,著作权归作者本人和饥人谷所有,转载务必注明来源。
*请认真填写需求信息,我们会在24小时内与您取得联系。