3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HTMLはHTMLでスタイリングしよう

Last updated at Posted at 2018-12-07

HTMLにある機能を使えばいいものを、手を抜こうとしたらしっぺ返しを食らった、そんな話です。

長い長い、識別子

プログラミングをやっていると、時折example_of_very_very_long_identifier_nameexampleOfVeryVeryLongIdentifierNameのように、えんえん長い識別子が誕生してしまいます。これをふつうにHTMLへ表示すれば、アンダーバーや大文字小文字の境界は単語の区切りとして認識されないので、改行が発生せずに行を突き抜ける、などのトラブルを生んでしまいます1

手抜きの手法

表示されるものを制御する上で、タグのない文字列からタグ入りの文字列にしようとすれば(XSSなどを防ぐために)それなりの工数がかかりますが、同じ文字列であればほぼ変化なく運用できます。ということで、改行したい位置にゼロ幅スペースを投入して表示させたところ、きれいに表示がなされました。

思わぬしっぺ返し

そこまではよかったのですが、ある時コードが意味不明なエラーを吐くようになりました。調べてみると、ゼロ幅スペース入りのものをコピペしてしまったがために、コードとして成立せずエラーとなってしまったのでした。しかも、ゼロ幅なだけあって肉眼には全く見えないので、探すのも厄介でした。

正しい方法

手を抜いたのがすべての元凶、ということで、きちんとHTMLでスタイリングすることとしました。<wbr>というタグがあって、「ここで改行していい」という指示ができます(MDN)。アンダーバーで切り分けて、適宜<wbr>と絡ませれば、コピペしても問題なく表示できるようになりました。

教訓

  • 見えない文字が混入すると厄介
  • コピペする前提のものは、きちんとHTMLでスタイリングしよう
  1. Qiitaはプログラムコード入りの文章を書くことが前提のサイトということもあって、<body>レベルでword-wrap: break-wordをかけてありました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?