LogJET

CSS + XHTML Airport

HTMLで"|"を入れるのは どうなのさ

昔から当たり前のように使われてきた"|"。
1行の文章(リスト)を区切るために使われてきたわけですが、例えば

ダイナマイト | 四国 | Comments(2) | Trackbacks(3)

のような感じ。
しかしこれって、よくよく考えるとHTMLで"見た目"を制御してるって感じるのですよ。
"見た目"はCSSって考えているんで、というより自分のサイトをXHTML1.0 Strictで作っているんで、ただ単にW3Cのチェックに引っかから無ければ良いというのが納得いかないわけですよ。

じゃあ何のタグを使うのか?

<p>
今まで使ってきたが、これはどうも違う。段落を表すタグなので。
<li>
たぶんこれが最適じゃないかと考えた。実際、リストなわけだし。

CSSでは

  • li {display: inline}
  • li {float: left}

のどちらかを使ってリストを横並びにしてマージンを付ければ間が空く。さらにborderを指定して縦の区切り線を付ける。これでとりあえずは、OKだと勝手に判断。

例(インラインでスタイル放り込んでいます)

  • ダイナマイト
  • 四国
  • Comments(2)
  • Trackbacks(3)

少しいじればこんなことも

  • ダイナマイト
  • 四国
  • Comments(2)
  • Trackbacks(3)

パンクズリストはどうすりゃイイのさ。

更に考えると、企業サイトなどでよく見かける階層を表す"パンくずリスト"

Home > ラーメンについて > とんこつラーメン > 高菜

は、どうやって解決すればいいのか?
パンくず"リスト"って言ってるんだから当然リストタグじゃないとおかしいわけですよ。でも、上記の方法じゃ区切りの縦線は引けても、鍵括弧">"は表せない。

そこで、登場するのがCSSの擬似要素とcontentかと。CSSでリストを横並びにした後、

li:after {content: ">";}

これでリストタグのお尻に>が入る。(実際は最後の"高菜"のお尻にも>が付くんですけど、その辺はidか何かで制御すれば解決すると思います)

ブラウザ王者IE6には通じない

ここまで何となく理解できている人はたぶん気付いていると思いますが、:afterとcontent両方ともIEではサポートされていないわけですね(2005年11月現在)。
じゃあ使えねー、となるわけです。現状ではどうしようも無いんすかね。

パンくずリストはだまって<p>使ってるのが無難でしょうか。

長々書いてきたオチはこれでした。

ちなみに現在フッターで"|"を使ってます。
ヒント:address要素
自分的には納得いっていません(自分でやっていることに)。orz。


Trackbacks
このエントリーのトラックバックURL
http://www.fsiki.com/mt/mt-tb.cgi/377
エントリーフッタを「|」で区切るのを廃止 from 雑記帳@やすひさ
HTMLで"|"を入れるのは どうなのさ - LogJET ...

2006-02-18 19:14


Comments

はじめまして。
last.fmでこちらを知りました。
サイトの構造的なものを含めたデザインが好きで、
目と頭の保養のために、たまに見させてもらっています。

書かれているパンくずリストでの解決ですが。。
背景画像で[>]を入れるという手もありますね。
おそらく、言われんでも知ってるわい、といわれると思うのですけど。

ところで、最近は更新されていないようですが、
是非楽しみにしています。

from s : 2006-06-03 15:10

sさん、はじめまして
その方法、おっしゃるとおり知っておりました。
最近ブログ書く時間が無くサボっておりまして、デメリットとかがあるので、まとめるのに時間がかかるなーと。
現実的にその方法が文書構造的に一番良いと思います。
デメリットとしては文字サイズの変化に対応できない、印刷で背景が印刷できない、などがあります。
一番気になったのは背景画像の">"をアンチエイリアスをかけて作るか、かけずに作るか。

テキスト 画像 テキスト 画像 テキスト…

と並ぶのでアンチエイリアスをかけた画像とビットマップフォント「MS Pゴシック」の組み合わせ、もしくはMacなどでその逆の組み合わせになった時に、「見た目」的に違和感があるんじゃ無いかなーとか、思ってしまうわけです。アンチエイリアスの量を調節すれば問題ないか…。

とか、色々書いてしまいましたが改めて考える機会を与えていただき本当に感謝でございます。

sさん、更新がんばります。がんばりますよー。更新忘れてるわけじゃないので、のんびり気長に見てやってください。

from Fsiki : 2006-06-03 17:31

pの中に|区切りを入れるのは、もともとは、アンカーが連続すると読み上げリーダーで単語が連続読み上げされてしまうのを回避するためのようです。(そういう理由を知らずに、慣例として使っているサイトも多いと思われます。)

IE7でも:bofore, :afterがサポートされないとのことですねー、残念。JavaScriptを使ってでも、IEでこの擬似要素を再現できないのかといっしょうけんめい検索してみたのですが、ヒットするのは「サポートされず」という内容ばかり。こんなに活用性の高いセレクタなのですから、どなたか頭の良い方が代替機能(?)を考え付いていてもおかしくないと思うのですが。

パンくずリストについては、
1.IE用には背景画像を指定&申し訳ないけれど文字サイズ固定(IE7なら丸ごとズームされる??)
2.モダンブラウザ用に擬似要素で区切り文字を指定して、上記CSSを上書き。文字サイズも相対サイズに上書き(モダンブラウザのみ上書きの方法については、それぞれにあると思います。)

という案を自分では考えています。
基本的には、パンくずリストが必要なほど深い/わかりにくいサイト構成にしない、というのが一番な気がします・・・。
というのも、ナビゲーションやら何やらで、HTMLの上のほうがリストだらけになってしまうのも考えものだと思うので。

from Anonymous : 2006-11-01 14:17

はじめまして

pの中に|区切りを入れるのは、もともとは、アンカーが連続すると読み上げリーダーで単語が連続読み上げされてしまうのを回避するためのようです。

初めて知りました。いわれてみれば確かにそうですね。

正式なバージョンがリリースされてしまった今となってはどうにもなりませんが、一部の擬似要素をIE7がサポートしなかったのは非常に残念ですね。使えればHTMLを汚さずに色々面白いことができそうなんですが。

シェアの関係で見捨てることもできず…。という状態がまた数年続くと思うと悩ましいですね。

パンくずリストの件、文字サイズ大きくした時に区切りが背景画像でも、実はそれほど気にならないというのが私の感想です。そのあたりの感覚は人それぞれですね。

確かにパンくずなどでHTMLがごちゃごちゃするのは嫌ですね。いっそのことJavaScriptで挿入する方法でもいいんじゃないか?とか思っている今日この頃です。

from Fsiki : 2006-11-04 22:41

この手法ではWinIE5で表示ができないので、IE5用のスタイルシートにheightを指定するといいと思います。

from k : 2007-10-25 15:26

kさん、ご指摘ありがとうございます。
高さの指定で回避できるんですね~。試してみます。
ありがとうございました。

from Fsiki : 2007-11-18 2:19

入力情報を保存しますか?
(書式を変更するような一部のHTMLタグを使うことができます)



Copyright © 2005-2006 - Fsiki