
私の常用ブラウザは、Firefoxです。みなさんのブログを拝見していると、ヘッダ画像がこの写真のようになっている方が結構あります。
IE6で見ると、きちんと表示されているのに、Firefoxで表示するとこうなってしまうのです。原因は、ブラウザによる
ボックスモデルの解釈の違いなのですが、面倒なので今まではFirefoxに合わせて表示していました。(IEの方には、MINIの足下の地面が切れていたはずです。)
でも、スタイルシートをちょっと弄ると、IEとFirefoxのスタイルシートの解釈の違いを吸収して、同じように表示することができます。今回はその紹介です。
まず、私の用意したヘッダー画像は750×320pxのJPEG画像です。縦幅は好みでいいですが、横幅は750pxにするのがいいでしょう。
画像のアップロードの仕方には触れません。100kbyteまでのサイズじゃないと受け付けてくれないので、Photoshopなどで、うまく調整してからアップしましょう。
私がこれから触っていくスタイルシートは、「カスタマイズ(上級用)」の「ブラック」を土台にしていきます。#Headerというセレクタのところを触ります。
標準状態は、以下のようになっています。
#Header
{
padding:15px;
margin-top: 5px;
background: #353535;
margin-bottom: 0px;
width: 750px;
height: 70px;
background-image: url('/styles/black/point.gif');
}
これを、以下のように修正します。
#Header
{
padding:15px;
margin-top: 5px;
background: #353535;
margin-bottom: 0px;
height: 290px;
background-image: url('アップロードした画像のURL');
}
* html #Header
{
padding:15px;
margin-top: 5px;
background: #353535;
margin-bottom: 0px;
width: 750px;
height: 320px;
background-image: url('アップロードした画像のURL');
}
これは、スターハックという技法なんですが、Firefox・Opera・Safariなどでは、#Header の方が適用され、IEでは * html #Header の方が適用されます。
IEのCSS解釈にはバグがあって、にも関わらずシェアは大きいから、こんな裏技が必要になります。
ポイントは、width と padding/border を同時に使用したときの解釈の違いなのですが、padding: 15px; の2倍に当たる30ピクセル分だけ縦横サイズをマイナスして、
width: 720px;
height: 290px;
と背景画像のサイズを指定することです。
今回の場合は、widthは省略しても大丈夫です。
heightを省略してしまうと、タイトル文字列の上下15ピクセル分しか画像が表示されなくなりますので、これは意図的に元の画像の縦幅-30ピクセルを指定しましょう。
なお、このハックはWindows版IE6以前とMacOS版IEのバグには対応できますが、IE7には効きません。IE7は標準仕様にかなり近づいたらしいですけど。。。
ヘッダ回りで、IE7対応のハックが必要かどうかわからないので、今は触っていませんが、IE7の方、情報をいただけたらうれしいです。
Posted at 2008/02/17 13:44:05 | |
トラックバック(0) |
みんカラ活用 | 日記