ホームページ ウェブフロントエンド H5 チュートリアル HTML5 SVG 2D 入門 7 — SVG Elements の再利用と参照_html5 チュートリアル スキル

HTML5 SVG 2D 入門 7 — SVG Elements の再利用と参照_html5 チュートリアル スキル

May 16, 2016 pm 03:49 PM
2d svg 引用 再利用

先ほどたくさんのグラフィック要素を紹介しましたが、多くのグラフィック自体が同じ場合、毎回新しいグラフィック要素を定義する必要がありますか?グラフィックを共有できますか?これがこのセクションの焦点、つまり SVG 要素の再利用です。

結合 g 要素
g 要素は、この方法で関連するグラフィック要素のグループを全体に結合するコンテナーであり、この全体を操作できます。この要素は通常、desc 要素および title 要素と組み合わせて使用​​して、ドキュメントに関する構造情報を提供します。通常、適切に構造化されたドキュメントは読みやすく、効率的に表示されます。小さな例を見てみましょう:

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

version="1.1"width="5cm"height="5cm">
2 つのグループ、それぞれ 2 つの長方形< ;/desc>

🎜>






fill="none"ストローク="blue" ストローク幅=".02cm"/>


いくつかの点に注意してください
:
1.xmlns="http://www.w3.org/2000/svg" は、svg 要素全体のデフォルトの名前空間が svg であることを示します。曖昧さがない場合は省略可能です。 svg ドキュメントは XML ドキュメントであるため、XML 名前空間の関連ルールがここに適用されます。たとえば、SVG 表示用の名前空間を指定したり、名前空間のエイリアスを指定したりできます。 2.g 要素はネストできます。 3. 結合されたグラフィック要素には、単一の要素と同じように ID 値を与えることができます。この方法では、必要な場合 (アニメーションや要素のグループの再利用など)、この ID 値を参照するだけで済みます。
4. グラフィック要素のグループを結合すると、この要素のグループに関連する属性 (塗りつぶし、ストローク、変換など) を均一に設定できます。これは、組み合わせが使用されるシナリオでもあります。


Template-symbol 要素

symbol 要素は、グラフィック テンプレートを定義するために使用されます (テンプレートには多くのグラフィックを含めることができます)。このテンプレートは use 要素によってインスタンス化できます。テンプレートの機能は g 要素の機能と非常に似ていますが、どちらも一連のグラフィック オブジェクトを提供しますが、いくつかの違いがあります。 g 要素との違いは次のとおりです: 1. シンボル要素自体はレンダリングされず、シンボル テンプレートのインスタンスのみがレンダリングされます。 2. シンボル要素には viewBox 属性と prepareAspectRatio 属性を含めることができ、これによりシンボルがグラフィック要素を拡大縮小できるようになります。

レンダリングの観点から見ると、シンボル要素に似た要素は、マーカー (矢印とラベルの定義) 要素とパターン (色の定義) 要素です。これらの要素の使用法は、基本的にインスタンス化に使用されます。このため、シンボルに対して「display」属性は意味がありません。
次の変更されたコードは、シンボルの使用方法を示しています:




コードをコピーします
コードは次のとおりです:
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"width="5cm"height="5cm">
2 つのグループ、それぞれ 2 つの長方形







< usexlink :href="#group1"target="_blank"rel="nofollow">

fill="none"ストローク="blue"ストローク幅=".02cm"/>
>

define-defs 要素
SVG を使用すると、オブジェクトのセットを定義し、このオブジェクトのセットを再利用できます (グラフィック オブジェクトだけではないことに注意してください)。最も一般的な例は、グラデーション カラーを定義し、それを他のグラフィックス オブジェクトの fill 属性に割り当てることです。グラデーション カラーは定義時にレンダリングされないため、このタイプのオブジェクトはどこにでも配置できます。再利用はグラフィック オブジェクトに存在することが多く、定義時に直接レンダリングするのではなく、参照された場所でレンダリングする必要があります。これは defs 要素を使用して実現できます。

一般に、推奨されるアプローチは、可能な限り参照されるオブジェクトを defs 要素に入れることです。これらのオブジェクトは通常、altGlyphDef、clipPath、カーソル、フィルター、マーカー、マスク、パターン、linearGradient、radialGradient、シンボルおよびグラフィック オブジェクトなどです。これらのオブジェクトを defs 要素で定義すると、理解しやすくなり、アクセシビリティが向上します。

実際、コンテナ オブジェクトとしての g 要素、symbol 要素、および defs 要素はすべて、さまざまな程度の再利用機能を提供しますが、各要素の特性はわずかに異なる場合があります。たとえば、g 要素は直接レンダリングされます。 、シンボルと定義は直接レンダリングされず、シンボルには viewBox 属性が含まれており、新しいビュー ウィンドウが作成されます。

通常、id 属性は defs で定義された要素に割り当てられ、使用される場合には直接使用されます。要素に応じて、これらの定義はさまざまな場所で使用できます。たとえば、次のプログレッシブ カラーは属性として使用されます:

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

xmlns="http://www.w3.org/2000 /svg"version=" 1.1">
先祖の 'defs' 要素内のローカル URI 参照。​​



🎜>fill="url(#Gradient01)"/>


use 要素を使用して、グラフィック関連要素の定義をドキュメントにリンクできます。例:



コードをコピー
コードは次のとおりです:
xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www. w3.org/ 1999/xlink">
ExampleUse01-Simplecaseof'use'ona'rect'



fill="none "ストローク="blue"ストローク幅=".2"/>



ここでは xlink 名前空間が使用されていることに注意してください。ほとんどのビューアはこれを使用しなくても正しく表示されますが、一貫性を保つために、xlink 名前空間を 要素で定義する必要があります。

参照使用要素
svg、シンボル、g、単一グラフィック要素、および use 要素は、基本的に use 要素によってテンプレート オブジェクトとして参照できます (初期化など)。 use によって参照されるグラフィックス コンテンツは、指定された場所にレンダリングされます。 image 要素とは異なり、use 要素はドキュメント全体を参照できません。
use 要素には x、y、width、height 属性もあります。これらの属性は省略できます。省略しない場合、参照されたグラフィック コンテンツの座標または長さは現在のユーザー座標空間にマッピングされます。

use 要素の機能は、参照されたオブジェクトを独立した非パブリック DOM ツリーにディープ コピーすることと同等であり、このツリーの親ノードは us​​e 要素です。これは非パブリック DOM ノードですが、本質的には DOM ノードであるため、参照されたオブジェクトのすべての属性値、アニメーション、イベント、CSS 関連の設定などがコピーされて引き続き機能し、これらのノードはまた、要素の use Relevant 属性を継承し、先祖を使用します (参照される要素は深いコピーであることに注意してください。これらのコピーされた要素は元の要素とは何の関係もないため、参照される要素の祖先ノードの属性はここでは継承されません)。これらのノード自体が関連 (CSS) プロパティであり、継承されたプロパティもオーバーライドする場合、これらは通常の DOM ノードと一致するため、use 要素で "visibility:hidden" を使用する場合は、必ずしも機能するとは限らないので注意してください。ただし、この部分のノードは公開されていないため、DOM 操作時に use 要素しか表示されず、操作できるのは use 要素のみです。

視覚効果の観点から見ると、use 要素はプレースホルダーに似ています。レンダリング後の視覚効果は、参照されたオブジェクトを使用して直接レンダリングした場合と同じです。
1.use 要素参照。シンボル要素
この場合、視覚効果は次と同等です。
(1) use 要素を g 要素に置き換えます。
(2) use を x、y、width、 height, )参照されたシンボル要素を svg 要素に置き換えます。この svg 要素は、use 要素の width 属性と height 属性を明示的に使用します (これらの属性のない use 要素は 100% になります)。参照されたシンボル要素の内容が、置き換えられた svg にディープコピーされます。

2. use 要素は svg 要素を参照します

この場合、視覚効果は次と同等です。(1) use 要素を (2) x、y、width、height、xlink:href を除くすべての use 属性を g 要素に移動します。 (3) use の x、y 属性を translation(x, y) に変更して追加します。 to g 要素のtransform属性は最後です;
(4) コンテンツを含む参照されたsvg要素をコピーします。このsvg要素はuse要素のwidth属性とheight属性を明示的に使用します(use要素は元の値を使用します)。これらの属性がない場合);

3. その他の状況

これらの場合の視覚効果は以下と同等です:
(1) use 要素を g に置き換えます。要素; (2) use を x、y、width、height、xlink で分割: href 以外のすべての属性を g 要素に移動します。(3) use の x、y 属性をtranslate( x、y) を g 要素のtransform属性の末尾に追加します。(4) 参照要素をコピーします。

以下の例の視覚効果を見てください。



コードをコピーします

コードは次のとおりです:
xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org /1999/xlink"> ExampleUse03-'use'witha'transform'attribute< /desc>

fill="none"ストローク="blue"ストローク幅=".2"/ >
transform="translate(20, 2.5)rotate(10)"/>




下の図の外観は上の図と同じです
:


コードをコピーします

コードは次のとおりです:
xmlns="http://www.w3.org/2000/svg"version= "1.1"> ExampleUse03-'use'witha'transform'attribute< ;/desc>
fill="none"ストローク="blue"ストローク幅="。 2"/>






実用的なリファレンス:
スクリプト インデックス: http://msdn.microsoft.com/zh-cn/library/ff971910(v=vs.85).aspx
開発センター: https://developer.mozilla.org/en/SVG
人気のリファレンス: http://www.chinasvg.com/
公式ドキュメント: http://www.w3.org/TR/SVG11/
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Apple Notes でブロック引用符を使用する方法 Apple Notes でブロック引用符を使用する方法 Oct 12, 2023 pm 11:49 PM

iOS 17 と macOS Sonoma で、Apple は、ブロック引用符や新しい Monostyle スタイルなど、Apple Notes の新しい書式設定オプションを追加しました。それらの使用方法は次のとおりです。 Apple Notes の追加の書式設定オプションを使用して、メモにブロック引用符を追加できるようになりました。ブロック引用形式を使用すると、テキストの左側にある引用バーを使用して、文章のセクションを視覚的に簡単にオフセットできます。 「Aa」形式ボタンをタップ/クリックして、入力する前、またはブロック引用符に変換したい行の途中でブロック引用符オプションを選択するだけです。このオプションは、すべてのテキスト タイプ、スタイル オプション、およびチェックリストを含むリストに適用されます。同じ [形式] メニューに、新しい [単一スタイル] オプションがあります。これは以前の「等幅」の改訂版です。

SVG を使用して画像モザイク効果を実現する方法について話しましょう SVG を使用して画像モザイク効果を実現する方法について話しましょう Sep 01, 2022 am 11:05 AM

Javascriptを使用せずにSVGを使用して画像モザイク効果を実現するにはどうすればよいですか?以下の記事で詳しく解説していますので、お役に立てれば幸いです。

C++ コンパイル エラー: 未定義の参照、解決方法は? C++ コンパイル エラー: 未定義の参照、解決方法は? Aug 21, 2023 pm 08:52 PM

C++は人気のあるプログラミング言語ですが、使用中に「未定義の参照」というコンパイルエラーが頻繁に発生し、プログラム開発に大きな支障をきたします。この記事では、「未定義の参照」エラーの解決策を原因と解決策の両方から説明します。 1. エラーの原因 C++ コンパイラがソースファイルをコンパイルするとき、コンパイル段階とリンク段階の 2 つの段階に分かれます。コンパイル フェーズでは、ソース ファイル内のソース コードがアセンブリ コードに変換され、リンク フェーズでは、さまざまなソース ファイルが実行可能ファイルに結合されます。

svgをjpg形式に変換する方法 svgをjpg形式に変換する方法 Nov 24, 2023 am 09:50 AM

svg は、画像処理ソフトウェア、オンライン変換ツール、Python 画像処理ライブラリを使用して jpg 形式に変換できます。詳細な紹介: 1. 画像処理ソフトウェアには Adob​​e Illustrator、Inkscape、GIMP が含まれます; 2. オンライン変換ツールには CloudConvert、Zamzar、Online Convert などが含まれます; 3. Python 画像処理ライブラリなどがあります。

参照型を返す C++ 関数の利点は何ですか? 参照型を返す C++ 関数の利点は何ですか? Apr 20, 2024 pm 09:12 PM

C++ で参照型を返す関数の利点は次のとおりです。 パフォーマンスの向上: 参照による受け渡しによりオブジェクトのコピーが回避され、メモリと時間が節約されます。直接変更: 呼び出し元は、返された参照オブジェクトを再割り当てせずに直接変更できます。コードの簡素化: 参照渡しによりコードが簡素化され、追加の代入操作は必要ありません。

vue3+vite で svg アイコンを使用する方法の詳細な分析 vue3+vite で svg アイコンを使用する方法の詳細な分析 Apr 28, 2022 am 10:48 AM

svg 画像はプロジェクトで広く使用されていますが、次の記事では vue3 + vite で svg アイコンを使用する方法を紹介します。

C++ 参照とポインター パラメーターの受け渡しを使用するにはどうすればよいですか? C++ 参照とポインター パラメーターの受け渡しを使用するにはどうすればよいですか? Apr 12, 2024 pm 10:21 PM

C++ の参照とポインターはどちらも関数パラメーターを渡す方法ですが、違いがあります。リファレンスは変数のエイリアスです。リファレンスを変更すると元の変数が変更され、ポインタには変数のアドレスが格納されます。ポインタ値を変更しても元の変数は変更されません。参照またはポインターの使用を選択する場合は、元の変数を変更する必要があるかどうか、NULL 値を渡す必要があるかどうか、パフォーマンスに関する考慮事項などの要素を考慮する必要があります。

C++ 構文エラー: 関数がポインターまたは参照を返す場合、ローカル変数または一時オブジェクトを返すことはできません。どうすればよいですか? C++ 構文エラー: 関数がポインターまたは参照を返す場合、ローカル変数または一時オブジェクトを返すことはできません。どうすればよいですか? Aug 22, 2023 am 09:22 AM

C++ はオブジェクト指向プログラミング言語であり、その柔軟性と能力はプログラマーに大きな助けとなることがよくあります。しかし、その柔軟性ゆえに、プログラミング時にさまざまな小さなエラーを避けることは困難です。最もよくある間違いの 1 つは、関数がポインターまたは参照を返すときに、ローカル変数または一時オブジェクトを返すことができないことです。では、この問題にどう対処すればよいのでしょうか?この記事ではその内容を詳しく紹介していきます。この問題の原因は、C++ 言語では、関数の実行中にローカル変数と一時オブジェクトが動的に割り当てられることです。関数が終了すると、これらのローカル変数と一時変数は

See all articles