del 要素を表示しないスタイルの是非

del 要素を表示しないスタイルの是非(2004-03-11)

やや蛇足になりますが、HTML4.01仕様書で、del要素とins要素は、それが変更点であるということを明確にするようなスタイルで表現されるべきであるとされています。しかし、del要素に対してのスタイルの例として、「表示しない」ことで変更点であることを表現するというものが挙げられているのですが、表示されなかったら明確ではないと思うのですがね。取り消し線をひくなど、以降に続く表示例のほうが相応しいと思います。

表示されなかったら明確ではないという意見には賛同できない。書籍が版を重ねる際に記述を修正する場合には、削除された文章を隠すのが通例となっているが、yuu さんは「元々何らかの記述があり、それが削除された」ことを示すのが del 要素の役割とお考えだから、引用したような意見になるのだろう。だが、del 要素の役割は「内容の無効化」ではなかろうか。元々どのような記述が存在したのかということは、重要ではない。むしろ、del 要素の内容は存在しないものとして扱うべきではないか。

del 要素の表示・非表示に、たいへん示唆に富む例が紹介されている。

さて、望ましい削除と追記の方法はいずれか? 仕様書に deleted text may not be shown at all とあるのは、まさにこういった問題を予見していたからではなかろうか。表示結果から要素の使い方を考える……というと、本末転倒なようだけれども、一概にそうとはいえない。結果から理由を類推させる、という説明の仕方もある。仕様書の解説は、del 要素の意義は「削除の告知」ではなく「内容の無効化」だ、と端的に表現している。

追記:2004年3月13日

del 要素と ins 要素は版管理の必要な文書を想定しているので、過去の記述を断りなく消すことが一切できない状況が前提となっています。通常の文書はそういった制約下にありませんから、基本的に del 要素などを使う必要はないでしょう。また音声系ブラウザの場合、del 要素の内容をいちいち読み上げられる現状は、かなりうるさく感じます。削除訂正された箇所は、とくに興味のある人だけが知ることができれば(例えばユーザスタイルで del 要素の読み上げを許可するなど)十分かもしれません。

「元々どのような記述があったのか」を重視する場合には、del 要素ではなく、他の方法を用いるべきではないかと思うのです。一般に Web サイトの目次は削除・追記が頻繁に行われますが、del 要素や ins 要素でそれらをいちいちマークアップしている例を、私は見たことがありません。目次の変遷は「更新履歴」などで示すのが妥当なのであって、「削除」だから del 要素、「追記」だから ins 要素、という単純なものではないだろう、と私は考えます。

ins 要素と del 要素のスタイル設定(2005-06-23)

アンケート結果を見ての通りで、ユーザフレンドリーな企業としては、新仕様は当然の選択であった、と私は思う。その他、詳細は香雪ジャーナルに概ね同意。

さて本題。

私は公開した記事に後から手を入れまくるので、最近1年くらい del 要素とか ins 要素を使っていない。ときには記事の趣旨自体、変わってしまうのだからひどい。はてなブックマークに引用されている部分がそっくり消えていたりするのは、そのためです。圧力とかじゃなくて、単に推敲過程で消しただけ。

でまあ、そんな私からみて、追記のスタイル設定として「下線を引く」ってのは、正直どうかな、と。

ins 要素はインラインでもブロックレベルでも用いられるので、たしかにスタイル設定は悩みどころ。ちなみに「下線を引く」ことは W3C の CSS2 勧告附記 A で提案されています。CSS2実装時のデフォルトスタイルシートとしては以下を採用するよう推奨するなんて書いてありますので、たいていのブラウザがこれにしたがっているわけですね。

私も昔は下線を引いていたのですが、なんだか目立ちすぎます。なまじっかの強調スタイルより目立ち、何より文章が読みにくくなってしまう。「追記」かどうかって、それほど重要な情報か? と思い、私はしばらく前に think (デフォルトスタイル)の ins 要素関連の記述を変更し、薄い色の背景色をつけるだけにしました。

真琴さんは追記や削除にこだわる方なので、この記事に限らず、hxxk.jp のあちこちに追記部分が出てきます。グレーで点線だからそれほどでもないのですが、最近はこの程度でも何となく……。Opera ではユーザモード常用なので忘れていますが、IE で見ると気になるんですよね。

ちなみに think では del 要素を display:none; としています。ブラウザは del 要素の内容を表示しないかもしれませんよ、ということは HTML4.01 の勧告に記載されてます。じゃあ、別に構わないかな、という発想。正直、スタイルを考えるのが面倒になったので、「もういいや、消しちゃえ」という安直な……。

Information