2014-12-22 10 views
8

Ho un tag HTML che ho creato utilizzando CSS3. Vorrei "evidenziare" una determinata scheda. Idealmente, mi piacerebbe avere un bagliore attorno al tag che mostra che è attivo. Sto usando ': after' per creare la forma del tag, ma questo non mi consente di evidenziare la forma attuale.Evidenziazione di un tag tramite CSS

Ecco un violino: http://jsfiddle.net/nocztpxv/2/

HTML

<a href="#" class="tag"> 
    InsertHTML 
</a> 

CSS

.active{ 
    border: 1px solid rgb(246, 255, 0);  
    box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.05) inset, 0px 0px 8px rgba(255, 252, 14, 0.6); 
} 

Come si può vedere, il momento clou è intorno tutto tranne la parte freccia/triangolo. Qualcuno sa come potrei avere lo stesso sguardo evidenziato attorno alla freccia/triangolo?

+0

Hai visto questo post su [Trucchi CSS] (http: // CSS-trucchi com/triangolo con-ombra /)? Potresti non essere in grado di farlo nella sua forma attuale – PTD

+0

Credo che avresti bisogno di ruotare (45deg) il tuo: dopo lo pseudo elemento dopo averlo dato una larghezza e un'altezza fissa – robjez

+0

Questo non è attualmente possibile, a meno che non si arrivi a una soluzione complicata. Dal momento che quei triangoli sono già renderizzati usando '' border'' e '' border-color''. La soluzione migliore sarebbe quella di disegnare un'immagine adatta da qualche parte nel Photoshop, con stati neutri e attivi e gestire '' background-image'' su '': hover'', ecc. Ho visto realizzazioni di questo in molte risorse popolari. – knitevision

risposta

7

C'è una soluzione che posso pensare, ma richiede una leggera modifica al DOM. La soluzione è racchiudendo il testo del collegamento all'interno di un elemento <span>, e invece di usare i bordi per il triangolo, useremo un rettangolo ruotato per quell'effetto. Tuttavia, poiché il fondo deve essere superiore nella z-index del rettangolo ruotato, è necessario nesting (in modo che si dichiara sfondo blu sull'elemento <span> invece

Vedi violino qui:. http://jsfiddle.net/teddyrised/nocztpxv/6/ Per un tre visualizzazione tridimensionale della pila, vedere qui: http://jsfiddle.net/teddyrised/nocztpxv/8/

enter image description here

Come ci sono solo due pseudo-elementi possibili e si utilizza sia ::before e ::after per scopi stilistici già, possiamo usare solo un ulteriore livello di nidificazione :

<a href="#" class="tag"> 
    <span>InsertHTML</span> 
</a> 
<a href="#" class="tag active"> 
    <span>InsertHTML</span> 
</a> 
<a href="#" class="tag"> 
    <span>InsertHTML</span> 
</a> 

Per il CSS (nota: si potrebbe desiderare di aggiungere prefissi vendor al CSS trasformare la proprietà):

.tag { 
    font-family: Helvetica, Arial, sans-serif; 
    display: inline-block; 
    color: #fff; 
    position: relative; 
    border-top-left-radius: 4px; 
    border-bottom-left-radius: 4px; 
    margin: 0 30px 0 0; 
    text-decoration: none; 
} 

/* The rotated square */ 
.tag::after { 
    background-color: #588fe5; 
    display: block; 
    height: 27px; 
    width: 27px; 
    position: absolute; 
    top: 6px; 
    right: -13px; 
    content: ""; 
    transform: rotate(45deg); 
    z-index: 1; 
} 

/* Nested span */ 
.tag > span { 
    display: inline-block; 
    background-color: #588fe5; 
    position: relative; 
    padding: 10px; 
    z-index: 2; 
} 

/* The white dot */ 
.tag > span::before { 
    background: #fff; 
    width: 10px; 
    height: 10px; 
    content: ""; 
    display: inline-block; 
    border-radius: 20px; 
    margin: 0 5px 0 0; 
} 

/* Hover effects */ 
.tag:hover::after, .tag:hover > span { 
    background-color: #739fe4; 
} 

/* Active tag */ 
.tag.active, .tag.active::after { 
    box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.05) inset, 0px 0px 8px rgba(255, 252, 14, 0.6); 
} 
+0

Wow! Non l'avrei mai immaginato da solo. Grazie mille @Terry! Le modifiche al mio codice sono un non-problema. Questo risolve completamente il mio problema. – EricBellDesigns

+0

@ericbelldesigns Sono contento di aver aiutato - ora ho incluso una demo 3D per mostrarvi come funziona lo stacking;) http://jsfiddle.net/teddyrised/nocztpxv/8/ – Terry

+0

incredibile uomo! grazie ancora!! – EricBellDesigns

Problemi correlati