目次
1. Far View: WAAPI を理解する
2. はじめに: 例から始めます
3. 病院に入る :WAAPI の素晴らしい機能を詳しく説明します
アニメーションのコールバックとアニメーションの状態
時間制御とタイムライン
複数のアニメーション
更高级的接口
四、登堂:官方案例
五、上座:移动端运行
六、品茗:参考文献
ホームページ ウェブフロントエンド htmlチュートリアル Web アニメーション API のエントリから master_html/css_WEB-ITnose

Web アニメーション API のエントリから master_html/css_WEB-ITnose

Jun 21, 2016 am 09:01 AM

1. Far View: WAAPI を理解する

Web アニメーションについて話すとき、私たちは当然、CSS3 アニメーション、JS アニメーション、SVG アニメーション、APNG アニメーションなどのテクノロジーを思い浮かべます。 .animate() などの jQuery アニメーション パッケージ化ライブラリは、実際のアニメーション コンテンツの設計に基づいてさまざまな実装方法を選択できます。ただし、現在のすべてのアニメーション テクノロジには特定の欠点があります。たとえば、CSS3 アニメーションは JS を通じて動的に変化する値を取得する必要があり、setInterval 時間が不正確であることが多く、フリーズする可能性があり、APNG アニメーションを導入するとファイル サイズが大きくなるという問題があります。追加のアニメーション パッケージ ライブラリはパフォーマンス重視のビジネスには適していません。開発者にとって、現状ではケーキを持って食べることは難しいようです。開発者は、より強力で便利なアニメーション制御機能を備えていることだけでなく、パフォーマンスとエクスペリエンスが十分にスムーズでエレガントであることを望んでいます。ブラウザーでネイティブにサポートされるユニバーサル アニメーション、ソリューションがあれば素晴らしいですね。

このため、W3C は Web アニメーション API (WAAPI) を提案しました。これは、CSS3 アニメーションのパフォーマンス、JavaScript の柔軟性、およびアニメーション ライブラリの豊富さを統合して、可能な限り多くのアニメーションをネイティブで実装することに取り組んでいます。ブラウザーに追加され、CSS にはない多くの変数、コントロール、オプションが追加されます。将来的には、1 つのスキルでアニメーション技術を選択できるようになるでしょうか?次は、WebアニメーションAPIという素晴らしい扉を一緒にたたきましょう。

2. はじめに: 例から始めます

WAAPI の中核は、

Element.animate()
ログイン後にコピー

メソッドを提供することです。最も単純な例:

document.body.animate(    [{'background': 'red'}, {'background': 'green'}, {'background': 'blue'}]    , 3000);
ログイン後にコピー

Chrome 39 以降を使用して実行すると、ページの背景色が赤から緑、青に順番に変化し、その後終了します。 3秒。もちろん、このような単純な制御パラメータに満足するわけではありません。次の例を見てみましょう:

  var dot = document.querySelector('.dot');  var frames = [    {transform: 'rotate(0deg) translate(80px)'},    {transform: 'rotate(360deg) translate(80px) '},  ];  var timing = {    duration: 2500,         //ms    delay: 0,               //ms    iterations: Infinity,   //1, 2, 3 ... Infinity    direction: 'alternate', //'normal', 'reverse'等    easing: 'ease-in-out',  //'linear', 'ease-in'等    fill: 'forwards',       //'backwards', 'both', 'none', 'auto'  };  dot.animate(frames, timing);
ログイン後にコピー

DOM ノードに新しい animate メソッドがあることがわかります。最初のパラメータは Keyframe 配列であり、CSS3 の @keyframes に対応します。各フレームの記述は CSS3 と非常に似ており、2 番目のパラメータは時間制御タイミングであり、継続時間、反復実行時間、アニメーションの方向、イージング関数が含まれます。およびその他のプロパティ。 CSS3 の構文に非常に似ていますか? 上記のタイミング パラメーターは次と同等です:

.dot {  animation: frames 2500ms ease-in-out 0ms infinite alternate forwards;}
ログイン後にコピー

効果は次のとおりです:

3. 病院に入る :WAAPI の素晴らしい機能を詳しく説明します

アニメーションのコールバックとアニメーションの状態

最初の例では、Element.animate( の戻り値を受け取るオブジェクトを定義できます)

var player = document.body.animate(/* ... */);
ログイン後にコピー

player は、アニメーションによって返される「アニメーション プレーヤー」オブジェクトになり、アニメーションの再生が開始されます。アニメーションの現在の状態を知る必要があります。これは、オブジェクトの読み取り専用属性 playState を通じて取得できます。

console.log(player.playState); //"running","paused","finished"...
ログイン後にコピー

プレーヤーには合計 5 つの状態があります。コード内でコメントされている 3 つの基本状態に加えて、ステータスには、初期状態に戻ることを意味する「アイドル」と、再生または一時停止が発生しようとしているときを意味する「保留中」も含まれます。

プレイヤーは 4 つの方法でアニメーションの現在のステータスを変更できます。

player.pause(); //"paused"player.play();  //"running"player.cancel(); //"idle"player.finish(); //"finished"
ログイン後にコピー

CSS3 アニメーションと同様に、プレーヤーはアニメーションが自然または手動で終了するときの onfinish 関数を指定できます。

player.onfinish = function(e) {    // ...}
ログイン後にコピー

再生回数を無限に設定するアニメーションには、onfinish 関数を呼び出すための自然な終了時間がないことに注意してください。

時間制御とタイムライン

プレーヤーには、アニメーションの再生速度を制御するために使用される読み取り/書き込み属性 playbackRate があります。

var player = element.animate(/* ... */);console.log(player.playbackRate); //1player.playbackRate = 2; 
ログイン後にコピー

playbackRate のデフォルト値は 1 です。より大きな整数を設定するとアニメーションの速度を上げることができ、ゼロより大きい 10 進数を設定するとアニメーションの速度を遅くすることができます。

プレーヤーには、currentTime と startTime という 2 つの時間関連の読み取りおよび書き込み属性もあります。前者は、アニメーションによって現在経過しているミリ秒数を返します。その最大値は、タイミング パラメーターによって設定された遅延 + (期間 * 反復) ですが、Infinity に設定されたアニメーションには、currentTime の最大値がありません。

playbackRate が設定されている場合、アニメーションの currentTime は変化しません。実際に変化するのは、再生速度の変化に応じてタイムラインが伸縮されることです。

プレーヤーは reverse() を呼び出して、タイムラインの終わりから開始点までアニメーションを再生できます。アニメーションが終了すると、currentTime の値は 0 に戻ります。

player.onfinish = function() {    player.reverse();}
ログイン後にコピー

複数のアニメーション

CSS3 アニメーションには、DOM ノードに複数のキーフレーム アニメーションを同時に指定する機能もあります。要素に対して animate メソッドを複数回呼び出すと、要素に対して複数のアニメーションが実装されます:

var animated = document.getElementById('toAnimate');var pulseKeyframes, activateKeyframes, haveFunKeyframes;var pulse = animated.animate(pulseKeyframes, 1000); var activate = animated.animate(activateKeyframes, 3000);var haveFunWithIt = animated.animate(haveFunKeyframes, 2500);
ログイン後にコピー

各サブアニメーションには、独立したタイミング パラメーターと独立したアニメーション ステータス (再生、停止、完了) も含まれます。 、キャンセル)と独立したタイムライン(開始時間、再生速度、終了時間)により、アニメーションの詳細な制御が容易になります。

更高级的接口

WAAPI还拥有timeline属性,对动画进行分组和排序的能力,以及沿自定义路径移动(再也不是SVG的天下了)的能力,光这一点就足够令人激动不已,然而篇幅有限于是下回再表。

四、登堂:官方案例

Codelabs 越来越多基于WAAPI的Codelabs实例涌现,这些实例非常适合初接触WAAPI的同学作为开始的范例。 [https://github.com/web-animations/web-animations-codelabs]

Google’s demos 如果你希望用WAAPI挑战更炫酷的动画,特别是遵循Material Design风格的动画效果,这将是不错的灵感来源。 [http://web-animations.github.io/web-animations-demos]

五、上座:移动端运行

看到这里,相信你已经不只一次体验到WAAPI带来的惊喜。作为一名彻头彻尾的移动端H5开发,我当然也想把WAAPI应用到移动业务上去服务用户…什么?手机上怎么没效果!

[http://caniuse.com/#feat=web-animation]

为了在现代浏览器厂商还没完全跟进到位的时候抢先用上WAAPI,我们可以选择引入针对Web Animation API的Polyfill库[https://github.com/web-animations/web-animations-js],从而在IE/Firefox/Safari等浏览器上体验到WAAPI的精彩。

<scriptsrc="https://cdn.jsdelivr.net/web-animations/latest/web-animations.min.js"></script><script>  document.body.animate([    {'background': 'red'},    {'background': 'green'}  ], 1000);</script>
ログイン後にコピー

移动端浏览器,Android 5.0以上的Android Browser和Chrome for Android本身就已经支持WAAPI了,加上Polyfill之后,iOS的Safari也支持了。别忘了,还有我大手Q的X5内核浏览器。

至此,小伙伴们终于露出欣慰的笑容。敬请期待下篇《Web Animation API 从上座到书墨》。

六、品茗:参考文献

  1. W3C Spec:https://w3c.github.io/web-animations/
  2. 《Let’s talk about the Web Animations API》:http://danielcwilson.com/blog/2015/07/animations-intro/
  3. Google's Demo:http://web-animations.github.io/web-animations-demos/
  4. codelabs: https://github.com/web-animations/web-animations-codelabs
  5. Polyfill: https://github.com/web-animations/web-animations-js
  6. Resources:https://developers.google.com/web/updates/2015/10/web-animations-resources
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTML:構造、CSS:スタイル、JavaScript:動作 HTML:構造、CSS:スタイル、JavaScript:動作 Apr 18, 2025 am 12:09 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。

HTML、CSS、およびJavaScriptの未来:Web開発動向 HTML、CSS、およびJavaScriptの未来:Web開発動向 Apr 19, 2025 am 12:02 AM

HTMLの将来の傾向はセマンティクスとWebコンポーネントであり、CSSの将来の傾向はCSS-in-JSとCSShoudiniであり、JavaScriptの将来の傾向はWebAssemblyとServerLessです。 1。HTMLセマンティクスはアクセシビリティとSEO効果を改善し、Webコンポーネントは開発効率を向上させますが、ブラウザの互換性に注意を払う必要があります。 2。CSS-in-JSは、スタイル管理の柔軟性を高めますが、ファイルサイズを増やす可能性があります。 CSShoudiniは、CSSレンダリングの直接操作を可能にします。 3. Webassemblyブラウザーアプリケーションのパフォーマンスを最適化しますが、急な学習曲線があり、サーバーレスは開発を簡素化しますが、コールドスタートの問題の最適化が必要です。

HTMLの未来:ウェブデザインの進化とトレンド HTMLの未来:ウェブデザインの進化とトレンド Apr 17, 2025 am 12:12 AM

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTML:Webページの構造の構築 HTML:Webページの構造の構築 Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

HTML対CSS対JavaScript:比較概要 HTML対CSS対JavaScript:比較概要 Apr 16, 2025 am 12:04 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML対CSSおよびJavaScript:Webテクノロジーの比較 HTML対CSSおよびJavaScript:Webテクノロジーの比較 Apr 23, 2025 am 12:05 AM

HTML、CSS、およびJavaScriptは、最新のWebページを構築するためのコアテクノロジーです。1。HTMLはWebページ構造を定義します。2。CSSはWebページの外観に責任があります。

HTML:それはプログラミング言語か何か他のものですか? HTML:それはプログラミング言語か何か他のものですか? Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

&lt; strong&gt;&lt; b&gt;の違いは何ですかタグと&lt; em&gt;&lt; i&gt;タグ? &lt; strong&gt;&lt; b&gt;の違いは何ですかタグと&lt; em&gt;&lt; i&gt;タグ? Apr 28, 2025 pm 05:42 PM

この記事では、HTMLタグの違いについて説明します。、、、、、、、およびプレゼンテーションの使用とSEOとアクセシビリティへの影響に焦点を当てています。

See all articles