2006/12/06

ソースコードにスタイル指定(3)

タグはCODE
せっかくあるんだし。PREを使うにしても<PRE>,<CODE>と併記で。
表示はPRE
何もしないと崩れることもあるので、PRE。タグなら<PRE>スタイルシートならwhite-space:pre;インデントも表示されるし。
ブロック要素で
CODEタグだとインラインになる場合もあります。背景色を変えたときにインラインだと文字の部分だけ背景色が変わるので矩形で表示した方がスマートかと。と思ったんですが、文中に埋め込みたい場合はそこだけ特別扱いでも良いかも<code class="inline"></code>
フォントは等幅
等幅は譲れない。Courier Newがコードっぽい。font-family:'Courier New', [ 好きなフォントs, ...] monospace;
はみ出した部分は適当に
隠れるのもなんなので、overflow:scroll;で良いんじゃないですかね。個人的にはスクロールバーは常に表示されている方がわかり易いと思う。border表示しなくても端がわかりやすいのでborderの替わりにもなりませんか?(borderの代替自体を目的とするのは邪道ですが)
背景色は変える
グレーっぽいのが多いようですが、変える理由が見やすいように、なら見やすければなんでも。
タグはエスケープ
最低でも<>を&lt;&gt;ぐらいの変換はしたい。できれば"&も&quot;&amp;に。エディタのマクロとかでもそれくらいはなんとか。
枠の大きさは横だけ指定
ブログのレイアウトの所為もありますが、Webサイトは縦長が基本かと思われますので、特別の意図がなければwidthだけ指定で十分だと思います。
インデントはスペース
TAB文字は制御がマチマチなので、スペースの方がよさげ。
IEがウンヌン
気にしだしたらキリがない

まとめるとこんな感じです

  1. <style>  
  2.   CODE {  
  3.     width       : 500px;  
  4.     display     : block;  
  5.     overflow    : scroll;  
  6.     white-space : pre;  
  7.     font-family : 'Courier New', monospace;  
  8.     background-color : #EEE;  
  9.   }  
  10. </style>  
  11. <code>  
  12. </code>  
<style> CODE { width : 500px; display : block; overflow : scroll; white-space : pre; font-family : 'Courier New', monospace; background-color : #EEE; } </style> <code> </code>

スクロールバーよりもPRE表示した時の一行目の方が気になりますね。

  1. <code>first line ...  
<code>first line ...

と書くか、

  1. CODE:before {  
  2.   content : attr(title);  
  3. }  
  4. <!-- 略 -->  
  5. <code title="[ここにtitle属性の値が出ます]">  
  6. </code>  
CODE:before { content : attr(title); } <!-- 略 --> <code title="[ここにtitle属性の値が出ます]"> </code>

こんなんも良いですね。