SVG、オブジェクト単位でCSSを適用させる。

〽️ 必要な箇所だけカスタマイズしたい! 〽️ タグの構成を知り、selectできるようにする。 〽️ オブジェクト単位でCSSを使えた! 〽️ 視認性の良いCSSを書きましょう。








必要な箇所だけカスタマイズしたい!

こんにちは、「ふ」です。 前回はSVGファイルをインライン表記してCSSで編集する方法について紹介しました。

今度は、背景色を付けたSVGを描いてみます。

HTML

<svg version="1.1" id="text" xmlns="http://www.w3.org/2000/svg" ・・・ 「「3〜 略 〜」」

CSS

#text { background-color:coral; }

fu.svg

こんな感じになりました。
扨(さて)ここで、テキストの不透明度を下げて少し背景に溶け込ませたい。プロパティは「opacity」、値は0.0〜1.0の範囲で指定します。

CSS

#text { background-color:coral; 「「1opacity:0.2;」」 }

おやおや、背景を含めたSVG全体が透過されてしまいました。

背景はそのままに、テキストを描画しているパスのみをぼやかせたいところが、 これは目的にそぐわない。
SVG画像をパーツ単位でセレクトし編集する手法はないものか。



タグの構成を知り、selectできるようにする。


xmlタグの構成を見てみましょう。


fu.svg(HTML内にインラインで記述)

「「3//xml宣言」」 <?xml version="1.0" encoding=“utf-8"?> 「「3//SVGタグ」」 <svg version = ・・・・・・・・・>     「「3//1つ目のパス」」     <path d = ・・・・・・・・・・・/>     「「3//2つ目のパス」」     <path d = ・・・・・・・・・・・/> 「「3//タグを閉じる」」 </svg>

このうち、pathの部分はこのようになっています。

<path 「「1d」」 = ・・・・/>

ここでの「d」は「data」の意味で、<path>タグのHTML属性が記述されています。
普段よく使っているHTMLタグの例で言えば、

<h2 「「1id」」 = "・・・・・ "> <h3 「「1style」」 = "・・・・・">

これらの「id」や「style」にあたりますね。
ではCSSで呼び出せるように、「id」属性を付けましょう。

<pass 「「1id = "f"」」  d = "・・・・・"/>

これで準備完了です。

 

オブジェクト単位でCSSを使えた!

ではCSSを指定してみます。最初に「#text」に指定した不透明度(opacity)はコメントアウトしておきましょう。

CSS

#text { background-color:coral; 「「3/*opacity:0.2;*/」」 } #text #f { 「「1opacity:0.2」」 }

ブラウザ

成功しました!背景や「u」のパスはそのままに、「F」のパスだけ透過されています。
これでまたSVGの表現幅が広がりましたね!







視認性の良いCSSを書きましょう。

今回はSVG全体、テキストの「F」のそれぞれにid名をつけてCSSを指定しました。
2つだけのidなら混乱することもないので、すべてグローバルチックに

CSS

#text {     } #f {     }

と記述しても編集に苦労することはないでしょう。

しかし実際のページ作成時には複数のSVGを貼り付けたり、1枚のSVGを使いまわしてそれぞれ別のカスタマイズをするケースも考えられます。そのとき、すべてのid名をグローバルチックに記述すると後からの変更作業がわけわかんなくなってしまう恐れがありますね。そこで、

「「3/*SVG*/」」 「「1#text_01」」 {     } 「「3/*path*/」」 「「1#text_01」」 .f {     } 「「1#text_01」」 .u {     } 「「3/*SVG*/」」 「「4#text_02」」 {     } 「「3/*path*/」」 「「4#text_02」」 .f {     } 「「4#text_02」」 .u {     }

このように、後から整理がつきやすいよう親子チックに記述することをお勧めします。またpathの識別にはidではなくclass名をつけることで、その都度新しいネーミングを考えなくても使い回すことができますね。
では、楽しいSVGライフを〜♪






関連記事











「ふ」です。

swift、web、ガジェットなど。役立つ情報や観ていてたのしいページを書いていきたいと思います。

🐧 twitter 🐧