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
CSS Animations vs WAAPI
Search
KeitaroOkamura
September 14, 2018
Programming
0
510
CSS Animations vs WAAPI
KeitaroOkamura
September 14, 2018
Tweet
Share
More Decks by KeitaroOkamura
See All by KeitaroOkamura
Suspenseのユースケースを探る
keitarookamura
1
290
ヤギでもわかるソフトウェアテスト
keitarookamura
0
130
ヤギでもわかるオブジェクト指向UIデザイン
keitarookamura
3
300
ヤギでもわかるGit入門
keitarookamura
1
250
ユースケースから考えるユーザビリティ
keitarookamura
1
210
サクッと簡単!お手軽 Scaffold
keitarookamura
1
290
自社サイトをPWA化した話
keitarookamura
0
120
マイクロインタラクションから考えるアニメーション
keitarookamura
1
270
Vue.js+AtomicDesign
keitarookamura
2
2.7k
Other Decks in Programming
See All in Programming
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
1.8k
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
180
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
360
Understanding Kotlin Multiplatform
l2hyunwoo
0
250
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
280
Claude Code と OpenAI o3 で メタデータ情報を作る
laket
0
110
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.5k
構文解析器入門
ydah
7
2.1k
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
330
MCPで実現できる、Webサービス利用体験について
syumai
7
2.5k
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
130
画像コンペでのベースラインモデルの育て方
tattaka
3
1.5k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Raft: Consensus for Rubyists
vanstee
140
7.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Gamification - CAS2011
davidbonilla
81
5.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Side Projects
sachag
455
43k
Transcript
CSS Animations vs WAAPI FukuokaJS #6 / 2018.09.13
PROFILE Keitaro Okamura karabiner.inc Frontend Engineer フロントエンドエンジニア0年生 @karaagekeitaroo
Web Animations API is 何? 新しい Web Animation Framework となる
JavaScriptのAPI 簡単に言うと、CSS Animation の keyframe 制御を JS から可能にしたようなもの ( W A A P I )
・ CSS animation、CSS transition ・ HTML5 Canvas ・ SVG animation
・ JS の DOM 操作で実装する animation … etc. Web Animation Patterns
・ CSS animation、CSS transition ・ HTML5 Canvas ・ SVG animation
・ JS の DOM 操作で実装する animation … etc. Web Animation Patterns WAAPI
1. Let’s create Animation! element.animate(keyframes, options); WAAPI を使用してアニメーションを作成するには、keyframes と options
の 2 つの引数をとる Element.animate() 関数を使用します。
1. Let’s create Animation! element.animate(keyframes, options); WAAPI を使用してアニメーションを作成するには、keyframes と options
の 2 つの引数をとる Element.animate() 関数を使用します。 Sample
2. keyframes → CSS Animations の場合 @keyframes zoom { 0%
{transform: none;} 50% {transform: scale(1.5);} 100% {transform: none;} } 0%, 100% にtransform: none;、 50% にtransform: scale(1.5);を設定しており、 それを直線的に動かしています。
2. keyframes → WAAPI の場合 const zoom = { transform:
['none', 'scale(1.5)', 'none'] } 1. 単一の keyframes Object を渡す 各キーは、CSS プロパティを表し、配列内の各値は、アニメー ションタイムライン上のポイントを表します。
2. keyframes → WAAPI の場合 const zoom = [ {
transform: 'none' }, { transform: 'scale(1.5)', offset: 0.5 }, { transform: 'none' } ] 2. 配列として書き出す 配列内の各アイテムは、タイムライン上のポイントを表し、その ポイントに適用される各 CSS プロパティと値を指定します。
3. options → WAAPI の場合 const zoomOptions = { duration:
2000, easing: 'linear', delay: 150, iterations: Infinity } animate() 関数に渡す2番目の引数は、 いくつかのオプションを持つ Object です。
3. options → CSS Animations の場合 .selector { animation-name: zoom;
animation-duration: 2s; animation-timing-function: linear; animation-delay: 0.15s; animation-iteration-count: infinite; } 上記のように animation プロパティを指定します。 animation: zoom 2s linear 0.15s infinite; 一括で指定する場合
3. options → CSS Animations の場合 No property Description 1
animation-name アニメーション名 2 animation-duration 実行時間 3 animation-timing-function 進行の度合い 4 animation-delay 開始時間 5 animation-iteration-count 繰り返し回数 6 animation-direction 再生方向 7 animation-fill-mode 再生前後の状態 8 animation-play-state 再生・停止
3. options → WAAPI の場合 No property Description 1 id
ユニークID 2 duration 実行時間 3 easing 進行の度合い 4 delay 開始時間 5 iteration 繰り返し回数 6 direction 再生方向 7 fill 再生前後の状態 8 endDelay 終了後に遅延する時間 9 iterationStart 開始する繰り返しポイント
4. controll const animation = element.animate(keyframes, options); animation.play(); // 再生
animation.pause(); // 一時停止 animation.reverse(); // 逆再生 animation.cancel(); // キャンセル animation.finish(); // 終了時点まで進める Animation メソッドを使うことでアニメーションの実行を controll することができます。
Support Firefox と Chrome でサポート 実際に使う場合は pollyfill ( web-animations-js )
が必須 https://caniuse.com/#feat=web-animation
Performance
DEMO
・ JS でサポートされている関数と組み合わせれる ・ DOM 操作で直接 HTML 要素をアニメーションできる ・ 止まったり再開したり、アニメーションの制御ができる
CSS Animations との比較
・ アニメーションロジックを JS で一元管理 ・ アニメーションの詳細に大きく依存 ( case by case
) まとめ CSS Animations UI 関連の 小さなアニメーション WAAPI 細かな controll を必要とするより 高度なアニメーション& エフェクト
THANKS!