8

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

在此处输入图像描述

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

在我寻找类似适应的东西时,我遇到了这个非常接近我想要做的事情的js fiddle ,但引入了两个问题:首先,它是用画布完成的,其次,它迫使我“画画”每个箭头有效地使用两次箭头 - 一个用于 div,一个用于下一个箭头之前的空间。必须有一些更清洁的方式来做到这一点——有人可以在这里为我提供一些方向吗?

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

4

2 回答 2

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/

于 2012-06-17T22:13:37.220 回答
7

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

我创建了两个可以进一步扩展的完整注释示例。

一个示例具有“视觉上”相互堆叠的箭头。

另一个示例就像您的问题中的图像一样,箭头上带有“端盖”。

每个示例都有一个简单的 jQuery.click()事件侦听器,因此无论您在面包屑中单击何处,都可以看到锚点将接收到正确的单击事件。箭尾工作正常。

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

在此处输入图像描述

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

参考:    jsFiddle

于 2012-07-01T13:09:01.347 回答