我找到了一个css3面包屑教程,并对其进行了一些编辑(虽然教程版本有同样的问题),并发现如果面包屑进入一个新行,那么由于它使用overflow:hidden会失败隐藏伪元素......
HTML
<ul class="crumb">
<li><a href="#">Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
<li><a href="#">..Crumbs</a></li>
</ul>
CSS
.crumb {
list-style: none;
overflow: hidden;
margin-bottom: 3px;
}
.crumb li {
line-height: inherit;
}
.crumb li a {
color: white;
text-decoration: none;
padding: 0 0 0 20px;
background: #777;
position: relative;
display: block;
float: left;
border: solid 2px #777;
font-size: 10px;
}
.crumb li a:after {
content: " ";
width: 0;
height: 0;
line-height: 0;
border-top:25px solid transparent;
border-bottom: 25px solid transparent;
border-left: 15px solid #777;
position: absolute;
top: 50%;
margin-top: -25px;
left: 100%;
z-index: 2;
}
.crumb li a:before {
content: " ";
width: 0;
height: 0;
line-height: 0;
border-top: 25px solid transparent;
border-bottom: 25px solid transparent;
border-left: 15px solid white;
position: absolute;
top: 50%;
margin-top: -25px;
margin-left: 2px;
left: 100%;
z-index: 1;
}
.crumb li:first-child a {
padding-left: 8px;
}
.crumb li a:hover {
border-color: black;
background: black;
}
.crumb li a:hover:after {
border-left-color: black !important;
}
.crumb li:last-child a:hover:after {
border-left-color: #e67e22 !important;
}
.crumb li:last-child a:after {
border-left-color: #e67e22 !important;
}
.crumb li:last-child a {
border-color: #e67e22;
background: #e67e22;
}
这是小提琴...... http://jsfiddle.net/kGgNb/40/
我试图对css进行更改以修复此问题,但似乎无法看到更改伪元素的方法而不会使它们变窄,但这也意味着有极其尖锐的点。
HTML正在服务器上呈现,我能想到的最好的解决方案是在渲染之前进行一些检查,以检查将生成多少个元素,然后将任何溢出的元素抛出一个特定的屏幕大小。新列表并在每次达到该宽度时开始。
一位同事提出的另一个想法是使用图像作为分数,但如果可行,我宁愿坚持使用css修复。
还有其他想法/修正吗?
感谢。
更新 - 抱歉,我会澄清一下。我不希望箭头出现,正确版本的面包屑将如下所示。 http://jsfiddle.net/kGgNb/49/
问题在于使用border&amp;在css3中制作三角形的高度,因为我想要三角形的点,伪元素必须非常大,设置溢出:隐藏通过摆脱剩余来解决这个问题,但是当面包屑跨越一条线时页面,问题出现。
我可以使用偏斜,但是它在IE8中不起作用。
答案 0 :(得分:1)
只需将箭头缩小,这是更改:
.crumb li a:after {
....
border-top:9px solid transparent;
border-bottom: 9px solid transparent;
border-left: 9px solid #777;
....
top:-2px;
}
.crumb li a:before {
....
border-top: 9px solid transparent;
border-bottom: 9px solid transparent;
border-left: 9px solid white;
....
top:-2px;
}