之類的標題說,如何讓元素的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. 如何獲得一個元素與AngularJS
- 3. 如何獲得一個元素
- 4. 如何獲得一個反應元素
- 5. 如何獲得一個元素
- 6. c#SortedSet如何獲得一個元素
- 7. 如何獲得一個數組元素
- 8. jsoup:如何獲得第一個元素?
- 9. 如何獲得一個HTML元素
- 10. 獲得的一個元素
- 11. 如何獲得第一個元素值在一個div在python
- 12. 你如何從Angular的一個元素中獲得一個類?
- 13. 如何獲得LXML元素
- 14. 如何獲得前元素
- 15. 如何獲得元素nightwatchjs
- 16. 如何獲得元素
- 17. 如何獲得第二個子元素?
- 18. 如何獲得一個std ::元組的元素?
- 19. 如何從3元獲得一個元素在Javascript
- 20. 如何獲得一個元素索引的一套固定的元素在Javascript
- 21. 如何獲得多個XML元素是另一個元素的後代
- 22. 如何在jsoup中獲得元素的一級子元素
- 23. 如何一次獲得一個p元素的內容
- 24. 我如何++獲得一套只是第一個元素在C
- 25. 如果每個元素嵌入另一個元素,我如何獲得每個元素?
- 26. 如何獲得每個元素的第二元素列表
- 27. jQuery的獲得一個html元素
- 28. XSLT獲得最後一個元素
- 29. 獲得一個矢量元素崩潰
- 30. 獲得前一個元素在循環
我很欣賞評論,但是......我的答案是怎麼回事_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