テキストが要素の幅を超えた際に、末尾を三点リーダー(…)で省略表示するために使用するtext-overflow: ellipsis;ですが、期待通りに動作しない場合があります。その原因と対処法について解説します。
text-overflow: ellipsis;が効かない原因
text-overflow: ellipsis;は、以下の条件が満たされている場合に有効になります。
white-space: nowrap;が設定されていること(テキストが改行されないようにする)overflow: hidden;が設定されていること(要素からはみ出した部分が表示されないようにする)- 親要素または自身が
display: block;やdisplay: inline-block;など、幅を持つディスプレイ設定であること
これらの条件が揃っていない場合、text-overflow: ellipsis;が機能しません。
display: block;の効果と対処法
特にdisplayの設定がinlineになっていると、要素の幅がテキストの長さに依存するため、text-overflow: ellipsis;が効かないことが多いです。この場合、display: block;またはdisplay: inline-block;に変更することで、要素に幅を設定し、省略表示が正しく機能するようになります。
コード例
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block; /* 必要に応じて変更 */
width: 200px; /* 必要に応じて幅を設定 */
}その他の注意点
親要素の幅や、要素がflexやgridのレイアウト内に配置されている場合など、特殊なケースではさらにレイアウトに合わせた調整が必要です。必要に応じてmax-widthやmin-widthなどを設定することで、表示を安定させることができます。
まとめ
text-overflow: ellipsis;が効かない場合は、displayプロパティをblockまたはinline-blockに変更し、overflowとwhite-spaceの設定を見直してみましょう。また、要素の幅も調整することで、意図した省略表示が可能になります。