水平線に一工夫
hrタグで水平線を引けることは既にご存じかと。今回はCSSを使って装飾を施し、実用度を高めてみます。
テクニック使用後(IEオンリー)
テクニック使用後(一般)
やり方
1:IEオンリー用
IEオンリー用にはフィルターを使っています。firefoxではただの水平線になってしまいますが、レイアウトに大きな問題が出るわけではないので、使ってみる価値はあります。
スタイルシート上から順にこんな感じになります。
#a{
height:5px;
background-color:#663300;
filter:progid:DXImageTransform.Microsoft.Alpha
(style=2,opacity=100,finishOpacity=0);
}
#b{
height:5px;
background-color:#663300;
filter:progid:DXImageTransform.Microsoft.Alpha
(style=3,opacity=100,finishOpacity=0);
}
#c{
height:5px;
background-color:#663300;
filter:progid:DXImageTransform.Microsoft.Gradient
(gradientType=0,startColorStr=#663300,endColorStr=#ffffff);
}
filterに関する情報はCSS Dencitieのフィルターに関する部分をご覧下さい。
2:一般用
ここからはfirefoxでもいけます。でもなぜかOperaは一部ダメです。まぁ、気にするほどではありませんが。
スタイルシートは上から順にこんな感じになります。
#d{
border:0;
height:5px;
background-image:url(../../img/head-menu-back.gif);
}
#e{
border:0;
height:1px;
color:#663300;
background-color:#663300;
}
#f{
border:double #663300;
border-width:3px 0px;
height:6px;
}
#g{
color:#ffffff;
border:dashed #663300;
border-width:1px 0px;
height:3px;
}
解説
borderなどで装飾する場合は2つほどポイントがあります。
一つはborder:0;。hrタグにはデフォルトでborderが指定されているので、背景画像や背景色を使って装飾する場合は border:0;で消した方がきれいです。ただし、IEではなぜか効果がありません。
二つ目はcolor:#ffffff;。IEの場合colorを指定することで、デフォルトの枠線を消すことが出来ます。この場合、背景色などは意味が無くなるので、borderのみでの装飾となります。colorの値は、ページの背景色と同じにすると良いでしょう。
使いこなすための+α
hrタグの挙動は仕様書できちんと定義されていないため、ブラウザーによりバラバラです。
なので、全てのブラウザーで同じように見せようとすると、深みにはまることもあります。
「ちょっと違うけど、まぁ、いいか」ぐらいの気持ちでご利用下さい。
