Là một dự án UI/UX, bendc/animateplus đã đạt 5.9k sao trên GitHub, ngôn ngữ JavaScript. A+ animation module for the modern web
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Animate Plus is a JavaScript animation library focusing on performance and authoring flexibility. It
aims to deliver a steady 60 FPS and weighs less than 3 KB (minified and compressed), making it particularly well-suited for mobile.
Getting started
npm install animateplus or download animateplus.js and start animating things:
import animate from "/animateplus.js";
animate({
elements: "div",
duration: 2000,
delay: index => index * 100,
transform: ["scale(0)", "scale(1)"]
})
.then(options => animate({
...options,
transform: ["translate(0%)", "translate(500%)"]
}));
Preview this example →
Options
elements
Default
Type
null
String | Element | NodeList | Array
Determines the DOM elements to animate. You can either pass it a CSS selector or DOM elements.
Determines the duration of your animation in milliseconds. By passing it a callback, you can define
a different duration for each element. The callback takes the index of each element as its argument
and returns a number.
// First element fades out in 1s, second element in 2s, etc.
animate({
elements: "span",
easing: "linear",
duration: index => (index + 1) * 1000,
opacity: [1, 0]
});
delay
Default
Type
0
Number | Function
Determines the delay of your animation in milliseconds. By passing it a callback, you can define
a different delay for each element. The callback takes the index of each element as its argument
and returns a number.
// First element fades out after 1s, second element after 2s, etc.
animate({
elements: "span",
easing: "linear",
delay: index => (index + 1) * 1000,
opacity: [1, 0]
});
loop
Default
Type
false
Boolean
Determines if the animation should repeat.
direction
Default
Type
normal
String
Determines the direction of the animation. reverse runs the animation backwards, alternate
switches direction after each iteration if the animation loops.
speed
Default
Type
1
Number
Determines the animation playback rate. Useful in the authoring process to speed up some parts of a
long sequence (value above 1) or slow down a specific animation to observe it (value below 1).
optimize
Default
Type
false
Boolean
Forces hardware acceleration during an animation if set to true. Unless you experience performance
issues, it's recommended to leave it off as hardware acceleration comes with potentially harmful
side-effects.
blur
Default
Type
null
Object | Function
Simulates a motion blur effect. Takes an object or a function returning an object that specifies the
strength of the directional blur on the x and y axes. A missing axis defaults to 0, which
disables the blur on that axis.
Defines a callback invoked on every frame of the animation. The callback takes as its argument the
animation progress (between 0 and 1) and can be used on its own without being tied to elements.
Animate Plus lets you animate HTML and SVG elements with any property that takes numeric values,
including hexadecimal colors.
// Animate the radius and fill color of an SVG circle
animate({
elements: "circle",
r: [0, 50],
fill: ["#80f", "#fc0"]
});
Each property you animate needs an array defining the start and end values. For convenience, you can
omit everything but the numbers in the end values.
// Same as ["translate(0px)", "translate(100px)"]
animate({
elements: "span",
transform: ["translate(0px)", 100]
});
These arrays can optionally be returned by a callback that takes the index of each element, just
like with duration and delay.
// First element translates by 100px, second element by 200px, etc.
animate({
elements: "span",
transform: index => ["translate(0px)", (index + 1) * 100]
});
Promise
animate() returns a promise which resolves once the animation finishes. The promise resolves to
the object initially passed to animate(), making animation chaining straightforward and
convenient. The Getting started section gives you a basic promise example.
Since Animate Plus relies on native promises, you can benefit from all the usual features promises
provide, such as Promise.all, Promise.race, and especially async/await which makes animation
timelines easy to set up.
Stops the animations on the elements passed as the argument.
import {stop} from "/animateplus.js";
animate({
elements: "span",
easing: "linear",
duration: index => 8000 + index * 200,
loop: true,
transform: ["rotate(0deg)", 360]
});
document.addEventListener("click", ({target}) => stop(target));
Preview this example →
delay
Sets a timer in milliseconds. It differentiates from setTimeout() by returning a promise and being
more accurate, consistent and battery-friendly. The delay option relies internally on
this method.
import {delay} from "/animateplus.js";
delay(500).then(time => console.log(`${time}ms elapsed`));
Browser support
Animate Plus is provided as a native ES2015 module, which means you may need to transpile it
depending on your browser support policy. The library works as is using <script type=module> in
the following browsers:
Animations play a major role in the design of good user interfaces. They help connecting actions to
consequences, make the flow of interactions manifest, and greatly improve the polish and perception
of a product. However, animations can be damaging and detrimental to the user experience if they get
in the way. Here are a few best practices to keep your animations effective and enjoyable:
Speed: Keep your animations fast. A quick animation makes a software feel more productive and
responsive. The optimal duration depends on the effect and animation curve, but in most cases you
should likely stay under 500 milliseconds.
Easing: The animation curve contributes greatly to a well-crafted animation. The ease-out
options are usually a safe bet as animations kick off promptly, making them react to user
interactions instantaneously.
Performance: Having no animation is better than animations that stutter. When animating HTML
elements, aim for using exclusively transform and opacity as these are the only properties
browsers can animate cheaply.
Restraint: Tone down your animations and respect user preferences. Animations can rapidly feel
overwhelming and cause motion sickness, so it's important to keep them subtle and to attenuate
them even more for users who need reduced motion, for example by using matchMedia("(prefers-reduced-motion)") in JavaScript.
Examples
Stress test: 500 elements animated concurrently.
Burst: Intensive burst animation based on mousemove/touchmove.
Accordion: Animated accordion.
Morphing: CSS polygon morphing using clip-path.
Motion path: Animation along a custom path.
Line drawing: SVG line drawing animation.
Elasticity: SVG circles following your clicks.
External SVG: Animating paths from an external
SVG file.
Anchors: Anchor scrolling animation using change().
bendc/animateplus có 5.9k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/bendc/animateplus. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
bendc/animateplus có phải mã nguồn mở không?
Có — bendc/animateplus phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/bendc/animateplus.
bendc/animateplus có website riêng không?
TopGit chưa ghi nhận URL trang chủ cho bendc/animateplus. Phần README ở tab phía trên thường có link demo, hoặc xem mô tả GitHub của repo.
bendc/animateplus là gì?
bendc/animateplus (bendc/animateplus) là dự án JavaScript trên GitHub. Theo mô tả gốc: A+ animation module for the modern web
bendc/animateplus so với các dự án UI / UX khác thế nào?
bendc/animateplus được TopGit xếp vào nhóm UI / UX, với 5.9k sao GitHub và viết bằng JavaScript. Xem trang chủ đề UI / UX trên TopGit để so sánh với các dự án tương tự theo số sao và mức độ hoạt động.
Cùng nhóm UI / UX còn repo nào?
bendc/animateplus thuộc nhóm UI / UX trên TopGit, cùng 6 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về bendc/animateplus ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/bendc/animateplus là nguồn chính thức.
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về animateplus?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về animateplus.