В моем коде background-position-y
это не работает. В Chrome все нормально, но в Firefox не работает.
У кого-нибудь есть решение?
В моем коде background-position-y
это не работает. В Chrome все нормально, но в Firefox не работает.
У кого-нибудь есть решение?
Ответы:
Если ваша позиция-x равна 0, нет другого решения, кроме как написать:
background-position: 0 100px;
background-position-x - нестандартная реализация из IE. Chrome скопировал его, но, к сожалению, не firefox ...
Однако это решение может быть не идеальным, если у вас есть отдельные спрайты на большом фоне, где строки и столбцы означают разные вещи ... (например, разные логотипы в каждой строке, выбранные / зависшие справа, простые слева) В этом случае, Я бы посоветовал разделить большую картинку на отдельные изображения или написать различные комбинации в CSS ... В зависимости от количества спрайтов, один или другой может быть лучшим выбором.
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;
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; }
background-position-y :10px;
это не работает в веб - браузере Firefox.
Вы должны следовать этому типу синтаксиса:
background-position: 10px 15px;
10px ограничено до "position-x" и 15px ограничено до "position-y"
100% рабочее решение
Перейдите по этому URL-адресу, чтобы увидеть больше примеров
Почему бы вам напрямую не использовать background-position ?
Использование:
background-position : 40% 56%;
Вместо:
background-position-x : 40%;
background-position-y : 56%
background: url("path") 89px 78px no-repeat;
Не сработает, если вам нужен фон вместе с изображением. Так что используйте:
background: orange url("path-to-image.png") 89px 78px no-repeat;
Убедитесь, что вы явно указали размер вашего смещения. Сегодня я столкнулся именно с этой проблемой, и это было связано с тем, как браузеры интерпретируют значения, которые вы указываете в своем CSS.
Например, это отлично работает в Chrome:
background: url("my-image.png") 100 100 no-repeat;
Но для Firefox и IE вам нужно написать:
background: url("my-image.png") 100px 100px no-repeat;
Надеюсь это поможет.
Однако это решение может быть не идеальным, если у вас есть отдельные спрайты на большом фоне, где строки и столбцы означают разные вещи ... (например, разные логотипы в каждой строке, выбранные / зависшие справа, простые слева) В этом случае, Я бы посоветовал разделить большую картинку на отдельные изображения или написать различные комбинации в 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');
}
});
}
background-position-x
и-y
будет поддерживаться в Firefox 49: developer.mozilla.org/en-US/docs/Web/CSS/…