Si votre position-x est 0, il n'y a pas d'autre solution que d'écrire:
background-position: 0100px;
background-position-x est une implémentation non standard provenant d'IE. Chrome l'a copié, mais malheureusement pas Firefox ...
Cependant, cette solution peut ne pas être parfaite si vous avez des sprites séparés sur un grand fond, avec des lignes et des cols signifiant des choses différentes ... (par exemple des logos différents sur chaque ligne, sélectionnés / survolés à droite, unis à gauche) Dans ce cas, Je suggérerais de séparer la grande image en images séparées, ou d'écrire les différentes combinaisons dans le CSS ... Selon le nombre de sprites, l'un ou l'autre pourrait être le meilleur choix.
drôle que Firefox ne supporte pas le balisage "Au lieu de ça", mais oui, ça marche .. ty;)
Adrian
16
Firefox 49 sortira - avec prise en charge pour background-position-[xy]- en septembre 2016. Pour les anciennes versions jusqu'à 31, vous pouvez utiliser des variables CSS pour obtenir le positionnement de l'arrière-plan sur un seul axe similaire à l'utilisation de background-position-xou background-position-y. Les variables CSS ont atteint le statut de recommandation candidate en décembre 2015 .
Ce qui suit est un exemple entièrement multi-navigateurs de modification des axes de position d'arrière-plan pour les images de sprite au survol:
Cela fait presque un an dans les limbes, Firefox étant toujours la seule implémentation. Pas bon signe.
BoltClock
1
@BoltClock: Il est à l'étude par Microsoft, avec quelques votes derrière, et le développement vient de (re) démarrer pour Chrome. Cependant, pour ce cas d'utilisation particulier, les variables CSS peuvent être utilisées aujourd'hui, car le seul navigateur qui les implémente est le seul qui en a besoin pour simuler background-position-x / y.
Assurez-vous d'indiquer explicitement la mesure de votre décalage. Je suis tombé sur ce problème exact aujourd'hui, et cela était dû à la façon dont les navigateurs interprètent les valeurs que vous fournissez dans votre CSS.
Par exemple, cela fonctionne parfaitement dans Chrome:
Cependant, cette solution peut ne pas être parfaite si vous avez des sprites séparés sur un grand fond, avec des lignes et des cols signifiant des choses différentes ... (par exemple des logos différents sur chaque ligne, sélectionnés / survolés à droite, unis à gauche) Dans ce cas, Je suggérerais de séparer la grande image en images séparées, ou d'écrire les différentes combinaisons dans le CSS ... Selon le nombre de sprites, l'un ou l'autre pourrait être le meilleur choix.
Le mien a le problème exact comme indiqué par Orabîg qui a une table comme sprite qui a des colonnes et des lignes.
Voici ce que j'ai utilisé comme solution de contournement en utilisant js
background-position-x
et-y
sera pris en charge dans Firefox 49: developer.mozilla.org/en-US/docs/Web/CSS/…Réponses:
Si votre position-x est 0, il n'y a pas d'autre solution que d'écrire:
background-position: 0 100px;
background-position-x est une implémentation non standard provenant d'IE. Chrome l'a copié, mais malheureusement pas Firefox ...
Cependant, cette solution peut ne pas être parfaite si vous avez des sprites séparés sur un grand fond, avec des lignes et des cols signifiant des choses différentes ... (par exemple des logos différents sur chaque ligne, sélectionnés / survolés à droite, unis à gauche) Dans ce cas, Je suggérerais de séparer la grande image en images séparées, ou d'écrire les différentes combinaisons dans le CSS ... Selon le nombre de sprites, l'un ou l'autre pourrait être le meilleur choix.
la source
Utilisez ceci
background: url("path-to-url.png") 89px 78px no-repeat;
Au lieu de cela
background-image: url("path"); background-position-x: 89px; background-position-y: 78px; background-repeat: no-repeat;
la source
Firefox 49 sortira - avec prise en charge pour
background-position-[xy]
- en septembre 2016. Pour les anciennes versions jusqu'à 31, vous pouvez utiliser des variables CSS pour obtenir le positionnement de l'arrière-plan sur un seul axe similaire à l'utilisation debackground-position-x
oubackground-position-y
. Les variables CSS ont atteint le statut de recommandation candidate en décembre 2015 .Ce qui suit est un exemple entièrement multi-navigateurs de modification des axes de position d'arrière-plan pour les images de sprite au survol:
: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; }
la source
Vous devez suivre ce type de syntaxe:
background-position: 10px 15px;
10px est limité à "position-x" et 15px est limité à "position-y"
Solution 100% fonctionnelle
Suivez cette URL pour plus d'exemples
la source
Pourquoi n'utilisez-vous pas directement background-position ?
Utilisation:
background-position : 40% 56%;
Au lieu de:
background-position-x : 40%; background-position-y : 56%
la source
background: url("path") 89px 78px no-repeat;
Ne fonctionnera pas si vous voulez un arrière-plan avec l'image. Alors utilisez:
background: orange url("path-to-image.png") 89px 78px no-repeat;
la source
Cela a fonctionné pour moi:
a { background-image: url(/image.jpg); width: 228px; height: 78px; display: inline-block; } a:hover { background-position: 0 -78px; background-repeat: no-repeat; }
la source
Assurez-vous d'indiquer explicitement la mesure de votre décalage. Je suis tombé sur ce problème exact aujourd'hui, et cela était dû à la façon dont les navigateurs interprètent les valeurs que vous fournissez dans votre CSS.
Par exemple, cela fonctionne parfaitement dans Chrome:
background: url("my-image.png") 100 100 no-repeat;
Mais, pour Firefox et IE, vous devez écrire:
background: url("my-image.png") 100px 100px no-repeat;
J'espère que cela t'aides.
la source
Le mien a le problème exact comme indiqué par Orabîg qui a une table comme sprite qui a des colonnes et des lignes.
Voici ce que j'ai utilisé comme solution de contournement en utilisant 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'); } }); }
la source