iOS Safariで文章の最後の1文字だけ改行されてしまう現象の対処法

最近iOS Safariで起きた現象とその対処法についてまとめておきます。
ブラウザ表示のトラブルといえばIEでばかり起きるもののイメージがあったのですが、最近意外とSafariで見たときに「あれ?」となることが増えてきました。
文章の最後の1文字だけ改行されてしまう
横幅が足りなくて改行されているのではなく、明らかに横幅は余裕があるのに、最後の1文字だけが改行されてしまいました。
原因としては下記のようなことがあるみたいなのですが、自分の場合はdisplay: inline-block;でフォントサイズを14pxで文字数が全角13文字のときに発生しました。
display: inline-block;を指定しているfont-feature-settings: "palt"を指定している- 文字列が全て全角文字
- 前後に空白がある(コード上の空白も含め)
しかも、iPhone長押しでテキストの選択をすると1行で選択されるので、あくまで要素としては1行になっていて、最後の1文字だけ改行された位置に表示されているような気持ち悪い現象です。
現時点で取れる対処法は下記のどれかです。
- 文章の最後に文字を入れて透明にする
white-space: nowrap;で改行できないようにする- フォントサイズを微妙に変える(やりたくない)
ボタンラベルなどの短い文章であればwhite-spaceがラクですが、文章の場合は空白を入れる必要がありそうです。
文章の最後に文字を入れる
疑似要素を使って、文章の最後に文字を入れ、それを透明にしてあげます。
.paragraph::after {
content: '.'; // 文字を設定
display: inline-block;
width: 0;
color: transparent;
pointer-events: none;
}pointer-events: none;を付けておけば、選択もできなくなります。
これで最後の文字である「.」が改行されたとしても、透明なので見た目は何も変わらないようになります。
改行できないようにする
white-space: nowrap;を使えば、改行できないようになります。
この指定をしておけば、1行に揃ってくれました。
.btn {
white-space: nowrap;
}シミュレーターを使えば試行錯誤しながら調整できる
この現象は実機でないと確認できないので、修正 → 実機で確認を繰り返さないといけないのは少し面倒です。
そこで、MacユーザーであればiOSシミュレーターを使うのがオススメです。
iOSシミュレーターを使えば、開発者ツールで実際にCSSをいじりながら表示を確認できます。
詳細な使い方は過去に記事にしているので、そちらをご覧ください。


Visual Studio Codeで簡易的なローカルサーバーを起動して、コード保存時に自動でブラウザをリロードする拡張機能「Live Server」
iCLUSTA+でWordPressのアップロード容量を上げたいときのメモ
HTMLタグの入力をラクにするスニペット集
ウェブサイト上で簡単にWYSIWYGエディタを実装する「TinyMCE」
Vue CLIをインストールしたのに「command not found: vue」と表示されてしまう場合の対処法
Visual Studio Codeのマルチカーソル機能で文字操作を一括で行う
WordPressで作成した記事をSlackでシェアしたときに、抜粋文が長く表示される場合の対処法
Visual Studio Codeでファイル差分の比較を行う方法
SourceTreeの外部Diff / MergeツールをKaleidoscopeに設定する
ターミナルでGitを使う時に最低限覚えておきたいコマンド
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Figmaのサイズの大きい画像を縮小せずにインポートするプラグイン「Insert Big Image」
Dropboxの「Macをバックアップ」機能でデスクトップや書類フォルダを同期する
WindowsでいうところのバッチファイルをMacで作成する方法
Bracket Pair ColorizerでVisual Studio Codeの括弧を色分けして見やすくする
Gyazo Proにすると「画像キャプチャから編集、共有」までの流れがかなりラクになった
UlyssesとWordPressを連携して投稿する方法
ATOKの単語登録を複数ユーザー辞書に分けて管理する方法
WordPressのデータを取得できるWP REST APIの使い方
UlyssesでシートをDropboxやGoogle Driveなどの外部フォルダ上で管理する