CSS重叠箭头

时间:2012-06-17 21:56:42

标签: css css3

我正在尝试使用CSS3完成非常类似于下图的内容。

enter image description here

唯一的区别是最后一个div会有尖头。

在我寻找类似于适应的东西时,我遇到了this js fiddle这与我想做的非常接近,但是引入了两个问题:第一,用帆布完成,第二,用力我为每个箭头有效地“绘制”箭头两次 - 一个用于div,一个用于下一个箭头之前的空间。必须有一些更清洁的方法来做到这一点 - 有人能在这里给我一些方向吗?

我需要知道的是如何使用CSS3构建上图中显示的内容 - 一系列重叠的div箭头。

2 个答案:

答案 0 :(得分:24)

试试这个 - http://jsfiddle.net/ksNr3/8/

ul {
    margin: 20px 60px;
}

ul li {
    display: inline-block;
    height: 30px;
    line-height: 30px;
    width: 100px;
    margin: 5px 1px 0 0;
    text-indent: 35px;
    position: relative;
}

ul li:before {
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    left: -2px;
    border-style: solid;
    border-width: 15px 0 15px 15px;
    border-color: transparent transparent transparent #fff;
    z-index: 0;
}

ul li:first-child:before {
    border-color: transparent;
}

ul li a:after {
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    right: -15px;
    border-style: solid;
    border-width: 15px 0 15px 15px;
    border-color: transparent transparent transparent #ccc;
    z-index: 10;
}

ul li.active a {
    background: orange;
    z-index: 100;
}

ul li.active a:after {
    border-left-color: orange;
}

ul li a {
    display: block;
    background: #ccc;
}

ul li a:hover {
    background: pink;
}

ul li a:hover:after {
    border-color: transparent transparent transparent pink; 
}
​

更新 - 使其可点击并最小化重叠区域 - http://jsfiddle.net/ksNr3/8/

答案 1 :(得分:6)

以下CSS3解决方案不使用任何图片,并且易于使用。

我创建了 TWO 完全评论的示例,可以进一步扩展。

一个例子是箭头“视觉上”相互堆叠。

另一个例子是就像问题中的图像一样,箭头上有“end-caps”。

每个示例都有一个简单的jQuery .click()事件监听器,因此您可以看到无论您在 breadcrumb 中单击的位置,锚点都会收到正确的单击事件。箭头尾巴正常工作。

屏幕截图显示了NavBar面包屑的活动CSS悬停:

enter image description here

在浏览器中禁用CSS时,痕迹导航会优雅地降低可访问性要求。

参考: jsFiddle