2009.08.10.

SyntaxHighlighter Evolved を使ってみる

WordPressに便利機能を追加してくれるのがプラグインです。
ちょっと前から使っているのが、ソースコードを見やすくしてくれて行番号もふってくれる「SyntaxHighlighter Evolved」です。
ウェブ上でソースコードを表示するときって、どうやって書くのが正解なのか正直言ってよくわかりません。preタグの中でさらにcode要素としてソースを書くのが一般的なようなので、このサイトでもそれに習っていました。ただソースコード部分は、そのままだとうまく表示されないので、実体参照変換してから貼り付けるとかいろいろと面倒。
そういうのを非常に楽ちんにしてくれるのが、「SyntaxHighlighter Evolved」なわけです。

こんなふうに表示してくれます。

SyntaxHighlighter Evolved のスクリーンショット

SyntaxHighlighter Evolved のスクリーンショット

ステキだ。記入時に実態参照変換も必要ありません。
使い方も簡単。ソースの内容を例えばcssならば、[ css ] cssソース [ /css ] というふうにソース内容に合わせて囲ってあげるだけ。

で、例によってウェブサイトデザインに合わせて外観イメージを少しいじってみます。こんな感じで

<div id="menu">
	<ul>
		<li>Home</li>
		<li>Themes</li>
		<li>About</li>
	</ul>
</div>

「SyntaxHighlighter Evolved」を組み込むと、pluginsフォルダの中のsyntaxhighlighterの中にさらにsyntaxhighlighterがあってその中にstylesフォルダががあります。中には、cssファイルがいろいろはいっています。
今回は、shThemeDefault.cssを元にして改変します。「SyntaxHighlighter Evolved」でDefault設定を使う場合参照しているのは、shCore.cssとshThemeDefault.cssのふたつなので、shThemeDefault.cssの後ろの方にshCore.cssの変更分も合わせて下記のcssを書き加えました。

/*shThemeDefault.css改変部分*/

.syntaxhighlighter
{
	background-color: #e7e5dc !important; /*行番号部分の色*/
}

/* Highlighed line number */
.syntaxhighlighter .line.highlighted .number
{
	background-color: #ffdc40 !important; /*ハイライトしたときの行番号色*/
	color: black !important; /*ハイライトしたときの行番号文字色*/
}

/* Highlighed line */
.syntaxhighlighter .line.highlighted.alt1 .content,
.syntaxhighlighter .line.highlighted.alt2 .content
{
	background-color: #ffdc40 !important; /*ハイライトしたときのコード行色*/
}

/* Add border to the lines */
.syntaxhighlighter .line .content
{
	border-left: 3px solid #fff !important; /*行番号とコードの境界*/
}

/* Second line */
.syntaxhighlighter .line.alt2 .content
{
	background-color: #f6f6f6 !important; /*偶数行の色*/
	border-right: 3px solid #fff !important; /*偶数行の右端にボーダー追加*/
}

.syntaxhighlighter .line .content .block
{
	background: url(wrapping.png) 0 1.5em no-repeat !important; /*改行アイコン 行間調整*/
}

.syntaxhighlighter .toolbar /*ツールバーのバックカラー消去*/
{
	background-color: transparent !important;
	border: none !important;
}

.syntaxhighlighter /*追加項目*/
{
	width: 90% !important;
	overflow: auto !important;
	margin: 18px auto 36px !important;
	border: 1px dotted #959aa1 !important;
}

.syntaxhighlighter:before /*タイトル部分追加*/
{
	display: block !important;
	content: "Source Code";
	color: #6f6e69 !important;
	background-color: #e7e5dc !important;
	height: 20px !important;
	width: auto !important;
	padding-left: 5px !important;
	border-bottom: 3px solid #fff !important;
}

/*shCore.css改変部分*/

.syntaxhighlighter,
.syntaxhighlighter div,
.syntaxhighlighter code,
.syntaxhighlighter span
{
	line-height: 1.5em !important; /*行間調整*/
}

.syntaxhighlighter
{
	padding: 0px !important; /* 外周のpaddingは無し */
}

.syntaxhighlighter .toolbar
{
	padding: 2px 8px 2px 0 !important; /* ツールバー表示調整 */
}

お気に召したら、使ってみてください。

本当は、WordPressサイト管理画面の「SyntaxHighlighter Evolved」設定にある「Additional CSS Class(es)」という項目で、自分で作ったcssを読み込めるのかなと思ったんですが、使い方がよくわかりませんでした。英語のページもあさってみましたが、なにしろ英語は苦手なもんでチンプンカンプン。誰かこの設定の使い方わかった人がいたら、教えてください。
そんなわけで、ここでは単純にshThemeDefault.cssの後ろに書き足したというわけです。

わからないついでに、もうひとつ。
頭のところで「Source Code」と表示するようにしてありますが、できれば「CSS」とか「HTML」とかソースに合わせて表示したいところです。
前のバージョンでは、class名が”html”などとなっていたので、書き分けられましたが「Evolved」ではclass名が”brush: xml;”などとなっています。これってcssであつかうときは、どうしたらいいんだろう?よくわかりません。
「教えて、えらい人!」

詳しい導入方法、使い方などは、下記サイトをご覧になるとわかりやすいと思います。

2009.03.08.

CSSでドロップダウンメニュー

このブログを作るに当たって、いろいろと試行錯誤をした記録です。すぐ忘れてしまうので、覚書として書き留めています。今回はヘッダーのメニュー編。

CSSのドロップダウンメニューです。テストバージョンのオリジナルWordPress Themeで一部表示がおかしくなっているところがあったので、少し整理してみました。
ヘッダー部分に横並びメニューとしてデザインしていて、メニュー項目にカーソルを合わせると階層式に子メニューが表示される、よく見るタイプです。

まずはメニューなのでリンク項目であることを前提に、リストとしてマークアップします。(DEMOではリンク部分でも別のページに飛ばないようにしています)

<div id="menu-sample">
<ul>
  <li><a href="#">01 S</a>
  <ul>
    <li><a href="#">02 短く</a></li>
    <li><a href="#">02 ても</a></li>
    <li><a href="#">02 幅一定</a></li>
  </ul>
  </li>
  <li><a href="#">01 middle</a>
  <ul>
    <li><a href="#">02 Mサイズ</a></li>
    <li><a href="#">02 真ん中</a>
    <ul>
      <li><a href="#">03 長い文章も折り返さずに表示</a></li>
      <li><a href="#">03 一番長い横幅にそろいます</a>
        <ul>
        <li><a href="#">04 menu-aaaaaaaa</a></li>
        <li><a href="#">04 menu-bbbbbbb</a></li>
        <li><a href="#">04 menu-cccccccc</a>
        <ul>
          <li><a href="#">05 menu-a</a></li>
          <li><a href="#">05 menu-b</a></li>
          <li><a href="#">05 menu-c</a></li>
        </ul>
        </li>
       </ul>
       </li>
      <li><a href="#">03 ただしIEを除く</a></li>
    </ul>
    </li>
    <li><a href="#">02 Mサイズ</a></li>
  </ul>
  </li>
  <li><a href="#">01 For a long sentence</a>
  <ul>
    <li><a href="#">02 基本の</a></li>
    <li><a href="#">02 横幅は</a></li>
    <li><a href="#">02 94pxに</a></li>
    <li><a href="#">02 設定</a>
    <ul>
      <li><a href="#">03 文字数が多くなると</a></li>
      <li><a href="#">03 IE以外は</a></li>
      <li><a href="#">03 最大の横幅に</a></li>
      <li><a href="#">03 合わせて広がります</a></li>
    </ul>
    </li>
  </ul>
  </li>
</ul>
</div>

1段目は横並びのメニュー項目で、2段目以降は入れ子構造にしていきます。

次はCSS。
まずは、ドロップダウンメニューとしての基本形。

#menu-sample ul { /*リスト全体*/
  list-style: none;
  margin: 0;
  padding: 0;
}

#menu-sample li { /*リストの1段目*/
  float: left;
  min-width: 94px;
  white-space: nowrap;
}

#menu-sample ul ul { /*2段目以降*/
  display: none;
  position: absolute;
  z-index: 10;
}

#menu-sample li li { /*2段目以降のリスト項目*/
  clear: left;
  position:relative;
  width: 100%;
}

#menu-sample ul ul ul { /*3段目以降*/
  top: 0;
  left: 100%;
}

#menu-sample ul li:hover > ul {
  display: block;
}

*+html #menu-sample ul ul a { /*IE用*/
width: 72px; /*(94-10-10-1-1)パディングとボーダーの分を引いた値*/
white-space: normal; /*幅に応じて改行*/
}

ul:リストの装飾は不要なので削除。マージン、パディングも0にして、いったんきれいな身体に。

1段目のliをfloat: leftで横並びにします。
できればひとつひとつのメニュー項目の幅をそろえたいと思いますが、文字数によってはピッタリ納まるとは限らないので、あくまでも最小幅とし、文字数が増えても対応できるようにしておきます。それがmin-width: 94px部分。94pxはヘッダーの幅と入れたいメニュー項目数から逆算して適当に決めた数値。
white-space: nowrapは下層のメニュー項目も改行しないようにしています。これを入れておかないと3段目以降で固定幅になって、文字が改行されてしまいます(なぜなのかよくわからない)

ul ulはメニューの2段目以降を指定しています。ここで下層のメニューが見えないようにdisplay: noneで 非表示にします。
positionの使い方がわかりにくいですが、ul ulにposition: absoluteを指定して、2段目以降のulにabsoluteがかかるようにします。2段目のulの親要素である1段目のliにはpositionが指定されていないので、親要素の下に絶対配置されます。
z-index: 10は念のため。サイドバーなどにメニュー項目が重なったとき、下になって隠れてしまう場合もあるので。

2段目以降のリスト項目li liはclear: leftで縦並びに戻します。
position:relativeを入れて2段目以降のリスト項目左上を基準とします。
width: 100%は、リスト項目どれかの文字数が多いときにそれに合わせて同じ幅になるようにしています。

3段目以降を示すul ul ulにもabsoluteがかかっていますが、親要素である2段目以降のliでposition:relativeを指定してあるのでその要素の左上が基点となり、子要素であるulにtop、leftなどで基点からの位置を指定します。
ここではtop: 0でliと下段のulのラインを揃えて、left: 100%で親要素のul幅分右へずらしています。
4段目、5段目と階層が増えても、親要素、子要素の関係は変わらないので同じように表示されます。

あとは、li:hover > ul で子要素がある項目にカーソルが重なったときに直下のulをdisplay: blockで表示するようにします。

例によって、IE用の対策。

まずIEではli liでwidth: 100%を指定してもなぜか最大幅のメニュー項目に合わせて同じ幅に広がってくれないので、*+htmlハックでIE用にメニューの幅を固定して改行するように指定してます。
他のブラウザと見た目が少し変わりますが読めるから大丈夫、というレベルで対応。

そもそもIE6は疑似クラスの :hover や min-width が効かないので、「Google Code」の「IE7.js」を使わせてもらいます。

htmlのhead部分に

<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
<![endif]-->

を書き込むだけです。

IE6は、しょうがないから最低限の対応だけしておくか、というスタンスなのでご勘弁を。
これに関しては、「なるべくならIE用のHackは使いたくない」と「「IE7.js」で IE6 でも透過 PNG、疑似クラス :hover に対応」を見てください。
上記の*+htmlハック部分も「IEの条件付きコメント」を使って別ファイルにしたほうがスッキリします。

あとは、メニューっぽく装飾を施します。

#menu-sample li {
  margin-left: 3px;
}

#menu-sample a { /*1段目以降のメニュー文字*/
  font-size: 13px;
  line-height:15px;
  color: #dadada;
  text-decoration: none;
  text-align: center; /*1段目は文字を中央合わせに*/
  padding: 5px 10px;
  background-color: #242424;
  display: block;
}

#menu-sample a:hover {
  color: #f90;
  background-color: #111;
}

#menu-sample ul ul {
  padding-top: 2px;/*2段目を少し下げた*/
}

#menu-sample ul ul ul { /*3段目以降*/
  padding-top: 0; /*2段目のパディング2pxを元に戻す*/
}

#menu-sample li li {
  margin-left: 0; /*liのmargin-left: 3pxを元に戻す*/
}

#menu-sample ul ul a { /*2段目以降のメニュー文字*/
  font-size: 11px;
  line-height: 1.3;
  text-align: left; /*2段目以降は左寄せにもどす*/
  border-top: solid 1px #555555;
  border-right: solid 1px #070707;
  border-bottom: solid 1px #070707;
  border-left: solid 1px #555555;
  background-color: #343434;
}

文字色やバックグラウンドの色は、メニュー内のa要素で指定。display: block;でブロック要素にしてサイズを固定します。
a:hoverでカーソルが乗った位置がわかるように文字色とバックグラウンド色が変わるようにします。
2段目以降は文字サイズを少し小さくしてみました。
その他諸々の指定は、個人個人の好みの問題です。

ただ、やっぱりIEが絡んでくるとなかなかうまく表示されない場合もあって、たとえば2段目と3段目で少し隙間を空けようかとか、逆にちょっと重ねてみようかと思うと、細かいところでいろいろ苦労をすることになります。Operaも少し挙動が変になったりします。

とりあえずこのサンプルでは、その辺も考えた上での基本形ということで IE6,7,8、Opera、Firefox、Safari それぞれのブラウザであまり苦労をしないで動くような最低限のデザインにしてあります。

あとは応用ですので、バックの色やボーダー、イメージ画像を使ったりしていろいろバリエーションを楽しめると思います。

参考サイト

2009.01.16.

角を丸める 応用編

前回の「角を丸めてみる」という記事で、p要素の範囲に色を付けて、四隅を丸める基本形を作ってみました。

この:beforeや:afterを使ったデザインは、なかなかおもしろくて簡単にいろいろな応用が利きそうなので、いくつかやってみます。

まずは、角を丸めたラインで囲ってみます。
用意するのは、Rラインの画像4枚。R左上 R右上 R左下 R右下

p要素を単純にボーダーラインで囲ってあげて、そのままだと四角い枠なので四隅にそれぞれボーダーと同色のRライン画像をボーダーにかぶせるように配置してやればOK。方法は「角を丸めてみる」の記事で書いたのと同じ。

HTML<p class="r-line">この部分が囲みたい文章の中身です。</p>
CSSp.r-line {
    padding: 0 15px;
    border: 2px solid #a0410d;    
}

p.r-line:before {
    content: url("images/r-line-tl.gif");
    display: block;
    background-image: url("images/r-line-tr.gif");
    background-repeat: no-repeat;
    background-position: top right;
    margin: -2px -17px 0;
}

p.r-line:after {
    content: url("images/r-line-bl.gif");
    display: block;
    background-image: url("images/r-line-br.gif");
    background-repeat: no-repeat;
    background-position: bottom right;
    margin: 0 -17px -2px;
}

例えば、エゾリス枠こんな画像を作って:beforeの中に入れて位置を調整してあげれば、

ボーダーラインと絡めた飾り枠も簡単、簡単。
このサイトの中では、引用表示なんかにもこの方法を使ってます。
ただし、IEでは :beforeも:afterも対応していないので、ボーダーラインの囲みだけになってしまいます。

2009.01.14.

角を丸めてみる

このようにブロック要素の四隅を丸める方法です。このサイト「ezorisu-web」のコメント欄は、フキダシっぽく見せるために色を付けて角を丸めてあります。(トラックバックは四角いままで区別している)
p要素内に疑似要素である;beforeと:afterを追加して、その中に角を丸める画像を入れています。一番シンプルだと思われるやり方です。

ただしIEでは疑似要素に対応していないのでうまくいきません。IEで見た場合は、角丸処理をした:beforeと:after部分が表示されないだけで、色つきの四角いブロックに囲まれた文章はきちんと読めます。

図解-1
まずは四隅をまるく見せるための画像を用意。大抵は1/4円の画像で処理していると思いますが、ここでは1/4円の外側の画像を使っています。正方形に内接する円の外側部分四つをそれぞれ左上、右上、左下、右下画像とし、色は背景色に合わせます。このページは背景色が白なので、白い画像にします。

これだとページの背景色と同色でブロック要素の隅をまるく覆っているだけなので、ブロック要素の色をいろいろ変えても丸めるための画像は最初に作ったよっつのみ。そのつど色を合わせた角丸用の画像を作らなくてもいいです。ただし、この方法が有効なのは背景色が単色の場合だけですが…

とりあえず左上をmaru-tl.gif、右上はmaru-tr.gif、左下をmaru-bl.gif、右下をmaru-br.gifとしました。

HTMLは、p要素に適当なクラス名を付けます。ここではclass=”maru”にしました。

HTML<p class="maru">この部分が囲みたい文章の中身です。</p>

これだけ。余計な要素が付かないのでシンプル。

次にCSSです。クラス名”maru”を付けたp要素に対して文章が読みやすいように両サイド15pxほどパディングで横方向の余白を作りました。上下方向は角丸の処理でそのスペース分逃げることになるので0pxでOK。”maru”部分全体の色もここで設定。

図解-2

p要素”maru”に対して:beforeと:afterを追加します。:beforeと:afterはパディングの内側に入ることになります。

図解-3

次に:beforeの中にcontentプロパティを使って左側のmaru-tl.gif画像を挿入。display:blockを忘れずに。さらにバックグランドイメージで右のmaru-tr.gifを追加。リピートしないようにして、位置は右上。afterも同じように追加。

図解-4
あとは、:beforeの左右をパディングでずれた分だけマージン-15pxで外側にずらしてあげます。
afterも同じ。

最終的なCSSは、このようになります。

CSSp.maru {
    padding: 0 15px;
    background-color: #fcdbb6;
}

p.maru:before {
    content: url("images/maru-tl.gif");
    display: block;
    background-image: url("images/maru-tr.gif");
    background-repeat: no-repeat;
    background-position: top right;
    margin: 0 -15px;
}

p.maru:after {
    content: url("images/maru-bl.gif");
    display: block;
    background-image: url("images/maru-br.gif");
    background-repeat: no-repeat;
    background-position: bottom right;
    margin: 0 -15px;
}

ポイントは、

  • ブロック要素内の上と下に疑似要素:beforeと:afterを追加。
  • contentとbackground-imageを使って、疑似要素内にふたつの画像を表示する。
  • 疑似要素の位置をmarginを使って調整する。

いろいろと応用が利きそうですね。

あとはIEでは表示されないので、IE用に別枠で対策を考えるか、IEを潔く切り捨てるかです。
このようなさりげないデザインは、もちろんウェブサイトをきれいに見せますし、細かいところで印象も変わってくるでしょう。しかし、レイアウトが大きく狂うわけでもないし、もちろん文章が読めなくなるわけではありません。
「ezorisu-web」では、この辺の細かな印象の違いにはIE対応しない方針です。昨今、読む方としてはいろんなブラウザを選べるわけだし、これもIEの個性と思えばそれはそれでいいのかなと、最近私は考えています。

2009.01.12.

コピーライトをフッターエリアの中央に入れたい

このページの一番下にフッターエリアがあります。最近のフッターは、いろいろ情報を詰め込んでいるものも多くなりましたが、このサイトではシンプルにコピーライトだけ。
スッキリ見せたいので、フッターは少し色を変えて、真ん中に簡潔なコピーライト。

この真ん中に文字を表示するというのを考えてみました。文字を特定のエリアで縦方向の中央寄せにする。

左右の中央に合わせるのは、簡単。次は上下の中央合わせ。ここで、ハテ?と行き詰まってしまった。
今まで、自分のサイトならコピーライトの文字数も行数も自分で決められるから、それに合わせて調整するのは比較的簡単でしたが、
一応フリーテーマで公開するものを作ろうと思ったら、これがなかなか難しい。
使う人によって一行なのか複数行なのかまちまちだろうから、どちらでも対応できるようにしておきたい。
さて、どうしたものか。

調べてみると、ヨモツネットというサイトの「CSS で簡単に上下中央揃えを実現する」という記事の方法が使えそうです。
要は、コピーライトを入れる要素にdisplay:table-cell;を指定することによってテーブルセルと見なす。そうするとそのセル内ではインライン要素である文章もvertical-alignを使って中央合わせが出来るようになる。なるほど、簡単。

とにかく、フッター用の標準のパターンとして考えてみた。

一行の場合

二行の場合

HTML<div class="footer-sample">
<div class="copyright-sample">コピーライトの例です。コピーライトの記号と年数、著作者名を入れます。</div>
</div>

“footer-sample”というクラス名のdivのなかに”copyright-sample”というクラス名を付けたdivを入れて、その中に実際のコピーライトを書きます。

CSSdiv.footer-sample {
    background-color:#333;
    height:70px;
    width:500px;
    display:table-cell;
    vertical-align:middle;
    text-align:center;
}

div.copyright-sample {
    color: #ccc;
    font-size: 12px;
    line-height: 1.2em;
}

フッターエリアを黒っぽく塗りつぶして、とりあえず高さは70px、幅は500px。
display:table-cell;を指定をしてフッターをテーブルセルとみなしてしまう。あとはテーブルセルとして中央寄せを設定してあげる。

一般的なブラウザーだとこれだけでOK。シンプルでスッキリ。
ところがいつものように、IEだけは、display:table-cell;に対応していない、と。
いいかげん、IEなんか使うのやめようよと言いたいのをぐっとこらえて、IE用も。

HTML<div class="footer-sample">
<!--[if IE ]>
    <span class="dummy-h"></span>
<![endif]-->
<div class="copyright-sample">コピーライトの例です。コピーライトの記号と年数、著作者名を入れます。</div>
</div>

IEで開いたときだけ、”dummy-h”というクラス名を付けたspanを読み込むようにして、IEの場合はここで行数の違いを調整できるようにする。

CSSdiv.footer-sample {
    background-color:#333;
    height:70px;
    width:500px;
    display:table-cell;
    vertical-align:middle;
    text-align:center;
}

div.copyright-sample {
    color: #ccc;
    font-size: 12px;
    line-height: 1.2em;
}

*:first-child+html div.copyright-sample {
    display:inline;
    zoom:1;
    vertical-align:middle;
}

*:first-child+html div.footer span.dummy-h {
    display:inline;
    zoom:1;
    height:100%;
    vertical-align:middle;
}

* html div.copyright-sample {
    display:inline;
    zoom:1;
    vertical-align:middle;
}

* html div.footer span.dummy-h {
    display:inline;
    zoom:1;
    height:100%;
    vertical-align:middle;
}

*:first-child+html はIE 7用のハック。* html はIE 6用のハック。
IEには、display:table-cell; が効かないので、別の方法で同等の効果を与えています。
(これに関しては、上記のヨモツネットさんの記事がたいへん参考になります)
同時にダミー要素の span に height:100%; 高さを与えて、複数行でも対応できるように。この辺のことはネットをあっちこっちあさっていて、どこかで見た方法ですが、いろいろ試しながらやっているうちに、どこで見たのかわからなくなってしまいました。

一行の場合(IE対応版)

二行の場合(IE対応版)

IEの人もちゃんと表示されてるかな?

参考サイト

2008.09.02.

Firefoxでリンクをクリックしたときの点線を消す

前から気になっていたんだけど、意外と簡単。CSS で点線表示を消してやるだけ。

CSSa:focus{
outline:none;
}

または、

CSSa {
outline: none;
}

どちらの書き方でもOK。MacでもWinでも消せます。IEでも同じようにクリックしたときに点線が表示されますが、こちらは消えてくれませんでした。

2008.08.10.

なるべくならIE用のHackは使いたくない

「IEの条件付きコメント」は、ウェブサイトを作る場合のとっても便利なIE対策です。
IE以外のブラウザは、まぁまぁWeb標準に準拠しているのでそれほど困りませんが、IE6とかIE7は使っている人も多いだけにCSSをまともに解釈してくれないのは、大変もどかしい。

今まで、Hackといわれる様々な方法で、IEだけではなく特定のブラウザのみCSSを適応させたり、除外させたりしてきました。呪文のような文字の羅列で、後から何のために書いたのかわからなくなることもしばしば(私だけ?)
そんなとき、「CSS Hackを使わずにIEのバグに対処する方法」という記事を読みました。
「IEの条件付きコメント」というのを使うとスマートに解決できそうです。よけいなHackを使わなくても「条件付きコメント」で、たとえばIE6の場合だけ専用のCSSを読み込ませて、IE6のみ別の表示をさせることが出来ます。
ソースも見やすくなるし、便利。
さっそくWordPressのテーマの中で使ってみました。
具体的には、まずIE6専用のスタイルシート(例えばie6.css)をstyle.cssと同じフォルダに入れておきます。次にheader.phpのheadの中で標準のstyle.cssを読み込んだその後の行に

HTML<!--[if lte IE 6 ]>
<link rel=”stylesheet” href=”<?php bloginfo(’stylesheet_directory’); ?>/ie6.css” type=”text/css” media=”screen” />
<![endif]–>

というのを書き込みます。これでIE6とIE5の場合は、 style.cssの後に専用のie6.cssを読み込んでくれます。
「IE7.js」で IE6 でも透過 PNG、疑似クラス :hover に対応」という記事で書いた「IE7.js」をgoogleコードへ読みに行くコードもこの「条件付きコメント」でIE7未満のバージョンの場合にのみ読み込むという使い方をしています。
こういう便利な方法があったんですね。

2008.08.09.

「IE7.js」で IE6 でも透過 PNG、疑似クラス :hover に対応

「IE7.js」、「IE8.js」は、IE6 で対応していなかった透過 PNG、疑似クラス :hover、マージン:auto、min-、max-などなどが表示できるようになるという javascript です。
googleコードから直接読み込めるので、「Google Code」のページにある「IE7.js」または「IE8.js」のコードをコピーして<head>内に埋め込むだけ。簡単です。
「IE7.js」は、IE5と6用。「IE8.js」は、IE5から7まで。標準的な XHTM/CSSの 解釈をしてくれるようになるはず。なるはず、というのはまだベータ版だから。
私のサイトでは、ページに少しだけ影を付けていたり、メニュー部分で :hover や min-width を使っていますが、IE6 表示用にそれぞれの要素に対して個別に対応しなければなりませんでした。これらが「IE7.js」を使うだけでまとめて解決できれば、ずいぶん楽ちん。さっそく入れてみたのでした。

「IE7.js」を使った結果。
:hover はうまく動作しています。IE6 でもドロップダウンメニューが動くようになりました。min-width はうまく働きませんでした。透過 PNG 自体はちゃんと表示されますが、リピート表示が出来ない仕様になっていました。影表示の透過 PNG は、縦方向にリピートさせているので意図した形にはなりませんでした。とりあえず、メニュー部分が崩れてしまうと大変読みにくくなるので :hover だけでもありがたいです。
「IE8.js」のほうは、疑似要素の:after、:before にも対応しています。でもその要素をマイナスのマージンを指定して親要素の枠に重ねたり外に出したりの移動が出来なくて、思った形には使えませんでした。この辺は細かいデザインの話なので、今まで通り出来なければ出来ないなりに個別に対応するしかないですね。

とりあえず最小限の対応ということで「IE7.js」を使うことにしました。

2008.08.02.

コード表示(サンプル)

WordPress の code 表示がなかなかうまくいかない。投稿作成画面でビジュアル表示と HTML 表示を行ったり来たりしているといつの間にかスペース部分が無くなっていたり、code タグの閉じている位置が移動していたりする。どうしたものだろう。

<div id="menu">
<ul>
<li>Home</li>
<li>Themes</li>
<li>About</li>
</ul>
</div>