普通のエントリー久々な気がする今日この頃。
今回はトピックパスとかパンくずリストなんて呼ばれてる、ちょっと規模の大きいサイトでは日常茶飯事で見かけるアレのサンプル色々です。
サンプルの前に
#main .entryBody #topicPath_01
とかってなってますけど、#main .entryBody はウチのサイトの都合で優先順位上げの為にやってるんで、コピったりする場合はいらない感じです。
---- こっから続き
サンプル1
まずはボクがよく使う方法です。
実際の表示
- ホーム
- サービスラインナップ
- ウェブサイト制作
CSS
#main .entryBody #topicPath_01 {
margin:10px 0;
}
#main .entryBody #topicPath_01 li {
display:inline;
line-height:110%;
list-style-type:none;
}
#main .entryBody #topicPath_01 li a {
padding-right:10px;
background:url(../img/entry/topicpath.gif) no-repeat right center;
}
HTML
<ul id="topicPath_01"> <li><a href="/">ホーム</a></li> <li><a href="/">サービスラインナップ</a></li> <li>ウェブサイト制作</li> </ul>
>を背景画像にし、リストでマークアップ。
コレの利点は、リンクが無ければ>が表示されないので、現在のページって示す為にclassを設けたりする必要がないことです。
サンプル2
ボクがよく使う方法その2です。
実際の表示
- ホーム
- サービスラインナップ
- ウェブサイト制作
CSS
#main .entryBody #topicPath_02 {
float:left;
margin:10px 0;
}
#main .entryBody #topicPath_02 li {
float:left;
line-height:110%;
list-style-type:none;
}
#main .entryBody #topicPath_02 li a {
margin-right:5px;
padding-right:10px;
background:url(../img/entry/topicpath.gif) no-repeat right center;
}
HTML
<ul id="topicPath_02"> <li><a href="/">ホーム</a></li> <li><a href="/">サービスラインナップ</a></li> <li>ウェブサイト制作</li> </ul>
さっきは、リストを横に並べる為にdisplay:inlineを使ってましたが、今回はfloat:leftで並べています。
サンプル3
アクセシビリティ的に良さげなタイプ
実際の表示
ホーム
サービスラインナップ
ウェブサイト制作
CSS
#main .entryBody #topicPath_03 {
display:inline;
}
#main .entryBody #topicPath_03 img {
margin:0 5px;
}
HTML
<p id="topicPath_03"> <a href="/">ホーム</a> <img src="/img/entry/topicpath.gif" alt="の中の" /> <a href="/">サービスラインナップ</a> <img src="/img/entry/topicpath.gif" alt="の中の" /> ウェブサイト制作 </p>
※見やすくする為に改行をしてます。実際はしてないです。
パンくずリスト=ulでマークアップとは限らないんだ。
って思った代表例。
>を画像にする事で、altに「の中の」を入れ、音声ブラウザなどで『ホームの中のサービスラインナップの中のウェブサイト制作』と読ませるそうな。
サンプル4
classを追加して>を消すタイプ
実際の表示
- ホーム
- サービスラインナップ
- ウェブサイト制作
CSS
#main .entryBody #topicPath_04 {
float:left;
margin:10px 0;
}
#main .entryBody #topicPath_04 li {
float:left;
line-height:110%;
list-style-type:none;
margin-right:5px;
padding-right:10px;
background:url(../img/entry/topicpath.gif) no-repeat right center;
}
#main .entryBody #topicPath_04 li.active {
background:none;
}
HTML
<ul id="topicPath_04"> <li><a href="/">ホーム</a></li> <li><a href="/">サービスラインナップ</a></li> <li class="active">ウェブサイト制作</li> </ul>
1、2と似てるけど、指定を全てli要素に行い現在のページにはclassを追加して、>を消しているタイプ。
サンプル5
:after要素を利用したタイプ
実際の表示
- ホーム
- サービスラインナップ
- ウェブサイト制作
CSS
#main .entryBody #topicPath_05 {
margin:10px 0;
}
#main .entryBody #topicPath_05 li {
display:inline;
line-height:110%;
list-style-type:none;
}
#main .entryBody #topicPath_05 li a:after {
content:" > ";
}
HTML
<ul id="topicPath_05"> <li><a href="/">ホーム</a></li> <li><a href="/">サービスラインナップ</a></li> <li>ウェブサイト制作</li> </ul>
まぁご存知のようにIEには対応してないので実用性はビミョー。
a要素で指定してるけど、li要素にしてclass追加とか、display:inlineじゃなくてfloat:leftでも勿論可能。
サンプル6
1の右寄せバージョン
実際の表示
- ホーム
- サービスラインナップ
- ウェブサイト制作
CSS
#main .entryBody #topicPath_06 {
margin:10px 0;
text-align:right;
}
#main .entryBody #topicPath_06 li {
display:inline;
line-height:110%;
list-style-type:none;
}
#main .entryBody #topicPath_06 li a {
padding-right:10px;
background:url(../img/entry/topicpath.gif) no-repeat right center;
}
HTML
<ul id="topicPath_06"> <li><a href="/">ホーム</a></li> <li><a href="/">サービスラインナップ</a></li> <li>ウェブサイト制作</li> </ul>
右寄せのパンくずリストの場合、ul要素をtext-align:rightで右にし、li要素をdisplay:inlineで横並びに。
右寄せのデザインはあまりみないけど、出来るかな・・・ってならない為に覚えておくと便利です。
サンプル7
6のフロートバージョン
実際の表示
- ホーム
- サービスラインナップ
- ウェブサイト制作
CSS
#main .entryBody #topicPath_07 {
margin:10px 0;
}
#main .entryBody #topicPath_07 li {
float:right;
line-height:110%;
list-style-type:none;
}
#main .entryBody #topicPath_07 li a {
margin-left:5px;
padding-left:10px;
background:url(../img/entry/topicpath_re.gif) no-repeat left center;
}
HTML
<ul id="topicPath_07"> <li><a href="/">ホーム</a></li> <li><a href="/">サービスラインナップ</a></li> <li>ウェブサイト制作</li> </ul>
コレは見にくいと思うから、あまり出会うケースが無いと思いますが、右が上位階層になる場合に。
サンプル8
display:inlineで並べたバージョン
実際の表示
- ホーム >
- サービスラインナップ >
- ウェブサイト制作
CSS
#main .entryBody #topicPath_08 {
margin:10px 0;
}
#main .entryBody #topicPath_08 li {
display:inline;
line-height:110%;
list-style-type:none;
}
HTML
<ul id="topicPath_08"> <li><a href="/">ホーム</a> > </li> <li><a href="/">サービスラインナップ</a> > </li> <li>ウェブサイト制作</li> </ul>
画像じゃなくてテキストで区切ってます。
とっても簡単。
書いてて思ったこと...
なんだ、この見栄え的に殆ど変わらない地味なエントリーは、、、と。
書いてて微妙に虚しくなりました(苦笑
ご指摘を頂いたので追記です(1/31 21:00頃)
ボクは普段ul要素で組んでますが、ol要素の方が妥当だと意見をいただきました。
確かにolの方が分かりやすいよな。と感じるので、いちおol推奨です。
あと、パンくずリストはあくまでも「そのページまでの道のり」や「現在のページが何処か?」ってのを分かる事を目的としているので、その辺が分かりやすければ、リストじゃなきゃいけないとか、p要素じゃなきゃいけないって事は無いと思ってます。
Track Back [1]
[情報]CSSまとめ
解説 CSSとは CSS*1とは、(X)HTML文書の見栄えを整形するための、Web標準*2の指定方法です。要するにホームページをデザインする手段です。...
by 萌え理論Blog|2007年03月24日(土)










comment [12]
1 - ゆう さん
パンくずリストって、現在位置を構造的に把握するためのものなので、その "構造" をマークアップしてやる必要があると思います。その意味で、以下のようなマークアップは選択肢として、お考えになりませんでしたでしょうか?
<ul class="topicPath">
<li><a href="/">ホーム</a>
<ul>
<li><a href="/">サービスラインナップ</a>
<ul>
<li>ウェブサイト制作</li>
</ul>
</li>
</ul>
</li>
</ul>
仮に HirasaWa さんのようにマークアップするにしても、ul では順不同リストになってしまいます。並んでる順番に意味がある場合は ol(順序付きリスト)でマークアップして、list-style-type: none; などとするのが、HTML のセマンティクス的に、より妥当になると思います。
URL|2007年1月31日 03:32
2 - hira@管理人 さん
>ゆうさん
ご指導ありがとう御座います。
olは考えたことはありましたが、上記マークアップは考えたことがありませんでした…確かにパンくずの構造を示すのにより妥当なマークアップだと感じました。
かなり勉強になりました。ありがとう御座います。
2007年1月31日 09:21
3 - ハマタロウ さん
パンクズ「リスト」なのに、ついついパラグラフでマークアップしてしまいがちなので、とても勉強になりました。
ところで、アンカーに背景画像を入れたときにIEでリンクの挙動がおかしくなるのってIEの仕様なんでしょうか?
ステータスバーにもURLが表示されず、前から気になっていたのですが…。
2007年1月31日 09:49
4 - kennsu さん
僕はいつもサンプル3ですね、理由はCSS書く量が少ないからです。
管理上の理由ですね。
しかし、文法的妥当性を考えると・・・
topic pathですもんね・・・・難しいな。
日本語ではパンクズリストと言ってリストのイメージが強いのですがtopic pathはトピックまでの道のり・・・
必ずしもサイト構造まで表す必要はないのではと思います。
実はtopic pathについて、W3Cのサイトではpでマークアップされてる事が多いんですよ。
実は普段意図的にセマンティック議論は避けてます、
「コードはXMLで書かれてるんじゃない!HTMLで書かれてるんだ!」(踊る大走査線風)
僕の制作実績のdlの使い方とか批判されるに違いないですからw
URL|2007年1月31日 12:50
5 - ソゼ さん
サンプル1の方法なんですが、パンくずが長くなって改行が入った場合に、WinIE6で表示がおかしくなりませんか?
サンプル作ってみました。
http://www.geocities.jp/tropical_sultan/index2.html
2007年1月31日 14:17
6 - Nen さん
XP+Firefox2.0で閲覧してますが、パンくずリストに見えません(縦一列になっている)。
何が原因はなんでしょうか?
2007年1月31日 14:43
7 - CSS+LOVE さん
マークアップがWEB標準の定義から逸脱しているような気がしますが。ゆうさんの書き込みされているマークアップでのCSS設定に正したほうがいいような気がします。
そこまでこだわらないというなら、本末転倒。
2007年1月31日 16:23
8 - hira@管理人 さん
>ハマタロウさん
ありがとうございます。
個人的にp要素でも問題ないと考えてます。
考えかたは色々だと思いますが、ようは現在のページが何処なのか分かればいいと思いますので。
IEの挙動に関しては、頂いた情報だけだとちょっと分かりません。
バグ関係だとは思いますが。
>kennsuさん
おー、コメントありがとうございます。
確かに。
管理上の理由などは非常に納得できます。
難しい部分ではありますね。
色んな人のいろんな考えがあると思うので、コレじゃなきゃ絶対にダメ!って事は無いと思いますし。
>ソゼさん
あ、なるかも知れないです。
ちょっと今検証できないですが、背景の位置指定をcenterでやってるからかな、、、
ご指摘ありがとうございます。
>Nenさん
同環境で再現できないので理由は分からないですが、キャッシュとかかな。。。なんだろう。
>CSS+LOVEさん
貴重なご意見ありがとう御座います。
2007年1月31日 16:53
9 - iwaim さん
> 実はtopic pathについて、W3Cのサイトではpでマークアップされてる事が多いんですよ。
それが何かあるの?と思わざるを得ないなぁ。
別にp要素として扱うことを完全に否定するわけではないけれども、文書構造を考えると最適なのは順序付きリストであることは揺るがない事実だと思うし。
その事実を踏まえた上でp要素を選択するというのは一つの手だろうけど、「W3Cのサイトがそうだから」という判断だけならそれは思考の停止だろう。
2007年2月 1日 02:28
10 - 通りすがりの倉庫キャラ さん
パンくずリストを<ol><ul>で表そうというのはアイディア的には面白いですね。ただ、パンくずリストはリストには違いありませんが<ol><ul>で想定しているリストとは別物のような気がします。<p>、<ol>、<ul>のどれを使うのが適切かはかなり微妙だと思います。
また、画像を使った奴は文字サイズを変えても">"のサイズが変わらないので実用的ではないですし、Lynxなどで見たときにどれもパンくずリストらしく見えません。そもそも音声ブラウザを使っている人がパンくずリストだと分かりやすい表現なのでしょうか?
アクセシビリティという点では全部イマイチなのが残念です。
2007年2月 1日 03:18
11 - すがり通り さん
>実はtopic pathについて、W3Cのサイトではpでマークアップされてる事が多いんですよ。
メジャーなブラウザの表示のためにはテーブルレイアウトも辞さないW3Cは根拠にならないのではないでしょうか。
もっとも、今はやっていませんが、W3CはHTMLをあくまで表示のために使っていると思います。
2007年2月 1日 16:40
12 - fr34edy さん
http://webba.webng.com/xxx_pics.html ">xxx pics
URL|2007年10月 9日 20:30