题
我找到了一个css3面包屑教程,并为它做了一些编辑(虽然教程版本有同样的问题),发现如果面包屑进入了一条新行,那么它会因其使用溢出而误用:隐藏隐藏伪元素...
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/
问题是使用边框和高度在CSS3中制作三角形,因为我想要三角形的点,伪元素必须非常大,设置溢出:隐藏通过摆脱剩余而解决了这个问题。当面包屑跨越页面上的一行时,出现问题。
解决方案
只是让箭头变小,这是更改:
.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;
}
. 不隶属于 StackOverflow