2017-12-13 15 views
1

display: inline-flexを使用するリストがあります。リスト内の異なる項目のフォントサイズが異なります。私は、リスト項目がテキストの下部の位置に従って整列していることを発見します。これにより、小さいテキストサイズのアイテムは他のアイテムよりも低く表示されます。リストアイテムを境界矩形で整列します

ただし、項目を境界矩形のベースで揃えたいとします。

私はこの問題を解決するためにハックを見つけました:私は表示したいテキストの両側にドットを含むスパンを配置し、このドットのfont-sizeをリストの最大フォントサイズのサイズに設定し、これらのスパンのうちvisibilityhiddenに設定しました。

これを達成するための非ハックで純粋なCSSの方法はありますか?

JSFiddle

body { 
 
    margin: 0; 
 
} 
 

 
ul { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
li { 
 
    display: inline-flex; 
 
    border: 1px solid #000; 
 
    justify-content: center; 
 
    align-items: center; 
 
    width: 64px; 
 
    height: 64px; 
 
    font-size: 64px; 
 
    line-height: 64px; 
 
} 
 

 
li:last-child { 
 
    font-size: 16px; 
 
} 
 

 
span { 
 
    font-size: 64px; 
 
    visibility: hidden; 
 
} 
 

 
hr { 
 
    position: absolute; 
 
    top: 47px; 
 
    width: 204px; 
 
}
<ul> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    <li>THREE</li> 
 
</ul> 
 

 
<hr> 
 

 
<ul> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    <li><span>.</span>THREE<span>.</span></li> 
 
</ul>

+1

いや...これを行うことができます何のCSSプロパティがありません。フォントの上/下のスペースは理由があります。 ** font-specific ** line-heightsで試してみることもできますが、その方法は狂気です。 –

+2

コンテナに 'flex'を追加しました。アイテムが整列しているようです - https://jsfiddle.net/LgLs556m/1/ - これはあなたが探しているものですか? – sol

+0

コンテナ内の@sol 'flex'は、私が望むものとまったく同じです。ありがとうございました。私はそれを受け入れるためにこれを答えとして追加しますか? –

答えて

2

あなたはこの場合ul要素には、コンテナにdisplay: flexを追加することによって、あなたが欲しいアラインメントを達成することができます。

fiddle

body { 
 
    margin: 0; 
 
} 
 

 
ul { 
 
    padding: 0; 
 
    margin: 0; 
 
    display: flex; 
 
} 
 

 
li { 
 
    display: inline-flex; 
 
    border: 1px solid #000; 
 
    justify-content: center; 
 
    align-items: center; 
 
    width: 64px; 
 
    height: 64px; 
 
    font-size: 64px; 
 
    line-height: 64px; 
 
} 
 

 
li:last-child { 
 
    font-size: 16px; 
 
}
<ul> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    <li>THREE</li> 
 
</ul>

関連する問題