我正在尝试仅使用 CSS3 完成与下图非常非常相似的事情。

唯一的区别是最后一个 div 会有一个尖头。
在我寻找类似适应的东西时,我遇到了这个非常接近我想要做的事情的js fiddle ,但引入了两个问题:首先,它是用画布完成的,其次,它迫使我“画画”每个箭头有效地使用两次箭头 - 一个用于 div,一个用于下一个箭头之前的空间。必须有一些更清洁的方式来做到这一点——有人可以在这里为我提供一些方向吗?
我需要知道的是如何构建上图所示的内容——一系列重叠的 div 箭头——仅使用 CSS3。
试试这个 - 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/
以下 CSS3 解决方案不使用任何图像并且易于使用。
我创建了两个可以进一步扩展的完整注释示例。
一个示例具有“视觉上”相互堆叠的箭头。
另一个示例就像您的问题中的图像一样,箭头上带有“端盖”。
每个示例都有一个简单的 jQuery.click()事件侦听器,因此无论您在面包屑中单击何处,都可以看到锚点将接收到正确的单击事件。箭尾工作正常。
屏幕截图显示了 NavBar 面包屑的活动 CSS 悬停:

当浏览器中禁用 CSS 时,面包屑导航会优雅地回退以满足可访问性要求。
参考: jsFiddle