if IE



はてなでは、

<!--[if IE ]>
<div class="whisper"><p>現在、Internet Explorer では コンテンツを狙い通りに表示することができません。</p>
   <p>Internet Explorerユーザの方には、ご不便をおかけいたします。</p>
</div>
<![endif]-->

と、書くと

<p><!-- --></p>

といった具合に、フィルタされます。




私は、CSSハックは得意でない。(というより得意なものなどないのですが、)
やんごとない事情で、やっぱり、IE6までの、行間を何とかしなくては、という事になる。


現在は、

<ul><li>hatena</li></ul>
<ul><li class="hidden"><ul><li>hatena</li></ul></li></ul>

このような書き方をすると、FFとIEで、ライン高が、滅茶苦茶違って表示される。
※ こんな書き方がそもそも、良くないのです。

IEにだけ、有効なスタイルを書きたいけど、どうすればいいか?

CSSの場合、裏技的なハックは、いろいろあるようだけれど、ある日突然、呪文の効能に限界来る事は誰でも予想できるし、いつもは、> を使ったりしていたのだけど、if IE を試してみる事にした。

<!--[if IE]>

    <style>
{literal}

		ul {
			margin:0 auto;
			padding:0 auto;
		}
		li {
			margin:0 auto;
			padding:0 auto;
		}
		li .hidden{
		
			height:0;
		}
{/literal}		
    </style>
<![endif]-->

xhtmlで書いていたので、ヘッダーにこんなの入れていたら、lintで引っかかるんだろうな、などと思っていたら、
大きな怒りはなかった。それなら、という事で、追記。(このへんてこなスタイル指定は、出来れば、みられたくないんですが)


めでたく、表示できた。

しかし、ある条件では、IEで、ページが表示できないという現象に出会った。

smarty というテンプレートエンジンを使って、csvを表示させるとき特有のようで、ソースを見ると、途中までは、書き出しているようなのだが、ふっ、と止まる。

$smarty->compile_check = true; //キャッシュしない。デバッグ
$smarty->debugging = true; //変数表表示

有効にしても、沈黙。

なにをしても、エラーさえ出ないんだから、、、。

if IE をはずすと、表示できるようになった。

私の中では、サーバ側でなにをしても、沈黙。(真っ白)
FFでは、普通に表示できてる。

ブラウザのバグ? それとも、意表をつくスタイル?

ブラウザの職場放棄と見ているのですが、、、どうでしょう。IE6は、黙して語らず。

いずれにしろ、はずして 徒労。