ホームページ ウェブフロントエンド CSSチュートリアル Border-ImageでSVGをアニメーション化する方法

Border-ImageでSVGをアニメーション化する方法

Apr 01, 2025 am 04:48 AM

CSSのborder-image属性とアニメーションSVGを使用して動的な境界効果を作成します

この記事では、CSSとアニメーションSVGのborder-image属性を組み合わせて、国境を囲む動的なSVGアニメーション効果を作成する方法を紹介します。この効果を再現できるだけでなく、ニーズに応じてカスタマイズできる、再構成可能な9グリッドのアニメーションSVGを手作りする方法を学びます。

最終的な効果は次のとおりです。

Border-ImageでSVGをアニメーション化する方法

このアニメーションは、実際には、「The Skull」と呼ばれる旗を張るパズルの一部であり、Arduinoとそのマイクロコントローラーの内部構造を探索しています。このようなアニメーションの境界線を作成する方法を検索しましたが、有用な例を見つけることができませんでした。私が見つけたコンテンツのほとんどは「アリの行進」効果に関連していますが、残念ながらstroke-dasharrayトリックは頭蓋骨では機能しません。

したがって、学習と共有の精神で、私はここであなたと私の経験を共有します!

backgroundまたはborder-imageを使用する必要がありますか?

最初は、 border-image属性の存在さえ知りませんでした。私の最初の試みで、私は::beforeそのbackground-position属性をアニメーション化する前に使用しようとしました。結果は次のとおりです。

ご覧のとおり、この方法は機能しますが、境界全体を完了するには、少なくとも8つの異なる要素(または擬似要素)が必要です。これはHTMLコードを混同し、理想的ではありません。

私はイスラエルCSS開発者Facebookグループに質問を投稿しましたが、誰もが私にborder-imageの属性を指摘しました。それはそれが呼ばれるものに正確に適合します:要素の境界として画像(またはCSS勾配)を使用します。

border-imageを使用するには、9グリッドの方法で使用される画像を提供する必要があります(画像上のチックトーグリッドのオーバーレイを想像してください)。これらの9つのエリアはそれぞれ、境界の異なる部分を表しています。上、右、左、下、四隅、および中央(中央部は無視されます)。

たとえば、静的頭蓋骨のみが必要な場合は、SVGパターンを使用して頭蓋骨を9回繰り返すことができます。まず、頭蓋骨の経路を使用して24×24パターンを定義し、次にこのパターンを72×72の長方形の塗りつぶしとして使用します。

<svg height="72" version="1.1" width="72" xmlns="http://www.w3.org/2000/svg"><defs><pattern height="24" patternunits="userSpaceOnUse" width="24"><path d="..." fill="red"></path></pattern></defs><rect fill="url(#skull-fill)" height="72" width="72"></rect></svg>
ログイン後にコピー

次に、境界線を定義し、ターゲット要素のborder-imageを設定します。

 .skulls {
  国境:24px固体透明。
  border-image:url( "https://skullctf.com/images/skull-9.svg")24ラウンド;
}
ログイン後にコピー

このようにして、頭蓋骨で構成される境界線を取得します。

SVGアニメーションを追加します

これで、これらの頭蓋骨にアニメーションを追加できます!ほとんどの場合、正常に機能します。

アイデアは、国境画像の各エリアに異なるアニメーションを作成することです。たとえば、左上隅には、1つの頭蓋骨が右から左に移動し、もう1つの頭蓋骨は同時に上から下に移動します。

transform属性をアニメーション化して、運動効果を達成します。 SVGも使用します<use></use>各頭蓋骨の繰り返し長い繰り返しを避けるための要素<path></path>意味:

<svg height="96" version="1.1" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  @KeyFrames Left {to {transform:translate(-32px、0)}}}
  @KeyFrames Down {to {transform:translate(0、32px)}}
 <defs><path d="..." fill="red"></path></defs><use href="#skull" style="animation: down .4s infinite linear" x="0" y="0"></use><use href="#skull" style="animation: left .4s infinite linear" x="32" y="0"></use></svg>
ログイン後にコピー

SVGアニメーションの構文は、SmilなどのSVG固有の構文のようなものではなく、CSSアニメーションを使用するため、おなじみのように見えるかもしれません。とてもクールですよね?

最終的な効果は次のとおりです。

グリッドを追加すると、このアニメーションが上部と左のエッジの一部もカバーしていることがわかります。

残りの3つのエッジを追加した後、それはより印象的に見え、したがって、ボーダーイメージの8つの領域を完全にカバーしています。

<svg height="96" version="1.1" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  @KeyFrames Left {to {transform:translate(-32px、0)}}}
  @KeyFrames Down {to {transform:translate(0、32px)}}
  @KeyFrames Right {to {transform:translate(32px、0)}}}
  @KeyFrames Up {to {transform:translate(0、-32px)}}
 <defs><path d="..." fill="red"></path></defs><use href="#skull" style="animation: down .4s infinite linear" x="0" y="0"></use><use href="#skull" style="animation: left .4s infinite linear" x="32" y="0"></use><use href="#skull" style="animation: left .4s infinite linear" x="64" y="0"></use><use href="#skull" style="animation: up .4s infinite linear" x="64" y="32"></use><use href="#skull" style="animation: down .4s infinite linear" x="0" y="32"></use><use href="#skull" style="animation: right .4s infinite linear" x="0" y="64"></use><use href="#skull" style="animation: right .4s infinite linear" x="32" y="64"></use><use href="#skull" style="animation: up .4s infinite linear" x="64" y="64"></use></svg>
ログイン後にコピー

これにより、完全なループが提供されます。

すべてをまとめると、作成したアニメーションSVGをborder-imageとして使用して、目的の結果を得ることができます。

私はこれを一日中プレイすることができます...

最初に動作させたとき、アニメーションのプロパティを調整し始めました。これは、GIFの代わりにSVGを使用することの利点の1つです。アニメーションの性質を変更することは、SVGソースファイルのCSSプロパティを変更するのと同じくらい簡単です。より小さなファイルサイズ(特に勾配を扱う場合)、フルカラーサポート、クリアスケーリングは言うまでもなく、すぐに結果を見ることができます。

まず、アニメーションのタイミング関数をeaseに変更すると、それがどのように見えるかを確認しようとします。

また、赤と緑の間の頭蓋骨をフェードさせることもできます。

ハイスコ​​アテーブルの周りを移動するときに、頭蓋骨の変化方向を作成することもできます。

JavaScriptタブにアクセスして、SVGソースコードを調整して自分で試すことができます。

部屋の象(Ahem、Firefox)

私が最初に仕事をしたとき、私はとても幸せでした。ただし、注意すべきことがいくつかあります。まず、最も重要な点は、何らかの理由で、Firefoxは境界の端にアニメーションをレンダリングせず、コーナーのアニメーションのみをレンダリングしないことです。

興味深いことに、SVGを同じアニメーションでGIFに変更すると、完全に機能します。ただし、Chrome Stopのエッジアニメーション! ?

とにかく、これはブラウザのエラーのようです。なぜなら、Firefoxはborder-image-repeatプロパティをstretchとエッジをアニメーション化するためですが、結果は少し奇妙です(ページのトピックに適合するかもしれませんが):

border-image-repeat値をspaceに変更することも機能しているようですが、要素の幅が頭蓋骨サイズ(この場合は32ピクセル)の整数倍でない場合のみです。つまり、アニメーションにいくつかのギャップがあります。

また、コンテナサイズがパッチサイズの倍数(この場合は32ピクセル)ではない場合、頭蓋骨に小さな黒い線のような視覚的な問題があることがわかりました。これは、いくつかの浮動小数点の丸みの問題と関係があると思います。また、ズームインすると壊れる傾向があります。

完璧ではありませんが、絶対に終了しました!最終バージョンを見たい場合は、「The Skull」のハイスコアページにアクセスできます。うまくいけば、あなたはすぐにあなたの名前を見るでしょう!

以上がBorder-ImageでSVGをアニメーション化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

静的フォームプロバイダーの比較 静的フォームプロバイダーの比較 Apr 16, 2025 am 11:20 AM

ここでは、「静的フォームプロバイダー」という用語を埋めてみましょう。あなたはあなたのHTMLを持ってきます

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 Apr 17, 2025 am 10:55 AM

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

HTMLダイアログ要素を使用したいくつかの実践 HTMLダイアログ要素を使用したいくつかの実践 Apr 16, 2025 am 11:33 AM

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

ペーパーフォーム ペーパーフォーム Apr 16, 2025 am 11:24 AM

購入またはビルドは、テクノロジーの古典的な議論です。自分で物を構築することは、あなたのクレジットカードの請求書にはラインアイテムがないため、安価に感じるかもしれませんが

「ポッドキャストにサブスクライブ」リンクはどこにすべきですか? 「ポッドキャストにサブスクライブ」リンクはどこにすべきですか? Apr 16, 2025 pm 12:04 PM

しばらくの間、iTunesはポッドキャストの大きな犬だったので、「ポッドキャストにサブスクライブ」をリンクした場合:

独自の非JavaScriptベースの分析をホストするためのオプション 独自の非JavaScriptベースの分析をホストするためのオプション Apr 15, 2025 am 11:09 AM

サイトの訪問者と使用データを追跡するのに役立つ分析プラットフォームがたくさんあります。おそらく、特にGoogleアナリティクスが広く使用されています

毎週のプラットフォームニュース:テキスト間隔のブックマークレット、トップレベルの待望、新しいアンプロードインジケーター 毎週のプラットフォームニュース:テキスト間隔のブックマークレット、トップレベルの待望、新しいアンプロードインジケーター Apr 17, 2025 am 11:26 AM

今週のラウンドアップ、タイポグラフィを検査するための便利なブックマークレットである。

See all articles