2016-08-08 49 views
0

私は真ん中に直接テキストを使って円の形をしたdivを作ろうとしています。私はそれを真ん中に水平にすることは簡単ですが、垂直センターでそれを得るのに苦労しています。垂直整列、パディング、ディスプレイなどを試してみましたが、常に最上部にとどまります。円のdivの中央にテキストを垂直に配置する方法は?

は、ここで問題のHTMLです:

<div class="widget"> 
    <p id='case'>{27 cases}</p> 
</div> 

そして、ここでそのdiv要素のCSSです:私は垂直円の真ん中に正確にテキストを取得しようとしている

.widget { 
    background-color: #ff1122; 
    color: yellow; 
    width: 150px; 
    height: 150px; 
    border-radius: 100%; 
    text-align: center; 
    font-size: 24px; 
    vertical-align: middle; 
} 

。これどうやってするの?

答えて

0

line-heightプロパティを追加する必要があります。 line-heightを円の高さと同じにします(この場合は150px)。

line-height:150px; 

.widget { 
 
    background-color: #ff1122; 
 
    color: yellow; 
 
    width: 150px; 
 
    height: 150px; 
 
    border-radius: 100%; 
 
    text-align: center; 
 
    font-size: 24px; 
 
    vertical-align: middle; 
 
    line-height:150px; 
 
}
<div class="widget"> 
 
    <p id='case'>{27 cases}</p> 
 
</div>

あなたはフレックスボックスを使用することに開いている場合、あなたはまた、代わりにこれを行うことができます。これは複数の行で動作します。

.widget { 
 
    background-color: #ff1122; 
 
    color: yellow; 
 
    width: 150px; 
 
    height: 150px; 
 
    border-radius: 100%; 
 
    text-align: center; 
 
    font-size: 24px; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: center; 
 
}
<div class="widget"> 
 
    <p id='case'>This is multiple line text.</p> 
 
</div>

+1

テキストが複数行ある場合、これは問題を作成します。私は 'display:table-cell'を使うことは、個人的にはユースケースの解決策になると思っています。 – Santi

+0

私の答えは、1行と複数行の2つの方法で更新されました。 – Wowsk

0
display: table-cell; 
vertical-align: middle; 

その後、あなたの円表示にする:テーブルと、

.widget { 
 
    background-color: #ff1122; 
 
    color: yellow; 
 
    width: 150px; 
 
    height: 150px; 
 
    border-radius: 100%; 
 
    text-align: center; 
 
    font-size: 24px; 
 
    vertical-align: middle; 
 
    display:table; 
 
    line-height:150px; 
 
} 
 
p { 
 
    display: table-cell; 
 
    vertical-align: middle; 
 
}
<div class="widget"> 
 
    <p id='case'>{27 cases}</p> 
 
</div>

0

これを見てください:

.widget { 
 
    background-color: #f12; 
 
    color: yellow; 
 
    width: 150px; 
 
    height: 150px; 
 
    border-radius: 100%; 
 
    text-align: center; 
 
    font-size: 24px; 
 
} 
 

 
.widget * { 
 
    display:inline-block; 
 
    vertical-align: middle; 
 
} 
 

 
.widget::before { 
 
    content: ""; 
 
    display:inline-block; 
 
    width: 0; 
 
    height: 100%; 
 
    vertical-align: middle; 
 
}
<div class="widget"> 
 
    <p id='case'>{27 cases}</p> 
 
</div>

0

を円display: table;を作成し、内部のpdisplay: table-cell;vertical-align: middle;を持っています。

.widget { 
 
    background-color: #ff1122; 
 
    color: yellow; 
 
    width: 150px; 
 
    height: 150px; 
 
    border-radius: 100%; 
 
    text-align: center; 
 
    font-size: 24px; 
 
    display: table; 
 
} 
 

 
.widget p { 
 
    display: table-cell; 
 
    vertical-align: middle; 
 
}
<div class="widget"> 
 
    <p id='case'>{27 cases}</p> 
 
</div>

関連する問題