CSSテクニック

水平線に一工夫

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タグの挙動は仕様書できちんと定義されていないため、ブラウザーによりバラバラです。

なので、全てのブラウザーで同じように見せようとすると、深みにはまることもあります。

「ちょっと違うけど、まぁ、いいか」ぐらいの気持ちでご利用下さい。


一覧へ戻る


Last Modified 2007-04-08 © きくちゃん 2004 - All Rights Reserved