CSS:删除最后一项和第一项上的分隔符

CSS:删除最后一项和第一项上的分隔符,css,xhtml,menu,Css,Xhtml,Menu,我有一个菜单div,它有一个黑色的背景。在它里面,我有几个菜单项div,左右各有1px的边距。这样我在他们之间有了分隔物。很明显,这些出现在菜单的最左边和最右边,这是我不想要的。有没有一种方法可以在不插入1像素div作为分隔符的情况下实现这一点 多谢各位 编辑:对不起,我觉得它描述得够多了。代码如下: <div id="menu"> <a href="#"><div class="menu_item"><img src="imgs/menu

我有一个菜单div,它有一个黑色的背景。在它里面,我有几个菜单项div,左右各有1px的边距。这样我在他们之间有了分隔物。很明显,这些出现在菜单的最左边和最右边,这是我不想要的。有没有一种方法可以在不插入1像素div作为分隔符的情况下实现这一点

多谢各位

编辑:对不起,我觉得它描述得够多了。代码如下:

<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不兼容是可以的(谢天谢地)。

实现这一点的最简单方法是用自定义类标记第一个和最后一个元素,并从中删除该边距

<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>

如果大部分用户的浏览器支持CSS3,您可以使用:


难道你不能让每边都有2px的左边距而不是1px,然后使用css伪类
:first child
删除第一项的这些边距吗


编辑:我同意您应该使用边框作为分隔符而不是背景,但如果出于某些原因这样做,我的答案仍然有效:-)

以下规则将适用于所有紧跟另一个的菜单项元素。菜单项元素:

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

向我们展示一些代码会很好,因为我们只能假设到目前为止您的意思是什么。将div放在链接中是不好的。n1313:如果我不这样做,则只有图像可以单击,并且它们比实际div小。通过适当地定位链接,您应该不需要div。类似于:.menu a{display:block;width:100px;float:left;}您必须为图像添加一个
alt
属性,因此如果无法加载或显示图像,则会显示一些文本,否则,在这种情况下,您的菜单将不可用。(+必须符合标准)。嘿!比我的
:第一个孩子更漂亮!有人还在使用IE6吗?微软仍然支持它,但即使是alexa大牌也放弃了支持它在IE中不起作用。。。那又怎么样?这并不是什么重要的事情,只是一个小小的设计。只要这个网站可以在每个浏览器上使用,我就可以了。它不是一个20乘2像素的黑色矩形,会吓坏IE6用户。。。如果是这样的话,他们中的大多数人都会死于心脏病。^^这肯定比:first child更漂亮,但在ff3.5中它对我不起作用(虽然可能是我做错了什么)。我更正了第一个示例中的边距,
1px 0
将边距放在顶部/底部,而不是应该的左/右。另外,“none”不是AFAIK的有效值,所以我将其替换为0。嗯,我对CSS没有经验,也没有为此考虑边界。我有一个#menu div,这是我想到的第一个解决方案。与此解决方案相比,borders是否有一些优势?borders只是一种更“干净”的方式,因为borders已经是一种分隔符。我认为第一个和最后一个孩子实际上是CSS2。大多数浏览器都支持它们,我想只有ie6不支持。
div#menu div:first-child {
margin-left: none;
}
div#menu div:last-child {
margin-right: none;
}
.menu_item + .menu_item {
  border-left: 2px solid black;
}