2012-07-10 16 views
8

Sto cercando di creare questo menu nav (highlight è la pagina attiva, il grigio è hover stato):parallelogramma sfondo di navigazione con CSS

Nav Menu

posso fare il parallelogramma con il seguente CSS:

ul#nav li a { 
    text-decoration:none; 
    padding:4px 10px; 
    border-radius:3px; 
    transform: skew(-10deg); 
    -o-transform: skew(-10deg); 
    -moz-transform: skew(-10deg); 
    -webkit-transform: skew(-10deg); 
    color:#757575; 
} 

ul#nav li a:hover { 
    background:#f3f1eb; 
} 

ul#nav li a.current-menu-item { 
    color:#fff; 
    background:#5d9732; 
} 

ul#nav li a.current-menu-item:hover { 
    background:#5d9732; 
} 

Purtroppo, questo fa sì che il testo per inclinare pure, appaiono in corsivo:

Nav Menu Skewed

Ecco un jsfiddle mostra la configurazione (anche se l'inclinazione non funziona in jsfiddle): http://jsfiddle.net/K3bQJ/4/

Esiste un modo per impedire l'inclinazione del testo, in modo che non appare in corsivo? Sto caricando jQuery ma preferirei evitarlo o almeno avere un fallback CSS utilizzabile.

Grazie per qualsiasi consiglio!

+3

Per riferimento futuro, non c'è http: // cssdesk. com/che è solo per CSS e HTML senza il componente Javascript. Penso che sia abbastanza carino per questo tipo di test. – TheZ

+0

Applica la visualizzazione di ': blocco in linea;' in jsFiddle. http://jsfiddle.net/K3bQJ/5/ –

+0

Problema interessante. Sai, a volte è davvero bello usare e solo immagini :) –

risposta

13

Try this Aggiungi un arco dentro i tag e impostare è skew nella direzione opposta (si noti l'uso di skewX che è considerato corretto secondo https://developer.mozilla.org/en/CSS/-moz-transform)

<ul id="nav"> 
    <li><a class="current-menu-item" href="#"><span>Nav Item 1</span></a></li> 
<li><a href="#"><span>Nav Item 2</span></a></li> 
<li><a href="#"><span>Nav Item 3</span></a></li> 
</ul> 

ul#nav li a { 
    display: inline-block; 
    text-decoration:none; 
    padding:4px 10px; 
    border-radius:3px; 
      transform: skewX(-10deg); 
     -o-transform: skewX(-10deg); 
     -moz-transform: skewX(-10deg); 
    -webkit-transform: skewX(-10deg); 
    color:#757575; 
} 

ul#nav li a span { 
    display: inline-block; 
      transform: skewX(10deg); 
     -o-transform: skewX(10deg); 
     -moz-transform: skewX(10deg); 
    -webkit-transform: skewX(10deg); 
} 
+0

Ecco un collegamento cssdesk.com http://cssdesk.com/j9Bnx (sito cool) –

+0

Aveva lo stesso pensiero, eccetto che l'ho provato su 'a' invece di eseguire il wrapping con una span. –

+1

Perfetto, funziona! Ho appena aggiunto gli stili di sfondo al li al posto di un elemento per evitare di aggiungere più markup, quindi impostare il disallineamento inverso sull'elemento anchor. Grazie mille! –