teratail header banner
teratail header banner
質問するログイン新規登録
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1367閲覧

SVGスプライトを使いながら、サイズを親要素に比例させる方法

kurazushi

総合スコア43

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2022/03/17 18:44

編集2022/03/17 19:10

0

0

前提

SVGスプライトを用います。

実現したいこと

親要素のサイズに応じて、SVGのサイズが自動で変わるような機能を実現したいです。

SVGスプライトの問題点

SVGスプライトバージョンにおいて、サイズが自動で変わってくれないのが問題です。
イメージ説明

該当のソースコード

比較サンプル → https://jsfiddle.net/zn7ctop9/

html

1<!-- 問題点の説明 --> 2<p>上(べた打ちバージョン)<br> 3親要素(.left) の width に応じて、<span class="red">SVGのheight</span>が自動で変わってくれる</p> 4<p>下(SVGスプライトバージョン)<br> 5<span class="red">SVGのheight</span>が自動で変わってくれない</p> 6 7<!-- ベタ打ちバージョン --> 8<div class="flex"> 9 <div class="left"> 10 <svg class="icon icon-plus" viewBox="0 0 24 24"> 11 <path d="M5 13h6v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6h6c0.552 0 1-0.448 1-1s-0.448-1-1-1h-6v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1v6h-6c-0.552 0-1 0.448-1 1s0.448 1 1 1z"/> 12 </svg> 13 </div> 14 <div class="right"> 15 <p>.right</p> 16 </div> 17</div> 18 19<!-- SVGスプライトバージョン --> 20<svg aria-hidden="true" style="position: fixed; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 21 <defs> 22 <symbol id="icon-plus" viewBox="0 0 24 24"> 23 <path d="M5 13h6v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6h6c0.552 0 1-0.448 1-1s-0.448-1-1-1h-6v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1v6h-6c-0.552 0-1 0.448-1 1s0.448 1 1 1z"/> 24 </symbol> 25 </defs> 26</svg> 27 28<div class="flex"> 29 <div class="left"> 30 <svg class="icon icon-plus"><use xlink:href="#icon-plus"></use></svg> 31 </div> 32 <div class="right"> 33 <p>.right</p> 34 </div> 35</div> 36

css

1.flex { 2 display: flex; 3 align-items: center; 4 background: #d1d1d1; 5 margin: 10px; 6} 7 8.left { 9 width : 50px; 10 border: 1px solid red; 11} 12 13.icon { 14 width : 100%; 15} 16 17.red { 18 color : red; 19}

試したこと

SVGスプライトバージョンのstyle属性を次のように auto にしてみましたが、変化なしでした。

html

1style="position: fixed; width: 0; height: 0; overflow: hidden;"

↓ auto にしてみました

html

1style="position: fixed; width: auto; height: auto; overflow: hidden;"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

サイズを指定していないのが原因だと思いますので、

html

1<svg class="icon icon-plus" viewBox="0 0 24 24"><use xlink:href="#icon-plus"></use></svg>

のようにサイズを指定してはどうでしょうか。

投稿2022/03/18 02:12

Lhankor_Mhy

総合スコア37488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurazushi

2022/03/18 05:17

symbolの方にだけあればいいと思い込んでいました!ありがとうございました!
Lhankor_Mhy

2022/03/18 05:18

お役に立てたようで何よりです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問