メニューが 1 行に収まっている限り、これを実現するための非常にきちんとした、完全にクロスブラウザーで動的な「トリック」があります。ここで非常によく説明されています:http://matthewjamestaylor.com/blog/beautiful-css-centered-menus-no-hacks-full-cross-browser-support
私の経験では、この問題に対してよく提案されるインラインブロックは、レガシーブラウザーではあまりサポートされていません。正直なところ、私はそれを使用することはありません。私はいつも、マシュー・ジェームス・テイラーが説明する巧妙な方法を採用しています。
編集:
リクエストに応じて、テクニックを簡単に説明します。html は通常のリンクのリストのように見え、余分なラッピング div で囲まれている必要があります。このようなもの:
<div class="menu-wrapper">
<ul>
<li><a ...>link</a></li>
<li><a ...>link</a></li>
<li><a ...>link</a></li>
</ul>
</div>
あとはcss作業です。手順は次のとおりです。
- ラッパーを左にフロートさせ、幅を 100% にして、ビューポートの幅全体を占めるようにします。
ul
と の両方を左にフロートli
させ、コンテンツに合わせて幅を広げないようにします。
ul
のaposition: relative
を与えleft: 50%
ます。これにより、左端が親の中心に移動します。これは、ビューポートの中心を意味します。
- 最後に、
li
a position: relative
ofを指定する必要がありますleft: -50%
。これにより、それらは親の左端を越えて移動しul
、リストの中心が親li
の左端に揃えられul
ます。前のステップでその端をビューポートの中心にしたので、メニューは事実上中央に配置されました。
前に述べたように、すべて Matthew James Taylor の功績によるものであり、彼の完全な説明を必ず確認してください。彼が描いた絵は、それをより理解しやすくしてくれます。
edit
リクエストに応じて、テクニックを示すために小さなフィドルを設定しました:
http://jsfiddle.net/fDmCQ/