Javascript 如何使用jQuery在firefox中获得background-position-y?
它可以在chrome、ie和safari上运行,但不能在Firefox(我相信也不能在Opera上运行)。您可能认为jQuery会有一个polyfill,但从1.5开始就没有了。如何轻松获取背景动画(例如视差)的背景Y位置Javascript 如何使用jQuery在firefox中获得background-position-y?,javascript,jquery,css,firefox,Javascript,Jquery,Css,Firefox,它可以在chrome、ie和safari上运行,但不能在Firefox(我相信也不能在Opera上运行)。您可能认为jQuery会有一个polyfill,但从1.5开始就没有了。如何轻松获取背景动画(例如视差)的背景Y位置 编辑:您需要背景位置-[x,y]支持。(使用“投票”功能,而不是评论,除非你有先见之明要添加)。该漏洞自2010年(至今已有3年)起就一直存在,所以不要屏息以待修复。:) 以下是我的黑客解决方案: var backgroundPos = $(elem).css('backgr
编辑:您需要
背景位置-[x,y]
支持。(使用“投票”功能,而不是评论,除非你有先见之明要添加)。该漏洞自2010年(至今已有3年)起就一直存在,所以不要屏息以待修复。:) 以下是我的黑客解决方案:
var backgroundPos = $(elem).css('backgroundPosition').split(" ");
//now contains an array like ["0%", "50px"]
var xPos = backgroundPos[0],
yPos = backgroundPos[1];
这里的
y
是一个数字,根据您的情况,它可以是百分比或像素偏移量。我做了一个小正则表达式来去掉非数字字符,这样你就可以把数字作为javascript数字了。不幸的是,一些浏览器(比如Chrome)报告css(“背景位置”)
或者css(“背景位置”)
作为左上方的,而其他浏览器(Internet Explorer、Firefox、Opera)将其报告为
。以下几点对我很有用:
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, ''));
根据红杉麦克道尔的答案,你也可以这样做
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];
}
我已经读到,如果你自己想知道一些事情并想与他人分享,你应该这样发帖,我希望这是犹太教的!如果我在这里不正确,请删除。打败我,哇。我必须做一些实验来确保它能正常工作。好了,已经过了几个星期,没有更好的答案了。尽管感觉有点脏,我还是要接受我自己的答案。我打败你是因为我作弊p我在发布问题之前就知道答案了。有一个很好的赢得选票!我可以推荐parseFloat()从字符串中提取数字吗?它比正则表达式要整洁一点,因为数字并不总是理想的:var x=Number(1);与var x=1不完全相同;可以改为执行变量y=+(置换[1]。替换(/[^0-9/g');。替换(/[^0-9-]/g'))将把23.34534%转换为2334534。我确信这不是预期的行为。将“.”添加到表达式中。立即替换(/[^0-9-,]/g'))23.34534%将为23.34534%
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];
}
var yPos = $(elem).css('backgroundPositionY');