2016-04-10 13 views
4

テキストの横にSVGアイコンを配置しようとしています。私はそれを行うための最良の選択肢であるvertical-align: middleを使用して、多くのソースを読みました。テキストをSVGアイコンの横に並べます。

私もそれを実行することができましたが、答えが必要な問題が1つあります。

私が見たすべてのリソースは、img要素にのみvertical-align: middleと記載してください。例えば。

http://codepen.io/johnasp/pen/bqadn/
Vertically align text next to an image?

しかし、私の特定のケースでは、私がsvgspan要素の両方にvertical-align: middleを配置する必要があります。その違いは非常に微妙です。しかしそれはそこにあります。

ここでフィドルです:

html, body { 
 
    font-size: 32px; 
 
} 
 

 
.icon { 
 
    height: 64px; 
 
    width: 64px; 
 
    vertical-align: middle; 
 
} 
 

 
span { 
 
    vertical-align: middle; // Try commenting this line 
 
}
<ul> 
 
    <li> 
 
    <svg viewBox='0 0 16 16' class="icon" > 
 
     <path d="M7.5 1c-4.142 0-7.5 3.358-7.5 7.5s3.358 7.5 7.5 7.5c4.142 0 7.5-3.358 7.5-7.5s-3.358-7.5-7.5-7.5zM7.5 14.5c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6zM8 8v-2h2v-1h-2v-1h-1v1h-2v4h2v2h-2v1h2v1h1v-1h2l-0-4h-2zM7 8h-1v-2h1v2zM9 11h-1v-2h1v2z"> 
 
     </path> 
 
    </svg> 
 
    <span>3.4Km</span> 
 
    </li> 
 
</ul>

spanタグに垂直配向性を与えている行をコメントしてください、そしてテキストが上向きにシフトすることを参照してください。

svgタグとspanタグの両方を垂直に整列させる必要がある理由を教えてもらえますか。svgは他の場所でも動作していますか?

+0

なぜ2つの別々の要素は、あなたが 'span'を削除し、それらの1 INE –

+0

が同様に助けにはならない-縦揃えを置くのと同じ方法で、整列ますwhould。私は故意にテキストにスタイルを与えるために 'span'を入れました。私がリンクした答えを見てください。そこに起こっている –

答えて

6

あなたが問題を抱えていた主な理由は、あなたのアイコンがあなたのSVG viewBoxの中央に座っていなかったからです。

あなたのビューボックスは"0 0 16 16"ですが、チェックすると実際にはアイコンは"0 1 15 15"を占めています。 viewBoxを更新すると、<span>を垂直に整列させる必要がなくなります。

html, body { 
 
    font-size: 32px; 
 
} 
 

 
.icon { 
 
    height: 64px; 
 
    width: 64px; 
 
    vertical-align: middle; 
 
} 
 

 
span { 
 
}
<ul> 
 
    <li> 
 
    <svg viewBox='0 1 15 15' class="icon" id="foo"> 
 
     <path d="M7.5 1c-4.142 0-7.5 3.358-7.5 7.5s3.358 7.5 7.5 7.5c4.142 0 7.5-3.358 7.5-7.5s-3.358-7.5-7.5-7.5zM7.5 14.5c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6zM8 8v-2h2v-1h-2v-1h-1v1h-2v4h2v2h-2v1h2v1h1v-1h2l-0-4h-2zM7 8h-1v-2h1v2zM9 11h-1v-2h1v2z"> 
 
     </path> 
 
    </svg> 
 
    <span>3.4Km</span> 
 
    </li> 
 
</ul>

+0

私は実際に "icomoon"ウェブサイトからアイコンをコピーしました。これらの問題をデバッグする方法を知らなかった(私はなぜ円の上にスペースがあるのだろうと思っていたが)。この情報をありがとう!私は 'SVG'を学ばなければならないと思うでしょう –

+0

あなたが使っているアイコンは16x16ユニットアイコンとして宣言されています。しかし、グラフィックスはその16×16の正方形の左上の15×15セクションしか占有しません。 –

+0

同様のケースを追加し、 'vertical-align:middle;'ルールを ''に追加して解決してください –

関連する問題