テキストが要素の幅を超えた際に、末尾を三点リーダー(…)で省略表示するために使用する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
の設定を見直してみましょう。また、要素の幅も調整することで、意図した省略表示が可能になります。