2009年4月6日月曜日

brタグの正しい利用場面はどこ?

HTMLには改行を表す<br>タグというものがあります。間違って使われるタグとして有名な<br>ですが、そもそもどこで使えばいいのでしょうか?

個人ブログなどではよく段落の区切りとして<br>を使っているのを見ますが、これは言うまでもなく誤りです。段落は<p>で区切るべきです。段落区切りのために<br>を使ってはいけません。reflux flowによると、<br>段落内で視覚整形目的で改行を入れたい場合に使うのがそもそもの目的のようですが、視覚整形はCSSで全てやるべきですよね。<address>内の区切りを示したいのなら、<address>を複数入れるべきです。

誤って使われる一番の理由は、WYSIWYGなエディタで改行を入力すると、自動的に<br>に変換されてしまうことにあると思います。だからブロガー達は知らず知らずに誤った使われ方をしてしまうのです :s エディタ内での改行は<br>ではなく、<p>タグの終了を表すようにすればいいのです。<br>を複数入力して大きくスペースを開けたい場合はstyle="margin-bottom: 100px;"等の属性指定をすればいいのです。そんなWYSIWYGエディタ作ってください。Googleさん。(まずはBloggerから。。)

XHTMLでは同じ空要素として<hr>タグが定義されていますが、これはCSS非対応のブラウザに対して区切りを示すために使用することが許されているようです。う~ん、CSS非対応なら独自の視覚整形機能を持っているだろうから、<hr>は不要だと思うんですけどね :s <br>も同じようにCSS非対応のブラウザのために使えばいいんですかね?

結局、ソースコードを載せるときの書式として、長い行を要素の端で折り返して、かつ任意の場所で改行したい場合に、<br>を使うぐらいしか思いつきませんでした。正しい使い方、というよりそれしか実現方法がないから使う、と言った方がいいかもしれません。

ちなみに、上記のソースコード表現を行う場合に注意があります。ソースコードの表現には<pre>を使ってwhite-space: normal;を指定すれば上記条件を満たせますが、white-space: normal;だと連続する空白文字列が1つにまとめられてしまいます。これを回避するには、空白文字を&nbsp;に置換する必要があります。めんどくさいですね。(CSS2.1にはpre-wrapがありますが、IE8で初めてサポートされるぐらいレアな値なので、まだまだ使えません :( )

<br>の正しい使い方については、同じような議論は色々なところで行われています(Robert's talk等)が、結局よく分からず。積極的に使おうとする必要はないんでしょうか。

詳しい人いましたら教えてください!

0 件のコメント: