2016-03-12 13 views
5

インラインSVGアライメントに問題があります。テキストとSVGを含むボタンを作成しました。そして、SVGがテキストと少なくとも同じ大きさであれば、アラインメントは正しく機能しますが、SVGの高さがテキストよりも小さい場合は失敗します。CSSのSVGの垂直方向の配置

真ん中が正確であることを示すために、2色の背景ボタンが付いたテストケースを作成しました。 SVGの高さがテキストの高さよりも小さいので、2番目のケースが完全に整列していないことを近く見ているかどうかを見ることができます。

これを修正する方法はありますか?それ以外のやり方はしないでください(jsしてください)?

テストケース:https://goo.gl/KYDKGH

+0

あなたのフィドルで説明している問題はありません。どのブラウザで問題が発生していますか? – dewd

+0

Chrome最新バージョン。私はMac Retinaにいる。それは非常に微妙ですが、そこにあります。 – MyWetSocks

+0

それはフォントですか?フォントは異なるエンジンで異なってレンダリングされます。また、フォントを指定しなかった場合は、ブラウザとo/sによって異なるデフォルト値が得られます。 – dewd

答えて

14

fiddle 1 - あなたがこのようなオブジェクトのコンテナとposition:absoluteposition:relativeを使用することができます。

position: absolute; 
    top: 50%; 
    -webkit-transform: translateY(-50%); 
    -ms-transform: translateY(-50%); 
    transform: translateY(-50%); 
    left: 0; 
    right: 0; 
    margin: auto; 
    text-align: center; 

のトップを選ぶコンテナの垂直中心にtop: 50%移動オブジェクト(中心ではない)ので、transform: translateYは、それをオブジェクトの中心によってコンテナの真ん中に正確に置くために、それをサイズの50%上に移動させます。

PS:text-align:center;left:0;right:0;margin:auto水平整列のためのものです。

fiddle 2 - またはこのようなコンテンツを揃える垂直にalign-itemsを有する容器にdisplay:flexを使用:

display: -webkit-flex; /* Safari */ 
    display: flex; 
    -webkit-align-items: center; /* Safari 7.0+ */ 
    align-items: center; 
    -webkit-justify-content: center; 
    justify-content: center; 

がPS:justify content水平整列のためのものです。

+2

2番目の解決策が私のためにトリックでした。どうもありがとうございます。 – MyWetSocks

関連する問題