2011-02-07 21 views
62

Sto cercando di trasformare le voci del mio menu ruotandole di 10 gradi. Il mio CSS funziona in Firefox ma non riesco a replicare l'effetto in Chrome e Safari. So che IE non supporta questa proprietà CSS3 quindi non è un problema.Trasformazione CSS3 non funzionante

ho usato seguente CSS:

li a { 
    -webkit-transform:rotate(10deg); 
    -moz-transform:rotate(10deg); 
    -o-transform:rotate(10deg); 
} 

Qualcuno potrebbe suggerire prego dove sto andando male?

Grazie.

+2

Puoi pubblicare anche l'HTML? – Kyle

+1

FYI, IE supporta questa proprietà CSS3, è sufficiente un prefisso: '-ms-transform: ruotare (10deg);' –

+0

Possibile duplicato di [trasformazione CSS non funziona su elementi in linea] (http: // stackoverflow. it/questions/14883250/css-transform-doesnt-work-on-inline-elements) – mems

risposta

160

questo è solo un'ipotesi senza vedere il resto del codice HTML/CSS:

Avete applicato display: block o display: inline-block-li a? Altrimenti, provalo.

Altrimenti, provare ad applicare le regole di trasformazione CSS3 a li.

+0

Ti amo! Il 'display: inline-block' ha aiutato. –

0

Stai provando in particolare a ruotare solo i collegamenti? Perché farlo on the LI tags sembra funzionare correttamente.

According to Snook trasformazioni richiedono il blocco degli elementi interessati. Ha anche ricevuto del codice per far funzionare questo lavoro per IE usando i filtri, se ci tenete ad aggiungerlo (anche se sembra esserci qualche limite sui valori).

39

Nei browser basati su webkit (Safari e Chrome), -webkit-transformis ignored on inline elements.. Impostare display: inline-block; su make it work. A scopo di dimostrazione/test, potresti anche voler utilizzare un angolo negativo o uno transformation-origin per evitare che il testo venga ruotato fuori dall'area visibile.

+0

ha funzionato perfettamente per me, grazie! L'ho usato su e copia per creare un simbolo di copyleft. – Elisabeth

+0

@Elisabeth Questa è un'applicazione eccellente. Nota che i riferimenti di entità devono essere terminati da un punto e virgola (come in " ©"), sebbene la maggior parte dei browser sia in entrambi i modi. – phihag

+0

Un'altra nota: se stai applicando la trasformazione per uno stato di interazione (ad esempio ': hover' o': active') devi applicare il 'inline-block' all'elemento nel suo stato predefinito, ad es. 'a {display: inline-block; } a: active {transform: translateY (0.125em); } '. Applicare il 'inline-block' allo stato dell'interazione da solo non sembra funzionare. Almeno in Chrome - funziona perfettamente con Firefox. –

-3

-webkit-transform c'è più bisogno

ms già supportano la rotazione (-ms-transform: rotate(-10deg);)

provare questo:

li a { 
    ... 

    -webkit-transform: rotate(-10deg); 
    -moz-transform: rotate(-10deg); 
    -o-transform: rotate(-10deg); 
    -ms-transform: rotate(-10deg); 
    -sand-transform: rotate(10deg); 
    display: block; 
    position: fixed; 
    } 
+1

Durante i miei test di oggi, ho notato che '-webkit-transform' non era più necessario in Chrome. Tuttavia, era ancora necessario in Safari 8. –

+0

Cosa è -sand-transform per? Una breve ricerca su Google non ha rivelato nulla. – Pete

+0

google 'CSS Sandpaper' che è rilevante per la domanda e può rendere le cose più facili. è un hack che implementa il supporto per la trasformazione CSS standard per le vecchie versioni di IE –

10

Dal momento che nessuno riferimento relativa documentazione:

CSS Transforms Module Level 1 - Terminology - Transformable Element

Un elemento trasformabile è un elemento in una di queste categorie:

  • un elemento la cui disposizione è regolata dal box model ovvero un block-level o atomic inline-level element, o la cui display property calcola a table-row , gruppo tabella-riga, gruppo-intestazione tabella, gruppo-piè di pagina-tabella, cella-tabella o didascalia della tabella
  • un elemento nel namespace SVG e non governato dal modello di box CSS che ha gli attributi transform, 'patternTransform' o gradientTransform.

Nel tuo caso, gli elementi sono <a>inline per impostazione predefinita.

Cambiando il valore della proprietà display a inline-block rende gli elementi come atomic inline-level elements, e pertanto gli elementi diventano "transformable" per definizione.

li a { 
    display: inline-block; 
    -webkit-transform: rotate(10deg); 
    -moz-transform: rotate(10deg); 
    -o-transform: rotate(10deg); 
    transform: rotate(10deg); 
} 

Come accennato in precedenza, questo sembra solo applicabile in -webkit browser basati su quanto sembra funzionare in IE/FF a prescindere.

Problemi correlati