之类的标题说,如何让元素的X,相对于y位置,以他们在网页中的位置和它们的定位方案,例如绝对值,相对值等,如何获得一个元素
回答
使用jQuery:
var $elt = $('select an element however'),
cssPosition = $elt.css('position'),
offset = $elt.offset(),
top = offset.top,
left = offset.left;
没有jQuery的,使用Quirksmode's findPos
function:
var elt = document.getElementBy...,
pos = findPos(elt),
top = pos[1],
left = pos[0];
获取计算CSS position
值无库another can of worms。它归结为:
element.currentStyle
(IE)getComputedStyle(element)
(真正的浏览器)
在现代浏览器,getBoundingClientRect和getClientRects会给你RECT对象描述你的元素。见https://developer.mozilla.org/en/DOM/element.getBoundingClientRect和https://developer.mozilla.org/en/DOM/element.getClientRects
如果你有IE8的工作,那么你就必须做在不同的浏览器不同的事情得到正确的答案(如对象检测getBoundingClientRect和依傍一些其他的方法,如果它不存在) 。
jQuery offset()
计算和Quirksmode findPos
将在任何执行子像素定位的浏览器(例如Firefox或IE9)中给出不正确的答案,因为它们会将答案四舍五入为整数个像素。根据你在做什么,这可能会也可能不会。
看看这个
JS:
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
HTML:
<div id="ser"> TEST</div>
回电:
alert(findPos(document.getElementById('ser')));
我希望它对您有所帮助
仅供参考:该片段包含错误。变数“curtop”正在污染全球范围。我刚刚在quirksmode.org上写了一封关于它的文章。 http://www.quirksmode.org/js/findpos.html – 2014-08-12 04:21:46
- 1. 如何获得一个元组元素
- 2. 如何获得一个元素
- 3. 如何获得一个HTML元素
- 4. 如何获得一个数组元素
- 5. 如何获得一个元素与AngularJS
- 6. jsoup:如何获得第一个元素?
- 7. 如何获得一个反应元素
- 8. 获得的一个元素
- 9. 你如何从Angular的一个元素中获得一个类?
- 10. 如何获得LXML元素
- 11. 如何获得前元素
- 12. 如何获得元素nightwatchjs
- 13. 如何从3元获得一个元素在Javascript
- 14. 如何获得一个std ::元组的元素?
- 15. 如何获得一个元素索引的一套固定的元素在Javascript
- 16. 如何一次获得一个p元素的内容
- 17. 我如何++获得一套只是第一个元素在C
- 18. 如何获得每个元素的第二元素列表
- 19. XSLT获得最后一个元素
- 20. jQuery的获得一个html元素
- 21. 获得元素
- 22. 如何获得Nokogiri中的下一个HTML元素?
- 23. 如何获得一个静态定位元素跨越屏幕
- 24. 如何获得一个HTML元素的“绝对”位置
- 25. 如何获得Angular2中的下一个元素/兄弟姐妹
- 26. 如何获得std :: set的第一个元素
- 27. 如何获得一个DIV中的数据元素
- 28. 如何获得ReactJS中另一个元素的位置?
- 29. 如何从另一个文件获得HTML元素值
- 30. 如何获得一个DOM元素到jQuery变量?
我很欣赏评论,但是......我的答案是怎么回事_not_ JavaScript? jQuery是JavaScript,我也展示了如何在没有jQuery的情况下做到这一点。 – 2011-05-26 23:06:50
jQuery的定位并不总是正确的,PPK的版本很简单 - 在某些情况下它会失败。浏览器有各种各样的定位怪癖,IE的严格,compat和quirks模式增加了混合。保持简单,生活更容易。 – RobG 2011-05-27 00:50:40
@RobG所以你有什么建议呢?我从来没有真正遇到过jQuery算法的问题。 – 2011-05-31 16:57:40