velocity.js로 구냐구냐 SVG 그리기
9199 단어 Velocity.js자바스크립트SVG
소개
로고나 캐치등에서 가끔 보이는, 곤약과 움직이는 SVG를 velocity.js를 사용해 실장해 보았습니다.
<이런 느낌의 녀석 (무슨 말을 하면 좋을까요. 라인 애니메이션, 스트로크 애니메이션, 라든지?)>
온라인에서 쉽게 만들 수있는 서비스도있는 것 같습니다.
h tp : // / zy ぃ 네 파인 r. 인후 /
준비하는 것
velocity.js란?
- 애니메이션을 실현하는 JS 라이브러리
- 다른 라이브러리와 CSS 애니메이션보다 빠릅니다.
- jQuery 애니메이션과 비슷한 설명이 가능
- jQuery를 사용하지 않아도 작동합니다.
구현
index.html
<!-- SVGファイルの読み込み -->
<object id="logo" data="./logo.svg" type="image/svg+xml">
script.js
$(function() {
$(window).load(function() {
var doc = document.getElementById('logo').contentDocument;
var $path = $(doc).find("path");
// pathの長さをcssにセットする関数
function setPathLengthToStyle($obj) {
var len;
var arr = [];
Array.prototype.slice.call($obj).forEach(function(path, i) {
arr.push(path);
len = arr[i].getTotalLength() + 30 + 1 | 0; // +30は、Firefox対策。+1 | 0 は小数点切り上げ
arr[i].style.strokeDasharray = len;
arr[i].style.strokeDashoffset = len;
});
}
// CSSの設定
$path.css({
stroke : "#4aa3df",
fill : "none",
strokeWidth : 1
// strokeDasharray, strokeDashoffsetは setPathLengthToStyle()で設定
});
setPathLengthToStyle($path);
// アニメーション描画
$path
.velocity({ strokeDashoffset : 0 }, 3000 , "swing")
.velocity({ fill: "#4aa3df" }, 1000 , "swing");
});
});
path를 그리는 방법에는 약간의 버릇이 있지만, velocity.js 덕분에 애니메이션 자체는 매우 간단하고 알기 쉽게 할 수있었습니다.
또한 예를 들어 애니메이션 그리기를 다음과 같이 바꾸면 차례로 따라가는 표현을 할 수 있습니다.
<이런 느낌>
var pathLength = $path.length;
// アニメーション描画
$path.each(function(i) {
$(this).velocity({
strokeDashoffset: 0
}, {
delay : 300 * i,
duration : 1000,
complete : function() {
// ifを外して$(this)にすると、それぞれ終わった直後に塗りつぶしされていく
if (i === (pathLength - 1)) {
$path.velocity({
fill: "#4aa3df"
}, 1000, "swing");
}
}
});
});
참고
Reference
이 문제에 관하여(velocity.js로 구냐구냐 SVG 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nekoneko-wanwan/items/f7bd86e41439aeaac33f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)