JavaScript與JQUERY獲取元素的寬、高和位置
javascript中
ele.getBoundingClientRect():獲取一個(gè)元素相對于瀏覽器視口的的坐標(biāo)(無論父元素定位與否),返回一個(gè)Object對象,該對象有6個(gè)屬性:top/left/right/bottom/width/height。幾乎所有瀏覽器都支持該方法。jQuery中沒有直接的方法,需要用$(ele).offset().top-$(document).scrollTop()計(jì)算得到。
注意:right是指元素右邊界距窗口最左邊的距離,bottom是指元素下邊界距窗口最上面的距離。
pageYOffset 屬性是scrollY屬性的別名,設(shè)置或返回文檔在垂直方向滾動(dòng)的像素值。window.pageYOffset == window.scrollY;前者瀏覽器兼容性更好。
所以獲取元素在頁面文檔中的位置:
var X= ele.getBoundingClientRect().left+scrollTop; var Y =ele.getBoundingClientRect().top+scrollTop; //在窗口的位置+文檔滾動(dòng)掉的尺寸
為了跨瀏覽器兼容,文檔卷掉的長度請使用如下方式:
varscrollTop= document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
jQuery中
1.鼠標(biāo)相對于頁面的位置
event.pageX/event.pageY:
鼠標(biāo)相對于頁面左/上邊緣的距離。
2.元素的位置偏移量
offset():
返回包含top和left兩個(gè)屬性的對象,相對于document文檔的坐標(biāo)。
position():
返回包含top和left兩個(gè)屬性的對象,相對于最近的已定位的包含元素的位置。若無,則相對于document。只對可見元素有效,注意ele{visibility:hidden}也屬于可見元素。
3.元素的寬高
width()/height():
獲得或設(shè)置元素【內(nèi)容】的寬/高;若元素的display:none,其值為0。
innerWidth()/innerHeight():
獲得包括內(nèi)邊距(padding)的元素寬度/高度,不包括邊框;
outerWidth()/outerHeight():
獲得包括內(nèi)邊距(padding)和邊框(border)的元素寬度/高度;
outerWidth(true)/outerHeight(true):
獲得整個(gè)元素的寬度/高度,包括外邊距、邊框、內(nèi)邊距和內(nèi)容;
注意:
1)ele.css("height"):返回帶有完整單位的字符串(例如400px),若運(yùn)算需要parseInt轉(zhuǎn)換。ele.height():返回一個(gè)沒有單位的number數(shù)值(例如400)。
2)height()總是返回內(nèi)容寬度,不管CSS box-sizing屬性值。若CSS box-sizing為border-box,將造成這個(gè)函數(shù)改變這個(gè)容器的outerHeight,而不僅是原來的內(nèi)容高度。
4.瀏覽器相關(guān)寬高
$(window).height():獲取瀏覽器可視窗口的高度;
$(document).height():獲取整個(gè)網(wǎng)頁文檔的高度;當(dāng)網(wǎng)頁高度不足瀏覽器窗口時(shí),返回的是$(window).height()。
$(document).scrollTop():document元素相對document元素對應(yīng)的滾動(dòng)條頂部的垂直偏移量,可獲取已滾動(dòng)的距離或設(shè)置將要滾動(dòng)的距離。
即:當(dāng)網(wǎng)頁滾動(dòng)條拉到最低端時(shí),$(document).height() == $(window).height() + $(window).scrollTop()。
注意:不建議使用$("html").height()、$("body").height()這樣的方法獲取高度,原因有:
$("body").height():body可能會(huì)有邊框,獲取的高度會(huì)比$(document).height()??;
$("html").height():在不同的瀏覽器上獲取的高度會(huì)有差異,瀏覽器不兼容。
$(window).height()若返回的不是瀏覽器窗口的高度,可能是網(wǎng)頁沒有加上<!DOCTYPE>聲明。
- js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法
- JS與jQuery實(shí)現(xiàn)子窗口獲取父窗口元素值的方法
- 使用jquery/js獲取iframe父子級、同級獲取元素的方法
- JavaScript和jquery獲取父級元素、子級元素、兄弟元素的方法
- js jquery獲取當(dāng)前元素的兄弟級 上一個(gè) 下一個(gè)元素
- Js與Jq 獲取頁面元素值的方法和差異對比
- js與jquery獲取父級元素,子級元素,兄弟元素的實(shí)現(xiàn)方法
- js與jquery獲取父元素,刪除子元素的兩種不同方法
- JS和JQUERY獲取頁面大小,滾動(dòng)條位置,元素位置(示例代碼)
- 原生JS與JQ獲取元素的區(qū)別詳解
相關(guān)文章
juqery 學(xué)習(xí)之五 文檔處理 包裹、替換、刪除、復(fù)制
這個(gè)函數(shù)的原理是檢查提供的第一個(gè)元素(它是由所提供的HTML標(biāo)記代碼動(dòng)態(tài)生成的),并在它的代碼結(jié)構(gòu)中找到最上層的祖先元素--這個(gè)祖先元素就是包裹元素。2011-02-02Jquery 方塊隨著鼠標(biāo)所在的區(qū)域而放大
下面都是默認(rèn)一樣大小的方塊,當(dāng)鼠標(biāo)放到你想要放的位置,則當(dāng)前位置的方塊則放大。2010-05-0510分鐘學(xué)會(huì)寫Jquery插件實(shí)例教程
這篇文章主要介紹了10分鐘學(xué)會(huì)寫Jquery插件,通過一個(gè)實(shí)例分兩步完成一個(gè)簡單的插件,非常實(shí)用,需要的朋友可以參考下2014-09-09jQuery+html5+css3實(shí)現(xiàn)圓角無刷新表單帶輸入驗(yàn)證功能代碼
這篇文章主要介紹了jQuery+html5+css3實(shí)現(xiàn)圓角無刷新表單帶輸入驗(yàn)證功能代碼,加入了html5與css3技術(shù),使得整個(gè)表單效果更加唯美華麗,需要的朋友可以參考下2015-08-08