tetsunosukeのnotebook

tetsunosukeのメモです

liでメニューをマークアップ

過去にblogで書いていた件

よく(?)あるメニューで、例えば以下のようなページのトップの部分のように
http://kengo.preston-net.com/archives/000886.shtml

SO MANY SMILES | PRESTONCAFE | BLOG | WIKI | PHOTO | SHOP | NEWS | RSS ANTENNA | RSS MEMO | WEMA

な表現をしたいときがある。
さて問題はここの「|」をどう表現するのがHTML的に正しいか?っていうところなのです。マークアップ的には

<ul>
	<li>menu1</li>

	<li>menu2</li>
	<li>menu3</li>
</ul>

で決めることにすると…CSSにはどう実現するか、っていう問題になるわけ。まぁ、display:inlineは当然入れるとして…例えばnetscapeopera系のブラウザであれば「:after」擬似要素と「content」プロパティを用いて

li:after{ content:"|";}

で良いわけだが、IEだとこれは表示されない。

ええいそれじゃあ、区切り文字はliとliの間にっとか思って

<ul>
	<li>menu1</li> |
	<li>menu2</li> |
	<li>menu3</li>

</ul>

これをやるとDTD(http://www.w3.org/TR/REC-html40/struct/lists.html#edef-UL)的にはulの中にはliしか書けないわけだからNGですよと。

ほいじゃ

<ul>
	<li>menu1 | </li> 
	<li>menu2 | </li>

	<li>menu3</li>
</ul>

こう書くのが正しいんですか?って思ったわけ。

しかしこの手法には相当大きな問題点がある。CSSをオフにされると

・menu1 | 
・menu2 |
・menu3

というような謎見た目になってしまうじゃないですか、と。やっぱり結論は

<ul>
	<li>menu1</li>
	<li>menu2</li>

	<li>menu3</li>
</ul>
li {
    display:inline;
    border-right-width: 1px;
    border-right-style: solid;
}

でいいのでしょうか。(もちろん実際には最後のliにはborderがつかないようにclassで分けますが。ご意見お待ちしています。っていうか「|」ならborderでごまかせるけど、「/」とか別のもの入れたくなった場合はどうよ。