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.

È stato utile?

Soluzione

http://jsfiddle.net/kggnb/50/

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;
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top