ホームページ ウェブフロントエンド jsチュートリアル 重要なフロントエンド アーティファクト Snap.svg バウンス効果_jquery

重要なフロントエンド アーティファクト Snap.svg バウンス効果_jquery

May 16, 2016 pm 04:31 PM
フロントエンド

SVG を知らないフロントエンド開発者は開発者ではなく愛好家と呼ばれるという人もいます。フロントエンドはAngularjsだけではないので、このタイミングでSVGを学ばないと手遅れになります! (jQuery しか知らない場合は、私がそれを言わなかったことにしてください...) ここでは、数日前に他の場所で見たハイエンドの SVG エフェクトを共有します。左側のメニューがポップアップして表示されます。ここをクリックしてください。

今日、時間をかけてソースコードを見つけて、苦労して作ったデモがこれです。大まかではありますが、それでも非常に違和感がありました。このデモを皆さんに共有しましょう。

http://jsfiddle.net/windwhinny/n6w1ur5k/3/

このケースでは、PS または AI のパスに関するある程度の知識が必要です。このケースに関係する知識ポイントとツールは次のとおりです。

snap.svg
SVGパスデータ
Adobe Illustrator
アニメーションのタイミング

まず原理を説明します: 時間に従って座標を変換します。以下の図に示すように、この例は実際には 3 つの線 A、B、C の間の変換です。A をクリックすると、B を通過して最終的に C が形成されます。 A-B と B-C の 2 つのアニメーションがあり、これら 2 つのアニメーションのタイミング関数と時間が異なります。

ステップ 1: 下書きを描く

アニメーションを作成する前の最初のステップは、下書きを描くことです (上図を参照)。AI は要素のサイズと位置を正確に制御でき、その原理は SVG と同じであるため、私は通常 AI を使用して描画します。

その後、「老師、SVG 形式で保存してから修正したほうがいいですか?」と言う生徒もいます。

間違っています

大まかな図を描く目的は、各点の座標を便宜的に決定することだけです。自分で計算するのは面倒で間違いが起こりやすいです。それ以上、AIは何もしません。 AI で生成された SVG ファイルは、以下で詳しく説明するように、道路のポイントが非常にわかりにくいため、この例では使用できません。

え? AIの使い方も知らないの?

それでもフロントエンドの道を歩み続けたいなら、今すぐ学んでください。 (ここで文句を言いたいのですが、PSはビットマップ画像の処理に使用され、設計図の作成には適していません。それに対してAIはこれに使用されます。Googleが提供するメトリックデザインのレイアウトテンプレートはすべてAI形式です。はい。ただし、いいえ中国のどの会社であっても、彼らは PS をとても喜んで使っているようです。理由はわかりません)

ステップ 2: パスを計算する

このステップはより複雑です。上で述べたように、このアニメーションは実際には座標間の変換です。四角形から円弧への変換は、座標の移動だけでなく、曲線の円弧の変換でもあります。上記の設計図は SVG として直接保存されており、コードは次のとおりです:

コードをコピーします コードは次のとおりです:


" xmlns:xlink="http://www. w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 175 175" enable-background="new 0 0 175 175" xml:space="preserve">








パスの d 属性に注目するだけで済みます。2 つのパス AB は相互に変換できますが、C パス (円弧のあるパス) には変換できないことがわかります。 AB と AB はどちらも長方形を描画するときに使用するコマンドが異なります。描画するのは水平方向と垂直方向の変位です。しかし、C 陸進は s や c などのコマンドを使用し、描いたのは曲線だけでした。そのため、AIが提供する画像を使用することはできず、svgのパスデータを基に自分で再描画する必要があります。

AI 設計図に基づいて再描画した 3 つのパスは次のとおりです。

コードをコピーします コードは次のとおりです:


<パス d="
M37.5,37.5
S87.5,37.5,87.5,37.5
S137.5,37.5,137.5,37.5
S137.5,87.5,137.5,87.5
S137.5,137.5,137.5,137.5
S87.5,137.5,87.5,137.5
S37.5,137.5,37.5,137.5
S37.5,87.5,37.5,87.5
S37.5,37.5,37.5,37.5z">

<パス d="
M 37.5,37.5
S47.5,12.5,87.5,12.5
S127.5,25,137.5,37.5
S162.5,47.5,162.5,87.5
S150,127.5,137.5,137.5
S127.5,162.5,87.5,162.5
S47.5,150,37.5,137.5
S12.5,127.5,12.5,87.5
S25,47.5,37.5,37.5z">

<パス d="
M12.5,12.5
S87.5,12.5,87.5,12.5
S162.5,12.5,162.5,12.5
S162.5,87.5,162.5,87.5
S162.5,162.5,162.5,162.5
S87.5,162.5,87.5,162.5
S12.5,162.5,12.5,162.5
S12.5,127.5,12.5,127.5
S12.5,12.5,12.5,12.5z">

デザインのバックグラウンドを持つ学生は、すべてのアンカー ポイントをスムーズに変換してからハンドルの位置を変更するという上記のコードの意味を理解する必要があります。形状は変わっていませんが、コードが増えていますが、描画コマンドが S に変更されているため、3 つのパスの違いは数値だけです。アニメーション プロセスは、値間の変換です。

ステップ 3: タイミング

このステップでは、アニメーションの時点とタイミング関数を設定します。タイムポイントは簡単に言うと、A-B と B-C をそれぞれ 300 ミリ秒と 400 ミリ秒に設定します。

タイミング関数は、CSS アニメーションで使用するアニメーション タイミング関数属性です。より一般的なものは、ベジェ曲線を使用してカスタマイズすることもできます。ただし、CSS のタイミング関数は比較的単純で、一様な曲線のみを定義できます。A-B 変換にはイーズアウトが使用されますが、B-C のバウンス効果を反映するために、使用されるタイミング関数はそれほど単純ではありません。均一な曲線。

上記は、一般的に使用されるタイミング関数のリストです。これらは、イーズ、バウンス、エラスティックの 3 つのカテゴリに大まかに分類されます。イーズは通常、アニメーションを減速または加速するために使用されます。バウンスは、カーブと同様に、通常、ボールの着地時のダイナミックな効果に使用されます。 Elastic は通常、ストリングなどのダイナミック エフェクトに使用されます。このダイナミック エフェクトの特徴の 1 つは、部分的に負の座標にオフセットされることです。以下に示すように、B-C はこれを使用します。

上で描いたパスに従って、アニメーションと組み合わせると、コードが次のようになります。

コードをコピー コードは次のとおりです:

var svg=Snap("#svg");
var pathes=[
    「M37.5,37.5S87.5,37.5,87.5,37.5S137.5,37.5,137.5,37.5S137.5,87.5,137.5,87.5 S137.5,137.5,137.5,137.5S87.5,137.5,87.5,137.5S3 7.5,137.5 ,37.5,137.5S37.5,87.5,37.5,87.5S37.5,37.5,37.5,37.5z",
    「M 37.5,37.5 S47.5,12.5,87.5,12.5 S127.5,25,137.5,37.5 S162.5,47.5,162.5,87.5 S150,127.5,137.5,137.5 S127.5,162.5,87.5,162.5 S47。 5,150,37.5, 137.5 S12.5,127.5,12.5,87.5 S25,47.5,37.5,37.5z",
    "M12.5,12.5S87.5,12.5,87.5,12.5S162.5,12.5,162.5,12.5S162.5,87.5,162.5,87.5S162.5,162.5,162.5,162.5S87.5,162.5,87.5,162.5S 12.5,162.5 ,12.5,162.5S12.5,127.5,12.5,127.5S12.5,12.5,12.5,12.5z"
];

var path=svg.path(pathes[0]);

path.attr({
    塗りつぶし:"#2E70FF"
});

関数 animateIn(コールバック){
    path.animate({
        d:パス[1]
    },300,mina.easeout,function(){
        path.animate({
            d:パス[0]
        },400,mina.elastic,callback)
    });
};

関数 animateOut(コールバック){
    path.animate({
        d:パス[1]
    },300,mina.easeout,function(){
        path.animate({
            d:パス[2]
        },400,mina.elastic,callback)
    });
};

Snap は Adob​​e 出品処理 SVG のパッケージであり、mina は Snap 独自のアニメーション ツール集であり、その中には多数のアニメーションが含まれています。

结语

Snap を使用して作成したアニメーションは、IE9 と互換性があり、速度も遅くなく、自主機能が大幅に向上しています。 >

アニメーション効果に関する発言があれば、次の TED のアニメーション効果に関するビデオをご覧ください

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

Vue3 で単体テストを作成する方法を調べる Vue3 で単体テストを作成する方法を調べる Apr 25, 2023 pm 07:41 PM

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ Mar 16, 2024 pm 12:09 PM

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細なコード例について説明します。

クロスドメインの問題を解決するにはどうすればよいですか?一般的なソリューションの簡単な分析 クロスドメインの問題を解決するにはどうすればよいですか?一般的なソリューションの簡単な分析 Apr 25, 2023 pm 07:57 PM

クロスドメインは開発においてよく遭遇するシナリオであり、インタビューでもよく議論される問題でもあります。一般的なクロスドメイン ソリューションとその背後にある原則を習得すると、開発効率が向上するだけでなく、面接でのパフォーマンスも向上します。

フロントエンド開発に Go 言語を使用するにはどうすればよいですか? フロントエンド開発に Go 言語を使用するにはどうすればよいですか? Jun 10, 2023 pm 05:00 PM

インターネット技術の発展に伴い、フロントエンド開発の重要性がますます高まっています。特にモバイル デバイスの人気により、効率的で安定しており、安全で保守が容易なフロントエンド開発テクノロジーが必要です。 Go 言語は、急速に発展しているプログラミング言語として、ますます多くの開発者によって使用されています。では、フロントエンド開発に Go 言語を使用することは可能でしょうか?次に、この記事ではフロントエンド開発にGo言語を使用する方法を詳しく説明します。まずはフロントエンド開発にGo言語が使われる理由を見てみましょう。多くの人は Go 言語は

フロントエンドの面接官からよく聞かれる質問 フロントエンドの面接官からよく聞かれる質問 Mar 19, 2024 pm 02:24 PM

フロントエンド開発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質問は、候補者の技術スキル、プロジェクトの経験、業界のトレンドの理解を評価するように設計されています。したがって、候補者はこれらの分野で自分の能力と専門知識を証明するために十分な準備をしておく必要があります。

ノードのバッファーについて詳しく見る ノードのバッファーについて詳しく見る Apr 25, 2023 pm 07:49 PM

当初、JS はブラウザ側でのみ動作していたため、Unicode でエンコードされた文字列の処理は簡単でしたが、バイナリ文字列や非 Unicode エンコード文字列の処理は困難でした。バイナリは、コンピュータのビデオ/オーディオ/プログラム/ネットワーク パッケージの最低レベルのデータ形式です。

See all articles