Как мне получить background-position-y в Firefox с помощью jQuery? - PullRequest
14 голосов
/ 26 июля 2011
$(elem).css('backgroundPositionY')

делает это на Chrome, то есть и на Safari, но не на Firefox (ни на Opera, я считаю).Вы могли бы подумать, что в jQuery есть полифил, но его нет, как в 1.5.Как я могу легко получить положение фона Y, например, для фоновой анимации (например, для параллакса)?

EDIT : Скажите Mozilla , что вы хотите background-position-[x,y] поддержку(используйте функцию «голосовать», а не комментировать, если у вас нет чего-то предусмотрительного для добавления).Ошибка была открыта с 2010-го (3 года), так что не ждите, чтобы исправить.:)

Ответы [ 4 ]

39 голосов
/ 26 июля 2011
var backgroundPos = $(elem).css('backgroundPosition').split(" ");
//now contains an array like ["0%", "50px"]

var xPos = backgroundPos[0],
    yPos = backgroundPos[1];
7 голосов
/ 26 июля 2011

Вот мое хакерское решение:

var $jQueryObject = jQuery('#jQueryObject');
var backgroundPosition = $jQueryObject.css('background-position');
// backgroundPosition = "0% 0%" for example
var displacement = backgroundPosition.split(' '); // ["0%", "0%"]
var y = Number(displacement[1].replace(/[^0-9-]/g, ''));

// As suggested, you could also get the float:
var yFloat = parseFloat(displacement[1].replace(/[^0-9-]/g, ''));

Здесь y будет числом, которое будет процентным или пиксельным смещением в зависимости от вашей ситуации. Я сделал небольшое регулярное выражение, чтобы избавиться от нецифровых символов, чтобы вы могли получить число в виде числа JavaScript.

1 голос
/ 06 декабря 2013

К сожалению, некоторые браузеры (такие как Chrome) сообщают css('background-position') или css('backgroundPosition') как left <x> top <y>, в то время как другие (Internet Explorer, Firefox, Opera) сообщают о нем как <x> <y>.У меня сработало следующее:

var x, y, pos = $(elem).css('background-position').split(' ');

if(pos[0] === 'left') {
  x = pos[1];
  y = pos[3];
} else {
  x = pos[0];
  y = pos[1];     
}
0 голосов
/ 18 февраля 2016

Построение ответа Секвойи МакДауэлл вы также можете сделать

var yPos = $(elem).css('backgroundPositionY');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...