この単純な CSS がなぜ機能しないのかわかりません...
.app a {
height: 18px;
width: 140px;
padding: 0;
overflow: hidden;
position: relative;
margin: 0 5px 0 5px;
text-align: center;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
color: #000;
}
<div class="app">
<a href="">Test Test Test Test Test Test</a>
</div>
4回目の「テスト」あたりで終了するはずです
ベストアンサー1
text-overflow:ellipsis;
次の条件が満たされる場合にのみ機能します。
- 要素の幅は
px
(ピクセル) に制限する必要があります。%
(パーセンテージ) の幅は機能しません。 - 要素には
overflow:hidden
と がwhite-space:nowrap
設定されている必要があります。
ここで問題が発生している理由は、要素width
の がa
制約されていないためです。設定はありますwidth
が、要素がdisplay:inline
(つまりデフォルト)に設定されているため、設定は無視され、他に幅を制約するものもありません。
この問題を解決するには、次のいずれかを実行します。
- 要素を
display:inline-block
またはに設定しますdisplay:block
(おそらく前者ですが、レイアウトのニーズによって異なります)。 - コンテナ要素の 1 つを に設定し
display:block
、その要素に固定のwidth
または を設定しますmax-width
。 - 要素を
float:left
またはに設定しますfloat:right
(おそらく前者ですが、省略記号に関してはどちらも同じ効果を持つはずです)。
をお勧めしますdisplay:inline-block
。レイアウトへの付随的な影響は最小限に抑えられます。display:inline
レイアウトに関しては、現在使用している と非常によく似ていますが、他の点も自由に試してみてください。これらの要素がどのように相互作用するかを理解できるように、できるだけ多くの情報を提供するように努めました。CSS を理解する上で重要なのは、さまざまなスタイルがどのように連携するかを理解することです。
display:inline-block
ここに、どれだけ近かったかを示すために、 を追加したコードのスニペットを示します。
.app a {
height: 18px;
width: 140px;
padding: 0;
overflow: hidden;
position: relative;
display: inline-block;
margin: 0 5px 0 5px;
text-align: center;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
color: #000;
}
<div class="app">
<a href="">Test Test Test Test Test Test</a>
</div>
役に立つ参考資料: