background-position-y no funciona en Firefox (a través de CSS)?


Respuestas:


120

Si su posición-x es 0, no hay otra solución que escribir:

background-position: 0 100px;

background-position-x es una implementación no estándar que proviene de IE. Chrome lo copió, pero lamentablemente no Firefox ...

Sin embargo, esta solución puede no ser perfecta si tiene sprites separados sobre un fondo grande, con filas y columnas que significan cosas diferentes ... (por ejemplo, diferentes logotipos en cada fila, seleccionados / suspendidos a la derecha, lisos a la izquierda) En ese caso, Sugeriría separar la imagen grande en imágenes separadas, o escribir las diferentes combinaciones en el CSS ... Dependiendo del número de sprites, uno u otro podría ser la mejor opción.


Gracias, gran captura. Simplemente fui y eliminé mis usos de -xy -y para cumplir con los estándares. :)
Kenny Wyland

Como siempre con FF ... extraño
Mladen Janjetovic

19

Utilizar esta

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

En lugar de esto

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

3
Es curioso que Firefox no admita el marcado "En lugar", pero sí, funciona ... ty;)
Adrian

16

Firefox 49 se lanzará, con soporte para, background-position-[xy]en septiembre de 2016. Para versiones anteriores hasta 31, puede usar variables CSS para lograr posicionar el fondo en un solo eje similar a usar background-position-xo background-position-y. Las variables CSS alcanzaron el estado de Candidata a Recomendación en diciembre de 2015 .

El siguiente es un ejemplo completamente en varios navegadores de cómo modificar los ejes de posición de fondo para imágenes de sprites al pasar el mouse:

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

Ha estado casi un año en el limbo, y Firefox sigue siendo la única implementación. No es buena señal.
BoltClock

1
@BoltClock: Microsoft lo está considerando , con unos pocos votos detrás, y el desarrollo acaba de (re) comenzar para Chrome. Sin embargo, para este caso de uso particular, las variables CSS se pueden emplear hoy en día, ya que el único navegador que las implementa es el único que las necesita para simular background-position-x / y.
Andy E

¡Frio! Mejor tarde que nunca, supongo :)
BoltClock

2
Recién notado: CSS Variables está en camino a CR . También genial.
BoltClock

hola 2016! todavía no hay implementación ...: \
ghettosoak

15

background-position-y :10px;es que no trabaja en el navegador web Firefox.

Debes seguir este tipo de sintaxis:

background-position: 10px 15px;

10px está limitado a "position-x" y 15px limitado a "position-y"

Solución de trabajo 100%

Siga esta URL para ver más ejemplos.


Esto funciona en ff v. 38. Debe marcarse como la solución correcta. Logra exactamente lo que
busca

3

¿Por qué no usa background-position directamente?

Utilizar:

background-position : 40% 56%;

En vez de:

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

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

No funcionará si desea un fondo junto con la imagen. Entonces usa:

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

1

Esto funcionó para mí:

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

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

0

Asegúrese de indicar explícitamente la medida de su compensación. Me encontré con este problema exacto hoy, y se debió a cómo los navegadores interpretan los valores que proporciona en su CSS.

Por ejemplo, esto funciona perfectamente en Chrome:

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

Pero, para Firefox e IE, debe escribir:

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

Espero que esto ayude.


0

Sin embargo, esta solución puede no ser perfecta si tiene sprites separados sobre un fondo grande, con filas y columnas que significan cosas diferentes ... (por ejemplo, diferentes logotipos en cada fila, seleccionados / suspendidos a la derecha, lisos a la izquierda) En ese caso, Sugeriría separar la imagen grande en imágenes separadas, o escribir las diferentes combinaciones en el CSS ... Dependiendo del número de sprites, uno u otro podría ser la mejor opción.

El mío tiene el problema exacto según lo declarado por Orabîg, que tiene una tabla como un sprite que tiene columnas y filas.

A continuación se muestra lo que utilicé como solución al usar 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');   
    }
  });      
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.