这是我的HTML:
<nav id="menu">
<ul>
<li><a href="">Produkte</a></li>
<li><a href="">Angebote</a></li>
<li><a href="">Referenzen</a></li>
<li><a href="">Anfahrt</a></li>
<li><a href="">Über uns</a></li>
<li><a href="">Jobs</a></li>
<li><a href="">Partner</a></li>
<li><a href="">Kontakt</a></li>
</ul>
</nav>
这是我的CSS:
#menu {
position:relative;
width:100%;
height:35px;
margin-bottom:10px;
background-image: url("../img/menuBackground.png");
background-repeat: no-repeat;
}
#menu ul {
display: block;
list-style-type: none;
position: relative;
top:5px;
margin-left:20px;
margin-right:20px;
}
#menu ul li {
display: block;
position: relative;
float: left;
margin-right: 16px;
}
正如您可能会看到“menuBackground.png”中有白色条纹。 (因此白色条纹是“menuBackground.png”图像的一部分。)问题是,菜单由CMS自动生成。 A元素中的文本永远不会与底层白色条纹重叠,与Kontakt元素一样。
当元素与白色条纹重叠时,我如何确保会有一些额外的间距?
预先感谢您对此
的任何回复
这是一个JS FIDDLE EXAMPLE ......
答案 0 :(得分:3)
以下作品:
#menu {
position:relative;
width:100%;
margin-bottom:10px;
background-repeat: no-repeat;
overflow: hidden;
}
#menu ul {
display: block;
list-style-type: none;
position: relative;
top:5px;
margin-left:20px;
margin-right:20px;
background-color: #ff9025;
overflow: hidden;
}
#menu ul li {
display: block;
position: relative;
float: left;
padding: 0 8px;
height: 35px;
background-color: #ffbf00;
}
#menu ul li:last-child {
background-image: url(http://i.stack.imgur.com/WSJSV.png);
background-position: 63% top;
background-repeat: no-repeat;
padding-right: 60px;
}
虽然,这有点像kludge。
有效地,我已从background-image
(或ul
,我现在不确定)中删除了nav
,并将其添加到{{1}的末尾} 1 ,定位它以便看到条纹。这包括为该元素添加足够的填充,并使用图像右侧的li:last-child
样式化ul
,并使用左侧颜色构造background-color
元素以假装图片。它并不理想,但我认为它可靠。当然,我建议添加和评论出更多的li
元素来测试它。
编辑在我发现IE几乎完全缺乏li
支持后,使用jQuery(正如您所说,您的网站已在评论中使用它):
:last-child
编辑到认为应该是最终版本,具有功能检测功能,可在没有$('#menu li:last').addClass('lastChild');
支持的情况下启用jQuery选项(尽管如此)我还不能明确测试:last-child
本身不存在,但我怀疑一个不支持:last-child
的浏览器可能< / em>不支持document.querySelectorAll()
,这实际上是一个可怕的假设):
:last-child
if (!document.querySelectorAll){
$('#menu li:last').addClass('lastChild');
}
伪选择器存在问题。在compatibility tables处查看Quirksmode.org时,它看起来比我想象的还要糟糕:没有低于IE9的版本支持:last-child
选择器。答案 1 :(得分:1)
根据背景图像添加空间是不可能的,你有责任让它完全符合你想要的(做数学运算),你可以制作一个div来分割你的导航栏,但为此你必须切您的背景图片,1表示导航部分,其他表示白色条纹,或者只是较低的边距和字体大小