2013-02-13 14 views
84

Nel mio codice il background-position-y non funziona. In Chrome va bene, ma non funziona in Firefox.background-position-y non funziona in Firefox (tramite CSS)?

Chiunque ha qualche soluzione?

+0

Buone notizie a tutti! Sembra che 'background-position-x' e' -y' siano supportati in Firefox 49: https://developer.mozilla.org/en-US/docs/Web/CSS/background-position-x#Browser_compatibility – Sphinxxx

risposta

119

Se la posizione-x è 0, non c'è altra soluzione che la scrittura:

background-position: 0 100px; 

background-position-x è un'implementazione non standard provenienti da IE. Chrome ha copiato, ma purtroppo non firefox ...

Tuttavia questa soluzione non può essere perfetto se si dispone di sprite separate su un grande sfondo, con le righe e colonne che significano cose diverse ... (ad esempio loghi diversi su ogni riga, selezionata/posizionata a destra, semplice a sinistra) In tal caso, suggerirei di separare l'immagine grande in immagini separate o scrivere le diverse combinazioni nel CSS ... A seconda del numero di sprite, uno o l'altra potrebbe essere la scelta migliore.

+0

Huuumm ! Grazie! Cerco e ho lavorato! –

+0

Grazie, ottima cattura. Sono andato e ho rimosso i miei usi di -x e -y in modo da essere conforme agli standard. :) –

+0

Come sempre con FF ... wierd –

19

Utilizzare questa

background: url("path-to-url.png") 89px 78px no-repeat; 

Invece di questo

background-image: url("path"); 
background-position-x: 89px; 
background-position-y: 78px; 
background-repeat: no-repeat; 
+3

divertente che firefox non supporta il markup "Invece", ma sì, funziona .. ty;) – Adrian

+2

ha funzionato! Grazie! –

0

Tuttavia questa soluzione non può essere perfetto se si dispone di sprite separate su un grande sfondo, con le righe e colonne che significa cose diverse. .. (ad esempio diversi loghi su ogni riga, selezionati/posizionati a destra, semplici a sinistra) In tal caso, suggerirei di separare l'immagine grande in immagini separate, o scrivere le diverse combinazioni nel CSS ... sul numero di sprite, l'una o l'altra potrebbe essere la scelta migliore.

miniera presenta il problema esatto dichiarata dal Orabîg che ha un tavolo come sprite che ha colonne e righe.

Qui di seguito è quello che ho usato come una soluzione utilizzando js

firefoxFixBackgroundposition:function(){ 
    $('.circle').on({ 
    mouseenter: function(){ 
     $(this).css('background-position',$(this).css('background-position').split(' ')[0]+' -10px'); 
    }, 
    mouseleave: function(){ 
     $(this).css('background-position',$(this).css('background-position').split(' ')[0]+' 0'); 
    } 
    });  
} 
0

assicurarsi di indicare esplicitamente la misura di compensazione vostra. Oggi mi sono imbattuto in questo problema esatto, ed è dovuto al modo in cui i browser interpretano i valori forniti nel CSS.

Ad esempio, questo funziona perfettamente in Chrome:

background: url("my-image.png") 100 100 no-repeat; 

Ma, per Firefox e IE, è necessario scrivere:

background: url("my-image.png") 100px 100px no-repeat; 

Spero che questo aiuti.

3
background: url("path") 89px 78px no-repeat; 

non funziona se si desidera uno sfondo insieme all'immagine. Così utilizzare:

background: orange url("path-to-image.png") 89px 78px no-repeat; 
1

questo ha funzionato per me:

a { 
    background-image: url(/image.jpg); 
    width: 228px; 
    height: 78px; 
    display: inline-block; 
} 

a:hover { 
    background-position: 0 -78px; 
    background-repeat: no-repeat; 
} 
15

Firefox 49 will be released supporto -con per background-position-[xy] -in settembre 2016.Per le versioni precedenti fino a 31, è possibile utilizzare CSS variables per ottenere il posizionamento dello sfondo su un singolo asse simile all'utilizzo di background-position-x o background-position-y. Le variabili CSS hanno raggiunto lo stato di Candidate Recommendation in December 2015.

Il seguente è un esempio completamente cross-browser di modificare la posizione bassa assi per le immagini sprite sulla comparsa:

:root { 
    --bgX: 0px; 
    --bgY: 0px; 
} 

a { 
    background-position: 0px 0px; 
    background-position: var(--bgX) var(--bgY); 
} 

a:hover, a:focus { background-position-x: -54px; --bgX: -54px; } 
a:active { background-position-x: -108px; --bgX: -108px; } 
a.facebook { background-position-y: -20px; --bgY: -20px; } 
a.gplus { background-position-y: -40px; --bgY: -40px; } 
+0

È passato quasi un anno in un limbo, con Firefox che è ancora l'unica implementazione. Non è un buon segno – BoltClock

+1

@BoltClock: è [sotto esame] (https://status.modern.ie/cssvariables) di Microsoft, con un discreto numero di voti dietro di esso, e lo sviluppo [just (re) started] (https://code.google .com/p/chromium/issues/detail? id = 465126) per Chrome. Tuttavia, per questo particolare caso d'uso, le variabili CSS possono essere utilizzate oggi, poiché l'unico browser che le implementa è l'unico che ha bisogno di loro per simulare background-position-x/y. –

+0

Fantastico! Meglio tardi che mai immagino :) – BoltClock

15

background-position-y :10px; è non funziona in Firefox browser web.

Si dovrebbe seguire questo tipo di sintassi:

background-position: 10px 15px; 

100% Soluzione lavoro

+0

Questo funziona in ff v. 38. Dovrebbe essere contrassegnato come la soluzione corretta. Raggiunge esattamente ciò che la domanda è dopo – mcabe

3

Perché non si utilizza background-position direttamente?

Usa:

background-position : 40% 56%; 

Invece di:

background-position-x : 40%; 
background-position-y : 56% 
Problemi correlati