background-position-y не працює у Firefox (через CSS)?


Відповіді:


120

Якщо ваше position-x дорівнює 0, немає іншого рішення, окрім написання:

background-position: 0 100px;

background-position-x - це нестандартна реалізація, що надходить від IE. Chrome дійсно скопіював його, але, на жаль, не Firefox ...

Однак це рішення може бути не ідеальним, якщо у вас є окремі спрайти на великому фоні, з рядками та стовпцями, що означають різні речі ... (наприклад, різні логотипи в кожному рядку, виділені / наведені праворуч, звичайні ліві) У такому випадку, Я б запропонував відокремити велике зображення на окремих зображеннях або записати різні комбінації в CSS ... Залежно від кількості спрайтів, найкращим вибором може бути той чи інший.


Дякую, чудовий улов. Я щойно пішов і вилучив використання -x та -y, щоб відповідати стандартам. :)
Кенні Вайланд

Як завжди з FF ... дивним
Младен Янетович

19

Використовуй це

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

Замість цього

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

3
дивно, що firefox не підтримує розмітку "Натомість", але так, це працює .. ty;)
Адріан

16

Firefox 49 буде випущений - із підтримкою - background-position-[xy]у вересні 2016 року. Для старих версій до 31 ви можете використовувати змінні CSS, щоб досягти розташування фону на одній осі, подібно до використання background-position-xабо background-position-y. Змінні CSS досягли статусу Рекомендації щодо кандидатів у грудні 2015 року .

Нижче наведено повністю крос-браузерний приклад зміни осей положення фону для спрайт-зображень при наведенні:

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

Минув майже рік у невизначеності, а Firefox все ще залишається єдиною реалізацією. Не хороший знак.
BoltClock

1
@BoltClock: Це розглядається корпорацією Майкрософт, за нею досить кілька голосів, і розробка щойно (пере) розпочалася для Chrome. Однак для цього конкретного випадку використання сьогодні можна використовувати змінні CSS, оскільки єдиним браузером, який їх реалізує, є єдиний, який потребує їх для імітації background-position-x / y.
Andy E

Класно! Краще пізно, ніж ніколи, думаю :)
BoltClock

2
Щойно помітили - змінні CSS на шляху до CR . Також круто.
BoltClock

привіт 2016! все ще немає реалізації ...: \
ghettosoak

15

background-position-y :10px;це не працює в веб - браузері Firefox.

Вам слід дотримуватися цього типу синтаксису:

background-position: 10px 15px;

10 пікс обмежується "position-x", а 15px обмежується "position-y"

100% робоче рішення

Перейдіть за цією URL-адресою, щоб побачити більше прикладів


Це працює у ff v. 38. Це слід позначити як правильне рішення. Він досягає саме того, про що йдеться після питання
mcabe

3

Чому б вам не використовувати безпосередньо фонове положення ?

Використання:

background-position : 40% 56%;

Замість:

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

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

Не буде працювати, якщо вам потрібен фон разом із зображенням. Тому використовуйте:

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

1

Це працювало для мене:

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

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

0

Переконайтеся, що ви чітко заявляєте вимірювання вашого зсуву. Я зіткнувся з цією точною проблемою сьогодні, і це було пов’язано з тим, як браузери інтерпретують значення, які ви надаєте у своєму CSS.

Наприклад, це чудово працює в Chrome:

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

Але для Firefox та IE потрібно написати:

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

Сподіваюся, це допомагає.


0

Однак це рішення може бути не ідеальним, якщо у вас є окремі спрайти на великому фоні, з рядками та стовпчиками, що означають різні речі ... (наприклад, різні логотипи на кожному рядку, виділені / наведені праворуч, звичайні ліві) У такому випадку, Я б запропонував відокремити велике зображення на окремих зображеннях або записати різні комбінації в CSS ... Залежно від кількості спрайтів, найкращим вибором може бути той чи інший.

Мій має точну проблему, як зазначив Orabîg, яка має таку таблицю, як спрайт, яка має стовпці та рядки.

Нижче наведено те, що я використав як обхідний шлях за допомогою 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');   
    }
  });      
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.