2009-09-01 10 views
4

私は暗い背景を持つメニューdivを持っています。その中には、左右に1pxのマージンを持つメニュー項目divがいくつかあります。このように私はそれらの間にセパレータを持っています。明らかに、これらは私が欲しくないメニューの左端と右端に現れます。セパレータとして1ピクセルのdivを挿入しないでこれを実現する方法はありますか?申し訳ありませんが、私はそれが十分に説明的だと思った:CSS:最後と最初の項目の区切り文字を削除します

はあなたに

編集ありがとうございました。コードは次のとおりです。

<div id="menu"> 
     <a href="#"><div class="menu_item"><img src="imgs/menu/szabalyzat.png" /></div></a> 
     <a href="#"><div class="menu_item"><img src="imgs/menu/profil.png" /></div></a> 
     <a href="#"><div class="menu_item"><img src="imgs/menu/zenekarok.png" /></div></a> 
     <a href="#"><div class="menu_item"><img src="imgs/menu/jelentkezes.png" /></div></a> 
     <a href="#"><div class="menu_item"><img src="imgs/menu/esemenynaptar.png" /></div></a> 
     <a href="#"><div class="menu_item"><img src="imgs/menu/mmmk_estek.png" /></div></a> 
</div> 

IE6非互換性はOKです(ありがたいことに)。

+0

私たちには、あなたが今まで持っていたことを仮定することができますので、いくつかのコードはいいと思います。 – Jakub

+0

リンク内にdivを置くのは良くありません。 – n1313

+0

n1313:そうしないと、画像のみがクリック可能で、実際のdivよりも小さくなります。 –

答えて

1

両側に1pxの代わりに2pxの左余白を付けてから、最初の項目の余白を取り除くのにCSS疑似クラス:first-childを使用できませんか?

編集:いくつかの理由のためにそのように私はあなたが、セパレータではなく、背景として国境を使用する必要があるということに同意するが、場合には、あなたがこれを行うには、私の答えは、次のルールが適用されます

+0

さて、私はCSSに慣れていないので、この目的のために国境は考えていませんでした。私は#menu divを持っていましたが、これは私の心に入ってきたfirsの解決策でした。国境はこの解決策よりもいくつかの利点がありますか? –

+0

ボーダーはすでに境界線がセパレータの一種であるため、これを行うための「クリーン」な方法です。 – p4bl0

3

これを実現する最も簡単な方法は、最初と最後の要素をカスタムクラスでマークし、それらのマージンを削除することです。

<ul class="menu"> 
    <li class="first">One</li> 
    <li>Two</li> 
    <li>Three</li> 
    <li class="last">Four</li> 
</ul> 
<style> 
    .menu li { margin: 0 1px; } 
    .menu .first { margin-left: 0; } 
    .menu .last { margin-right: 0; } 
</style> 

また:first-childのように、複雑なCSSセレクタを使用して試すことができますが、彼らはMSIEの古いバージョンでは動作しません。

OR、あなたの代わりに右側に2つのピクセルの余白を使用し、唯一つの追加クラスで行くことができます:

<ul class="menu"> 
    <li>One</li> 
    <li>Two</li> 
    <li>Three</li> 
    <li class="last">Four</li> 
</ul> 
<style> 
    .menu li { margin-right: 2px; } 
    .menu .last { margin-right: 0; } 
</style> 
+0

最初の例でマージンを修正しました。 '1px 0'は余白を左/右ではなく上/下に置きます。また、 "none"はAFAIKという有効な値ではないので、0に置き換えました。 – DisgruntledGoat

+0

うわー、悪いです。ありがとう。 – n1313

2

視聴者のブラウザの高い割合は、CSS3をサポートしている場合、あなたは:first-child and :last-child pseudo-classesを使用することができます。

+0

私はfirstとlast-childは実際にCSS2だと思います。ほとんどのブラウザはそれらをサポートしていますが、私はie6だけが(再び)ないと思います。 – Joel

13

:-)まだ有効です別の.menu_item要素の後に続くすべての.menu_item要素に:

.menu_item + .menu_item { 
    border-left: 2px solid black; 
} 
+1

ちょっと!私の ':first-child'よりもかなり美しい! – p4bl0

+2

悲しいことに、ie6では動作しません。 – Joel

+1

まだ誰もIE6を使用していませんか? jk –

関連する問題