在HTML + CSS中的活动菜单项下添加一个箭头

时间:2012-04-30 22:22:05

标签: html css html5 css3

我正在尝试生成如下菜单:

enter image description here

菜单中有几个项目,活动的项目后面有一个箭头。 菜单项是以下代码的标签:

<div class="menuCenter">
     <div class="linksWrapper">
      <a href="#">Home</a>
      <a class="menuCenterLinkLeft" href="#">Plans & Pricing</a>
      <a class="menuCenterLinkLeft" href="#">Sign In</a>
      <a class="menuCenterLinkLeft active" href="#">Sign Up</a>
      <a class="menuCenterLinkLeft" href="#">Contact</a>
     </div>
</div>

我试了两个选择: 1-使用javascript绝对定位箭头图像。调整页面大小时我遇到问题。 2-使用:after伪元素,如下所示:

.linksWrapper a.active:after
{
    content: url("images/arrowImg.png");
    position: relative;
    left: -40px;
    top: 30px; 
}

这种方法的问题是箭头的水平对齐。它应该低于链接的中心,我无法实现。 我可以使用HTML5或CSS 3。

任何帮助?

3 个答案:

答案 0 :(得分:9)

试试这个:

.linksWrapper a.active:after {
    content: url("images/arrowImg.png");
    position: absolute;
    left: 50%;
    top: 30px;
    margin-left: - <width-of-your-image> / 2; /* negative number!*/
}

旁注:我避免将{放在换行符上,因为它可能会在javascript中产生令人讨厌的效果。

诀窍是left:50%;并通过margin-left将其设置为半宽来纠正位置。

请参阅 example

答案 1 :(得分:2)

绝对定位方法应该有效,你需要将箭头放在另一个定义了position:relative的div中,这样绝对坐标就是相对于这个父div,而不是相对于body元素。

但是,我会采用这种方法:

使箭头成为实际a.active项目的背景图片的一部分 - 这样它将以background-position为中心,您不需要任何脚本!

答案 2 :(得分:0)

我把它放在一起非常快..

http://jsfiddle.net/8Sqwq/1/

因为我不太确定你的代码有多灵活,所以这是我能想到的最好的。

哪个href的类名为.active将继承箭头

//我更新了小提琴以显示它的实际效果。