我需要在导航元素之间添加分隔符,分隔符以图像形式呈现。
我的HTML结构如下:ol > li > a > img
。
这里有两种可能的解决方案:
- 为分隔(糟糕!)添加更多的
li
标签, - 在每个元素的图片中包含分隔符(这种方法更好,但是有可能用户会点击“主页”,然后进入“服务”,因为它们彼此紧挨着,用户有可能意外地点击属于“服务”的分隔符);
应该怎么办?
我需要在导航元素之间添加分隔符,分隔符以图像形式呈现。
我的HTML结构如下:ol > li > a > img
。
这里有两种可能的解决方案:
li
标签,应该怎么办?
nav li + li:before{
content: " | ";
padding: 0 10px;
}
这会在每个列表项之间放置一条竖线,就像原问题中的图片所描述的那样。但是,由于我们使用了相邻选择器,它不会在第一个元素之前放置竖线。而且,由于我们使用了:before
伪类选择器,它也不会在末尾添加竖线。
只需将分隔符图像作为li
的背景图像即可。
要使其仅出现在列表项之间,请将图像定位到li
的左侧,但不是在第一个项目上。
例如:
#nav li + li {
background:url('seperator.gif') no-repeat top left;
padding-left: 10px
}
这个CSS会为每个跟在另一个列表项后面的列表项添加图像 - 换句话说,除了第一个列表项外所有列表项都会添加图像。
注意,相邻选择器(li + li)在IE6中不起作用,所以您需要将背景图像添加到传统的li元素(使用条件样式表),并可能对其中一条边应用负边距。
:before
伪选择器可以防止其出现在最后一个元素之后。 - jrueborder-left
画出项之间的垂直线,非常流畅。 - Richard-Degenne.link:after {
content: '|';
padding: 0 1rem;
}
.link:last-child:after {
content: '';
}
情况:在之前
.link:before {
content: '|';
padding: 0 1rem;
}
.link:first-child:before {
content: '';
}
.menustyle li + li:before {
content: ' | ';
padding: 0;
position: relative;
top: -2px;
}
li
元素。<ul>
<li> your content </li>
<li class="divider-vertical-second-menu"></li>
<li> NExt content </li>
<li class="divider-vertical-second-menu"></li>
<li> last item </li>
</ul>
.divider-vertical-second-menu{
height: 40px;
width: 1px;
margin: 0 5px;
overflow: hidden;
background-color: #DDD;
border-right: 2px solid #FFF;
}
这将提高您的执行速度,因为它不会加载任何图像。试一下吧.. :)
我认为最好的解决方案是使用我自己使用的自然CSS边框:
border-right:1px solid;
padding-left: 5px;
padding-right: 5px;
最后,如果您不想让最后一个li有分隔边框,请在"border-right"中给它的last-child属性设置为"none",如下所示:
li:last-child{
border-right:none;
}
祝你好运 :)
<ul id="nav">
<li><a><img /></a></li>
...
<li><a><img /></a></li>
</ul>
#nav li{background: url(/images/separator.gif) no-repeat left; padding-left:20px;}
/* left padding creates a gap between links */
HTML:
<ul id="nav">
<li><a><span>link text</span></a></li>
...
<li><a><span>link text</span></a></li>
</ul
CSS:
#nav li{background: url(/images/separator.gif) no-repeat left; padding-left:20px;}
#nav a{background: url(/images/nav-bg.gif) repeat-x;}
#nav a span{display:none;}
更新 好的,我看到其他人在我之前也得到了类似的答案——我注意到John还提供了一种方法来防止分隔符出现在第一个元素之前,即使用li + li选择器——这意味着任何在另一个li之后的li。