検索
ホームページウェブフロントエンドCSSチュートリアル不規則なSVGストロークで手書きアニメーションを取得する方法

不規則なSVGストロークで手書きアニメーションを取得する方法

書道フォントの手書きアニメーションをやりたかったのです。これは、目に見えないペンによって書かれているような言葉がアニメーション化する種類です。書道フォントには不均一なストローク幅があるため(実際にはSVGの点ではストロークさえありません)、典型的なパスアニメーションテクニックでこのようなことをすることはほぼ不可能でした。しかし、私は数分でこの影響を達成するために、SVGマスキングの革新的なアプリケーションを見つけました。

これを行う方法を研究している間、私は複数のソースから情報を収集しました。それらを組み合わせて、最終効果を作成することができました。

一緒に作りましょう!

SVGマスキング

単語や文のすべての文字のストローク幅が全体に均一である場合、クレイグロブスキーは手書きをアニメーション化する良い方法を持っています。これは、SVGストロークダッシュアレイとストロークオフセット属性をアニメーション化する巧妙な手法です。

ここでアニメーション化したいような書道フォントは、文字全体に不均一なストローク幅を持っているため、である必要があり、そのようにアニメーション化する必要があります。トリックは、SVGマスキングを使用することです。

まず、使用したいフォントを把握することから始めましょう。この記事全体で使用するものはHaveAreToneです。これは、手書きに最適なブラシストロークの外観が素敵です。

アイデアは、アニメーション化したいのと同じ文からを作成し、それを文の上に置くことです。言い換えれば、同じ文の2つの層があります。マスクは上に座っているので、それを白にして、その下の元の文を隠します。アニメーションが実行されると、下層が明らかになるようにマスクをアニメーション化します。

レイヤーを作成します

このトリックの基礎は、実際に2つの別々のレイヤーを作成することです。

  1. 一番下のレイヤーは、目的のフォントのある単語です(私の場合、それはハートネーブです)。
  2. 最上層は、単語に近い手作りのパスです。

手作りのパスを作成することは、あなたが思うほど難しくありません。文をアニメーション化して明らかにするための連続パスが必要です。これは、これについてはを意味します。しかし、イラストレーターを含むアプリの多くは、文字をパスに変換することができます。

  1. 単語を選択します。
  2. 「プロパティ」パネルを開き、 [アウトラインの作成]をクリックします。

そして、魔法のように、文字は形状に続くベクトルポイントの輪郭になります。

この時点で、レイヤーとして保存されているこれらのパスに意味のある名前を与えることが非常に重要です。これをSVGに期待すると、アプリはコードを生成し、それらのレイヤー名をIDおよびクラスとして使用します。

個々の文字がどのように埋められているかに注意してくださいが、ストロークはありません:

SVGでは、私たちが望むようにストロークをアニメーション化することができるので、2番目のメイン層であるマスクとしてそれを作成する必要があります。ペンツールを使用して文字をトレースできます。

  1. ペンツールを選択します。
  2. 塗りつぶしオプションを「なし」に設定します。
  3. ストローク幅は、使用しているフォントによって異なります。ストローク幅オプションを5pxに設定し、その色を黒に設定しています。
  4. 描画を始めましょう!

私のペンツールのスキルは素晴らしいものではありませんが、それは大丈夫です。重要なことは完璧ではありませんが、マスクがその下のレイヤーを覆うことです。

各文字のマスクを作成し、レイヤーに適した名前を使用することを忘れないでください。そして、同じ文字が複数ある場所にマスクを再利用することは、同じ「a」キャラクターを何度も再描画する必要はありません。

エクスポート

次に、SVGファイルをエクスポートする必要があります。それはおそらくあなたが使用しているアプリケーションに依存します。 Illustratorでは、ファイル→エクスポート→エクスポート→SVGでそれを行うことができます

SVGオプションのポップアップが開きます。以下は、この例のためにエクスポートするための優先設定です。

これで、すべてのアプリがSVGをまったく同じ方法でエクスポートするわけではありません。スリムで効率的なコードを生成するのに優れた仕事をする人もいます。他の人、それほどではありません。いずれにせよ、コードエディターでファイルを開くことをお勧めします

SVGを使用しているとき、パフォーマンスのために可能な限り軽量にするために考慮すべきいくつかのヒントがあります。

  1. ポイントが少ないほど、ファイルが軽くなります。
  2. より小さなViewboxを使用すると役立ちます。
  3. SVGをさらに最適化するためのツールがたくさんあります。

SVGコードを手動で編集します

これで、すべてのアプリがSVGをまったく同じ方法でエクスポートするわけではありません。スリムで効率的なコードを生成するのに優れた仕事をする人もいます。他の人、それほどではありません。いずれにせよ、コードエディターでファイルをクラックしていくつかの変更を加えることをお勧めします。

やりがいのあること:

  1. 最終設計のサイズに設定されている要素幅と高さの属性を指定します。
  2. 要素を使用します。私たちはパスを扱っているので、単語は実際にはスクリーンリーダーによって認識されていません。焦点を合わせるときにそれらを読む必要がある場合、これはトリックを行います。
  3. イラストアプリで名前が付けられたレイヤーに基づいて、IDSを使用してグループ要素()がある可能性があります。この特定のデモでは、#Marketing-Lab(アウトライン)と#マーケティングマスク(マスク)の2つのグループ要素があります。マスクを要素に移動します。これは視覚的にそれを隠すでしょう、それが私たちが望むものです。
  4. マスクグループ内にパスがある可能性があります。もしそうなら、先に進み、それらから変換属性を削除します。
  5. 各パス要素をに包み、マスクされた文字を示す.MASKクラスとIDを付けます。

例えば:

 
 <path ...></path>

アウトライングループ内(#Marketing-LabのIDが与えられました)は、Mask = "URL(#Mask-Marketing-M)"を使用して、それぞれの文字パス要素にマスクを適用します。

 <g>
 <path mask="url(#mask-marketing-m)" d="m427,360、..."></path>
</g>

上記のすべての変更を使用する1つの文字のコードは次のとおりです。

 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 381 81">
 <title>マーケティングラボ</title>
 <defs>
  <g>
   
    
   
  </g>
 </defs>
 <g>
  
 </g>
</svg>

最後に、ストローク色を白で上書きする.MASK要素にCSSを追加して、ドキュメントの背景色に対して隠されます。

 。マスク {
 塗りつぶし:なし;
 ストローク:#fff;
}

アニメーション

CSS Stroke-Dasharrayプロパティをアニメーション化して、連続ラインの明らかな効果を取得します。 CSSとJavasscriptまたはGreensock(GSAP)のいずれかでアニメーションを行うことができます。両方のアプローチを見ていきます。

CSSおよびJavaScript

これをCSSだけで行うのはかなり簡単です。 JavaScriptを使用してパスの長さを計算し、その返された値を使用してアニメーション化できます。 JavaScriptをまったく使用したくない場合は、パスの長さを1回計算し、その値をCSSにハードコードすることができます。

 / *ストロークダッシュアレイとストロークダッシュオフセットを設定 */
。マスク {
 ストロークダッシュアレイ:1000;
 ストロークダッシュオフセット:1000;
}


/ *アニメーションストロークダッシュオフセットはゼロの長さになります */
@keyframes strokeoffset {
 に {
  ストロークダッシュオフセット:0;
 }
}


/ *各マスクにアニメーションを適用します */
#mask-m {
 アニメーション:ストロークオフセット1S線形前方。
}

JavaScriptは、代わりにそのルートに行きたい場合は、カウントを支援できます。

 //マスクを配列に入れます
const masks = ['m'、 'a'、 'r'、 'k-1'、 'k-2'、 'e'、 't-line-v'、 't-line-h'、 'i-2'、 'i-dot'、 'n'、 'g' '、' lab-l '、' lab-a '、' lab-b ']]


masks.foreach((mask、index、el)=> {
 const id = `#mask-$ {mask}` // prepend#mask-各マスク要素名に
 let path = document.queryselector(id)
 const length = path.getTotallength()//パスの長さを計算します
 path.style.strokedasharray = length; //スタイルのストロークダシャレイに長さを設定します
 path.style.strokedashoffset = length; //スタイルのストロークダッシュオフセットに長さを設定します
})

GSAP

GSAPには、svg 、またはストロークを徐々に明らかに(または非表示)できるDrawSVGプラグインがあります。ボンネットの下では、CSSストロークダッシュオフセットとストロークダッシュアレイのプロパティを使用しています。

これがどのように機能しますか:

  1. コードにGSAPとDrawSVGスクリプトを含めます。
  2. Autoalphaを使用して、最初にグラフィックを非表示にします。
  3. タイムラインを作成します。
  4. グラフィックのためにAutoalphaをTrueに設定します。
  5. すべての文字パスマスクIDを適切な順序でタイムラインに追加します。
  6. DrawSVGを使用して、すべての文字をアニメーション化します。

参照

  1. Jake ArchibaldによるSVGのアニメーション図面
  2. Cassie Evansによるロゴアニメーションの作成

以上が不規則なSVGストロークで手書きアニメーションを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

メモ帳++7.3.1

メモ帳++7.3.1

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