如果我假设背景位置将始终采用以下格式:
0px 0px; or 10px 11px;
所以,* 数字 * px * 数字 * px。
如何在Javascript中获取x位置和y位置?
答案 0 :(得分:13)
给出以下HTML:
<div id="demo"></div>
和CSS:
div {
height: 500px;
width: 500px;
margin: 0 auto;
background: #fff url(http://placekitten.com/300/300) 50% 50% no-repeat;
}
以下JavaScript工作原理:
var demo = document.getElementById('demo'),
_tmp = window.getComputedStyle(demo,null).backgroundPosition.trim().split(/\s+/),
positions = {
'left' : _tmp[0],
'top' : _tmp[1]
};
console.log(positions, positions.left, positions.top);
上述方法确实需要支持window.getComputedStyle()
(显然)和trim()
的浏览器(尽管可以用replace(/^\s+|\s+$/g,'')
替换)。
要单独访问单位和数字,我建议在整个对象中创建其他对象来保存这些数字和单位:
var demo = document.getElementById('demo'),
_tmp = window.getComputedStyle(demo,null).backgroundPosition.trim().split(/\s+/),
positions = {
'left' : _tmp[0],
'top' : _tmp[1],
'numbers' : {
'left' : parseFloat(_tmp[0]),
'top' : parseFloat(_tmp[1])
},
'units' : {
'left' : _tmp[0].replace(/\d+/,''),
'top' : _tmp[1].replace(/\d+/,'')
}
};
console.log(positions, positions.left, positions.top, positions.numbers.left, positions.numbers.top, positions.units.left, positions.units.top);
如果没有background-position
设置会发生什么?那么,为什么不尝试使用以下CSS:
div {
height: 500px;
width: 500px;
margin: 0 auto;
background-color: #fff;
background-image: url(http://placekitten.com/300/300);
background-repeat: no-repeat;
}
在Chromium中,您似乎获得background-position
的默认0% 0%
(以及相应的数字和单位):JS Fiddle demo。
参考文献: