Problema di overflow del breadcrumb
Domanda
Ho trovato un tutorial del panecrumb css3 e ha fatto alcune modifiche ad esso (anche se la versione tutorial ha avuto lo stesso problema), e ha scoperto che se il pangrattato è andato su una nuova riga, allora fallirebbe miseramente dovuta utilizzando un overflow: nascosto Per nascondere gli elementi pseudo ...
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;
}
.
Ecco il violino ... http://jsfiddle.net/kggnb/40/
Ho tentato di apportare modifiche al CSS per risolvere questo, ma non riescono a vedere un modo per cambiare gli elementi pseudo senza renderli più stretti, ma questo significherebbe anche avere punti estremamente pointy.
L'HTML viene eseguito sul server, la migliore soluzione che riesco a pensare è mettere in alcuni controlli prima che venga resi per verificare quanti elementi verranno generati, e poi semplicemente lanciando quelli sovrastanti oltre una determinata dimensione dello schermo all'interno di A Nuovo elenco e ricominciare da ogni volta che colpisce quella larghezza.
Un'altra idea si è inventata un collega stava usando un'immagine per i punti, ma preferirei attaccare una soluzione CSS se è possibile.
Qualche altra idea / correzioni?
Grazie.
Aggiornamento - Scusa, chiareggerò. Non voglio che le frecce appaiano affatto, la versione corretta del pangrattato sarà simile a questo. http://jsfiddle.net/kggnb/49/
Il problema utilizza Bordi e altezza per effettuare triangoli in CSS3, a causa del punto che voglio per il triangolo, gli elementi pseudo devono essere piuttosto grandi, impostare il trabocco: risolve il problema questo problema sbarazzando del residuo, ma Quando il pangrattato si estende su una riga sulla pagina, i problemi sorgono.
Potrei usare l'inclinazione, ma poi non funzionerebbe in IE8.
Soluzione
Basta rendere la freccia più piccola, ecco le modifiche:
.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;
}
.