LoginSignup
1
0

More than 3 years have passed since last update.

【Safari】width 未指定の inline-block 要素に2回もハマったときの備忘録

Last updated at Posted at 2020-05-11

おことわり

「width 未指定の inline-block 要素に」というタイトルにしたものの、BootstrapVue を使ったプロダクトでハマったので、フレームワーク固有の問題かもしれないし、そうじゃないかもしれない備忘録。

❶ 意図せず改行されてハマる

問題点

Safari (iOS/macOS) において、width を指定してない inline-block 要素で、テキストが意図せず改行されてしまう。
Chrome (Android/macOS) では問題なく表示される。

fig1.png

解決策

シンプルに改行を抑制すれば解決した。

  .btn {
    display: inline-block;
+   white-space: wrap;
  }

❷ text-overflow: ellipsis でハマる

問題点

Safari (iOS/macOS) において、width を指定してない、かつ、text-overflow: ellipsis たちを指定した inline-block 要素で、テキストが意図せず truncate されてしまう。
やはり、Chrome (Android/macOS) では問題なく表示される。

width 未指定で text-overflow: ellipsis したいことなんてある? と思っていたけど、max-width だけ指定しておいて width は指定したくない感じになった。

fig2.png

解決策

疑似要素を使って無理やり大きくする。

  .badge {
    display: inline-block;
    max-width: 50%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }

+ .badge:before, .badge:after {
+   content: '';
+   display: inline-block;
+   width: 0;
+ }

width: 0; とはいえ、ちょびっと左右に空白が入ってしまうので、気になる場合は padding を調整するとよさそう。

「もっと良い解決策を知ってるよ」という方がいれば、ぜひコメントにて教えてください。

参考記事

1
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
1
0