Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JavaScriptでKeyframeAnimationを作ってみた
Search
cancer
April 19, 2014
Technology
1
74
JavaScriptでKeyframeAnimationを作ってみた
帰ってきたYokohama.js(#yjs20140419)でLTしたスライドです
cancer
April 19, 2014
Tweet
Share
More Decks by cancer
See All by cancer
JSXをモダンな感じで開発してみた
cancer
0
440
AngularJSで作ったアプリをReactで置き換えてみた
cancer
0
220
CSSスプライトを動的生成して快適ソシャゲ開発
cancer
1
230
第2回 Sass勉強会 in 社内
cancer
1
61
Other Decks in Technology
See All in Technology
【SORACOM UG 東海】あらゆるモノがつながる社会へ、IoT と SORACOM
soracom
PRO
1
140
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
610
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
4
37k
Handling focus in 2024
tahia910
0
220
Cracking the KubeCon CfP
inductor
2
270
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
1
1.6k
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
7
1.3k
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
330
Grafana x PagerDuty Better Together
jacopen
1
250
BPStudyの200回を中心にIT業界を振り返る。そしてこれから
haru860
3
390
よく聞くけど使ったことないソフトウェアNo.1 KafkaとSnowflake
foursue
4
500
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
700
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
7
1.3k
Product Roadmaps are Hard
iamctodd
45
9.7k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Web development in the modern age
philhawksworth
203
10k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.2k
Transcript
帰ってきたYokohama.js (#yjs20140419) JavaScript で KeyframeAnimation を 作ってみた
自己紹介 宇野 陽太( ) @cancer6 株式会社モバイルファクトリー というところで フロントエンドエンジニアやってます 最近はBackbone /
Marionette / AngularJS あたりを触ったり CSS 書いたりなど
CSS Animation
CSS Animation CSS にkeyframe 書いて... アニメー ション用のclass を作ってプロパティ書いて... JS からclass
の操作して... ...
めんどくさい
どうせJS 使うなら全部JS で やってしまおう
css-animations.js https://github.com/jlongster/css-animations.js DOM からCSS にアクセスして色々 やってくれる CSS ファイルで定義したkeyframe を取ってきたり JavaScript
から動的にkeyframe を生成したり オブジェクトでkeyframe のプロパティを渡してあげる var anim1 = CSSAnimations.get("anim1"); var anim2 = CSSAnimations.create("anim2", { "0%": { "background-color": "red" }, "100%": { "background-color": "blue" }
css-animations.js ベンダー プレフィックスが必要なプロパティの記述が冗長 transform 系のプロパティも冗長になりがち アニメー ションのプロパティ(animation-name/animation- duration など) は別途DOM
の操作が必要 var anim = CSSAnimations.create("anim", { "0%": { opacity: "0.5", border-radius: "0" "-webkit-border-radius": "0" transform: "translate(0, 0) rotate(90deg) scale(1)" "-webkit-transform": "translate(0, 0) rotate(90deg) scale(1)" }, "100%": { opacity: "1", border-radius: "5px" "-webkit-border-radius": "5px" transform: "translate(100px, 50px) rotate(180deg) scale(2)" "-webkit-transform": "translate(100px, 50px) rotate(180deg) scale(2)" } $("#animation").css({ "animation-name": "anim", "animation-duration": "5s" "animation-timing-function": "linear" "animation-delay": "1s" "animation-fill-mode": "both"
まだめんどくさい
keyframe-animations.js カッコカリ https://github.com/cancer/keyframe-animations.js ( さっき) つくりました No more ベンダー プレフィックス
transform 系も見やすく アニメー ションのプロパティも一緒に設定できます var animation = keyframeAnimation.setup({ name: "anim", keyframe: { "0%": { opacity: "0.5", borderRadius: "0", translate: "0 0", rotate: "90deg", scale: "1" }, "100%": { opacity: "1", borderRadius: "5px", translate: "100px 50px", rotate: "180deg", scale: "2" } }, animation: { duration: "5s",
keyframe-animations.js カッコカリ アニメー ションの実行/ 停止もかんたん animationEnd で何かしたいとかもできます // アニメーション実行 animation.animate($("#animation"));
// アニメーション停止 animation.freeze(); // animationEndで何か実行したい animation.animate($("#animation"), function($element){ // アニメーションが終わったら要素を非表示にする $element.hide() });
keyframe-animations.js カッコカリ アニメー ションのライブラリを作ったりすると捗るはず var animationLibrary = new AnimationLibrary(); animationLibrary.setupModalAnimation();
こんな感じで
ご清聴ありがとうございました