国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js獲取元素相對窗口位置的實現(xiàn)代碼

2019-11-20 14:05:04
字體:
供稿:網(wǎng)友

JS獲取元素的offsetTop,offsetLeft等屬性

obj.clientWidth //獲取元素的寬度

obj.clientHeight //元素的高度
obj.offsetLeft //元素相對于父元素的left
obj.offsetTop //元素相對于父元素的top
obj.offsetWidth //元素的寬度
obj.offsetHeight //元素的高度

區(qū)別:

clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = width + padding + border
offset比client多了border的寬度

//獲取元素的縱坐標(biāo)(相對于窗口)function getTop(e){  var offset=e.offsetTop;  if(e.offsetParent!=null) offset+=getTop(e.offsetParent);  return offset;}//獲取元素的橫坐標(biāo)(相對于窗口)function getLeft(e){  var offset=e.offsetLeft;  if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);  return offset;}

之前也寫過一篇JS關(guān)于獲取元素位置的文章:JS獲取元素的offsetTop,offsetLeft等屬性,我們可以通過offsetTop和offsetLeft屬性獲取元素相對窗口的位置,但offsetTop和offsetLeft屬性都是相對于父元素定位的,而通常需要獲取位置的元素都不是在最外層,所以遍歷上級元素的offset相關(guān)屬性少不了。那效率就成問題了。

//獲取元素的縱坐標(biāo)(相對于窗口)function getTop(e){var offset=e.offsetTop;if(e.offsetParent!=null) offset+=getTop(e.offsetParent);return offset;}//獲取元素的橫坐標(biāo)(相對于窗口)function getLeft(e){var offset=e.offsetLeft;if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);return offset;}

好在瀏覽器給我提供了相應(yīng)的接口getBoundingClientRect,這個方法最早出現(xiàn)在IE瀏覽器中,后來的瀏覽器也跟著支持了這個方法,而且還更加完善,IE中只能獲取到元素的left,top,bottom,right的屬性,而后面的現(xiàn)代瀏覽器還能獲取到元素的width和

Chrome Firefox (Gecko) Internet Explorer Opera Safari
1.0 3.0 (1.9) 4.0 (Yes) 4.0

這里要注意的是,bottom是元素底部相對于窗口頂部的距離,而不是像css里面position的bottom相對于窗口底部,同理,rihgt屬性是元素最右邊相對于窗口左邊的距離。

var box = document.getElementById("box");var pos = box.getBoundingClientRect();box.innerHTML = "top:"+pos.top +  "left:"+pos.left +  "bottom:"+pos.bottom +  "right:"+pos.right +  "width:"+pos.width +  "height:"+pos.height

原創(chuàng)文章,轉(zhuǎn)載請注明: 轉(zhuǎn)載自前端開發(fā)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘肃省| 林甸县| 广丰县| 常熟市| 卓尼县| 泊头市| 磐安县| 黑龙江省| 鄂托克前旗| 察隅县| 广丰县| 温泉县| 五常市| 桦川县| 信宜市| 綦江县| 台江县| 鲁甸县| 芷江| 开江县| 汕头市| 辽阳市| 云南省| 屏东县| 镇远县| 潞西市| 河北区| 永嘉县| 乐山市| 大同县| 东阳市| 柳河县| 闽清县| 新宁县| 芮城县| 遵义县| 厦门市| 鄯善县| 永春县| 临泽县| 定安县|