LoginSignup
0
0

More than 1 year has passed since last update.

CSS ellipsis の動きまとめ

Last updated at Posted at 2022-11-27

ellipsis の挙動についてハマったため、実際のデモを通してまとめました。

TL;DR デモ

MDN での説明

まず、MDN の text-overflow の説明は以下になっています。

text-overflow プロパティは、インラインの進行方向にブロックコンテナー要素をはみ出す内容にのみ作用します (例えば、ボックスの下をあふれるテキストには作用しません)。

自分はこの説明では全く理解できなかったため、デモを通して試しました。

基本1

👍 block 要素は ellipsis が効く

<div class="block ellipsis">
    display: block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>

例外🤔: 親が inline-flex の場合は効かない

<div class="inline-flex">
    <div class="block ellipsis">
        [parent] display: inline-flex;<br />
        [child] display: block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
    </div>
</div>

例外の例外1🤔🤔: 親が flex, grid, inline-grid だと効く

<div class="flex">
    <div class="block ellipsis">
        [parent] display: flex;<br />
        [child] display: block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
    </div>
</div>
<div class="grid">
    <div class="block ellipsis">
        [parent] display: grid;<br />
        [child] display: block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
    </div>
</div>
<div class="inline-grid">
    <div class="block ellipsis">
        [parent] display: inline-grid;<br />
        [child] display: block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
    </div>
</div>

例外の例外2🤔🤔: 親が inline-flex でも、widthを指定すると効く

<div class="inline-flex width100per">
    <div class="block ellipsis">
        [parent] display: inline-flex; width: 100%;<br />
        [child] display: block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
    </div>
</div>

基本2

👍 非 block 要素は ellipsis が効かない

<div class="inline-block ellipsis">
    display: inline-block; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお
</div>
<div class="grid ellipsis">
    display: grid; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>
<div class="flex ellipsis">
    display: flex; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>
<div class="inline ellipsis">
    display: inline; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>

例外🤔: width の指定があると、inline-block 要素でも効く

<div class="inline-block width100per ellipsis">
    display: inline-block; width: 100%; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>

例外の例外1🤔🤔: width の指定があっても、 inline-block 以外は効かない

<div class="flex width100per ellipsis">
    display: flex; width: 100%; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>
<div class="inline-flex width100per ellipsis">
    display: inline-flex; width: 100%; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>
<div class="inline-grid width100per ellipsis">
    display: inline-grid; width: 100%; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>
<div class="grid width100per ellipsis">
    display: grid; width: 100%; あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお あいうえお 
</div>

まとめ

  • ellipsis には block 要素を指定しよう
  • inline-block につけたい場合は width を設定しよう
  • 親が inline-flex の場合は、親に width を設定するか、 flex に変更しよう

確認ブラウザ

  • chrome@107.0.5304.107
  • firefox@107.0

※実際のデモは以下より確認ください。

Happy ellipsis life!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0