如何使用jQuery在firefox中获取background-position-y?

seq*_*ell 14 javascript css firefox jquery

$(elem).css('backgroundPositionY')
Run Code Online (Sandbox Code Playgroud)

它是在chrome,即和safari上进行的,但不是Firefox(也不是我认为的Opera).您认为jQuery会有一个polyfill,但它不会,从1.5开始.如何轻松获取背景动画(例如视差)的背景Y位置?

编辑:告诉Mozilla你想要background-position-[x,y]支持.(使用"投票"功能,而不是评论,除非你有一些有先见之明的东西可以添加).Bug从2010年开始(现在已经3年)了,所以不要屏住呼吸修复.:)

seq*_*ell 39

var backgroundPos = $(elem).css('backgroundPosition').split(" ");
//now contains an array like ["0%", "50px"]

var xPos = backgroundPos[0],
    yPos = backgroundPos[1];
Run Code Online (Sandbox Code Playgroud)

  • 好吧已经过了几个星期而且没有更好的答案了.如果感觉有点脏,我会继续接受我自己的答案. (2认同)

Bob*_*mer 7

这是我的hacky解决方案:

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, ''));
Run Code Online (Sandbox Code Playgroud)

y将是一个数字,可能是百分比或像素偏移,具体取决于您的情况.我做了一个小正则表达式来摆脱非数字字符,所以你可以得到这个数字作为一个javascript数字.

  • 因为我作弊,我打败了你.:p我在发布问题之前就知道了答案.有一个很好的投票!我可以建议使用parseFloat()从字符串中提取数字吗?它比正则表达式更整洁一点. (2认同)