フッター部分のメニューなどを区切る際のサンプルを適当に。
p要素でやるとこんなヤツです。
サンプルに使うhtmlは、ul要素を使った下記をベースに使用してます。(サンプルに寄ってid名とか変わりますが)
<ul id="sampleFooter"> <li><a href="/">Home</a></li> <li><a href="/">About</a></li> <li><a href="/">Gallery</a></li> <li><a href="/">Blog</a></li> </ul>
んでは、いってみますか。
---- こっから続き
一番書きたかった内容は最後に書いてます。
普通に縦線を書いた感じ
実際の表示です。
普通にhtmlに|を記述しているのでソースは当然下記のように。
<ul id="sampleFooter"> <li><a href="/">Home</a>|</li> <li><a href="/">About</a>|</li> <li><a href="/">Gallery</a>|</li> <li><a href="/">Blog</a></li> </ul>
cssはこんな感じです。
#main #sampleFooter_01 li {
float:left;
list-style-type:none;
}
floatして、リストのマークを消しているだけ。
主観ですけど、リストでこのやり方をするならp要素で普通に区切った方が良い気がする。
borderを使って区切っているように見せる
実際の表示です。
htmlはこんな感じに。(|取って最初のメニューにclassを追加)
<ul id="sampleFooter_02"> <li class="sampleFooterHome"><a href="/">Home</a></li> <li><a href="/">About</a></li> <li><a href="/">Gallery</a></li> <li><a href="/">Blog</a></li> </ul>
cssはこんな感じです。
#main #sampleFooter_02 {
text-align:center;
}
#main #sampleFooter_02 li {
display:inline;
list-style-type:none;
margin-right:6px;
padding-left:10px;
border-left:1px solid #999;
}
#main #sampleFooter_02 li.sampleFooterHome {
border-left:0;
padding-left:0;
}
さっきfloatでやりましたけど、display:inlineでやってセンタリングするとこんな風になります。
見易さの為にli要素毎に改行してますが、改行すると数pxの隙間が出来るので、paddingとmarginを上手い具合に調整してあわせます。
改行しない場合はソースがちと見難いっすけど、paddingとmarginは同じ値でキレイに揃います。
.sampleFooterHome はHomeの左の縦線を消す為に、classを追加してます。
色がすぐに変えれるっていう利点は有るけれど、borderでやってるいじょう縦線が文字の高さより大きくなってしまうのがいけてない。。。
画像で区切ってみる
実際の表示です。
ソースはborderと同じなので割愛。
CSSは以下のようになる感じです。
#main #sampleFooter_03 li {
float:left;
list-style-type:none;
margin-right:10px;
padding-left:15px;
background:url(../img/list_subcategory.gif) no-repeat left center;
}
#main #sampleFooter_03 li.sampleFooterHome {
background-image:none;
padding-left:0;
}
基本はborderと同じで指定を画像に変えただけです。
画像の1番の利点はやっぱり見栄えですね。
区切りっぽく見える画像なら何でもいいんで、デザインにこだわる場合は背景画像で指定するのが良さげです。
あと、margin-leftとpadding-rightの組み合わせを使わないのは、IEのmargin2倍のバグ対策です。
↓知らない人はこれ参照で。
http://css-happylife.com/log/bug/000017.shtml
上記のサンプルを隣接セレクタでやる
ホントはコレが書きたかっただけなんす。
と、いう事で今までのはこのサンプルを書くための布石みたいなノリです。
実際の見た目は今までと殆ど変わらないです。(IE6はダメですが)
ソースはこんな感じにスマートに。
<ul id="sampleFooter_04"> <li><a href="/">Home</a></li> <li><a href="/">About</a></li> <li><a href="/">Gallery</a></li> <li><a href="/">Blog</a></li> </ul>
CSSは以下のように。
#main #sampleFooter_04 {
text-align:center;
}
#main #sampleFooter_04 li {
display:inline;
list-style-type:none;
margin-right:6px;
padding-left:10px;
}
#main #sampleFooter_04 li+li {
border-left:1px solid #999;
}
隣接セレクタ(+)で指定する事で、余計なclassを追加せずに済みます。
で、コレがめでたくIE7で対応した訳ですよ。
つまり、もう使っても問題が無いテクニックの一つだと思うのです。
ウチのサイトの日付とカテゴリ部分でも←こんな感じで使ってます。
ボクの考えですが、この程度の見栄えの影響なら一部のブラウザで見れなくたって情報が損なわれる訳では無いのでいいんじゃないかと思ってます。
さすがに、Firefoxだけ先行実装してるセレクタは気が早いと思いますが、この位なら許されるんじゃないでしょうか?
Track Back [1]
Re: フッターとかの区切り『 | 』のサンプル4種
こういうのをCSSでやると、私は「:before擬似要素使いてぇ。(未対応の)IE6うぜー」と思ってしまうのですが、border-leftプロパチを使って...
by Liner Note|2007年02月22日(木)










comment [8]
1 - Tak.M. さん
「borderを使って区切っているように見せる」のhtmlコード、「sampleFooterHome」の指定忘れてません?
2007年2月22日 08:58
2 - hira@管理人 さん
>Tak.M.さん
おおっと、寝ぼけておりました。
完全な付け忘れです。
ご指摘ありがとう御座います。
2007年2月22日 09:10
3 - No Name さん
|とか、なんか入っていた方が読みやすい。 CSSだけで見た目重視にするとに音だけリーダーだと|があったほうがわかりやすい。
2007年2月23日 12:08
4 - No Name さん
これをわざわざ CSS でするメリットって何ですか ?
2007年2月23日 19:14
5 - at さん
> わざわざ CSS でするメリット
わざわざテキストでやらないこと(XHTMLに含めないこと)、
が最大のメリットではないかと思います。
XHTMLに含めないことをメリットと感じないヒトには
CSSそのもののメリットが無いはずですし、
2007年2月28日 19:58
6 - えど さん
これ、自分もすごく思いました。
一部のブラウザで見れなくても問題のないレベルのことであれば無視してしまっていいんじゃないかと…。
(ただ、その一部のブラウザが、シェア9割近いIEってのがネックなんですけどね…)
ちなみに、:after疑似クラスで{content: "|";}ってのはなしですか?w
URL|2007年3月19日 09:45
7 - hira@管理人っぽい人 さん
>えど さん
:afterはIE7でも対応しなかったので、まだまだ実用するには厳しいかなーって思ってます。
2007年3月19日 09:53
8 - えど さん
なるほど…。そういえばそうでしたね。
しかし、IE7が未対応となると、:afterが気兼ねなく使えるのはいつになるんでしょうかね…。
2007年3月19日 13:16