總結(jié)一下jquery獲取元素位置方法:
一般情況,最簡(jiǎn)單的就是到達(dá)某一個(gè)元素時(shí),元素出現(xiàn):
$(window).scrollTop+$(window)[0].innerHeight
關(guān)于窗口大小(即就是可視區(qū)域大小)
其中jquery的 $(window).innerHeight()
==$(window)[0].innerHeight
其實(shí)相當(dāng)于jquer把這個(gè)原生js中的屬性封裝成了一個(gè)函數(shù) window.innnerHeight
也和上面兩個(gè)式子相等.
還有一個(gè):document.documentElement.clientHeight
=window.innnerHeight
so 四個(gè)都相等啦!
關(guān)于滾動(dòng)條:
$(window).scrollTop()=window.scrollY=document.body.scrollTop
頁(yè)面總高度
document.body.clientHeight
某個(gè)元素距離頂端的距離
document.getElementById("product-active").offsetTop
(整數(shù))
只能說這兩個(gè)近似相等
$("#product-active").offset().top
(浮點(diǎn)數(shù))
鼠標(biāo)的相對(duì)距離
不存在e.target.offsetX這個(gè)屬性,只有e.target.offsetLeft這個(gè)屬性
注意如果事件綁定在<div><h1></h1></div>上,鼠標(biāo)移入h1會(huì)觸發(fā)
此時(shí)得到的坐標(biāo)應(yīng)該為 e.target.offsetLeft+e.offsetX就是相當(dāng)于相對(duì)div的距離。
另外clientX得到的是相對(duì)于可視窗口00點(diǎn)的坐標(biāo),而pageX相對(duì)于html的00坐標(biāo)
注意理解!
// 變量的解構(gòu) 其實(shí)就相當(dāng)于給x賦值,因?yàn)閑里面有e.offsetX這個(gè)屬性
let { offsetX: x, offsetY: y } = e;
getBoundingClientRect
getBoundingClientRect() 會(huì)得到四個(gè)值,分別是width,height,top,left。
注意得到的相對(duì)于視窗的top和left 如果相對(duì)于html記得加上滾動(dòng)條的距離(window.scrollY或者document.body.scrollTop)