麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

js 獲取元素在頁面上的偏移量的方法匯總

2019-11-20 12:42:51
字體:
供稿:網(wǎng)友

使用js制作效果時,我們常常要獲取某個元素在頁面上的偏移量(例如tip提示框功能)。而獲取偏移量可以直接獲取相對于document的偏移量,也可以獲取相對與視口的偏移量(viewpoint)加上頁面滾動量(scroll)獲得。

1.獲取相對與document的偏移量

function getOffsetSum(ele){  var top= 0,left=0;  while(ele){    top+=ele.offsetTop;    left+=ele.offsetLeft;    ele=ele.offsetParent;  }  return {    top:top,    left:left  }}

通過向上迭代offsetParent,可以計算出相對于document的偏移量,也就是相對與頁面的偏移量。

此方法的問題:

1)對于使用表格和內(nèi)嵌框架布局的頁面,由于不同瀏覽器實現(xiàn)元素方式的差異,得到的結(jié)果就不精確了。

2)每次都需要一級一級向上查找offsetParent,效率太低。

2.獲取相對與視口的偏移量(viewpoint)加上頁面的滾動量(scroll)

function getOffsetRect(ele){      var box=ele.getBoundingClientRect();      var body=document.body,        docElem=document.documentElement;      //獲取頁面的scrollTop,scrollLeft(兼容性寫法)      var scrollTop=window.pageYOffset||docElem.scrollTop||body.scrollTop,        scrollLeft=window.pageXOffset||docElem.scrollLeft||body.scrollLeft;      var clientTop=docElem.clientTop||body.clientTop,        clientLeft=docElem.clientLeft||body.clientLeft;      var top=box.top+scrollTop-clientTop,        left=box.left+scrollLeft-clientLeft;      return {        //Math.round 兼容火狐瀏覽器bug        top:Math.round(top),        left:Math.round(left)      }    }

此方法直接通過getBoundingClientRect()方法獲得相對于視口的偏移量,加上頁面的滾動量,減去clientTop,clientLeft (IE8及更低版本瀏覽器將(2,2)作為起點坐標(biāo),所以要將值減去起點坐標(biāo),其他瀏覽器都是已(0,0)作為起點坐標(biāo))。

getBoundingClientRect()方法支持IE,ff3+,safari4+,Orear9,5,Chrome.

3.兼容性寫法

//獲取元素相對于頁面的偏移function getOffset(ele){  if(ele.getBoundingClientRect){    return getOffsetRect(ele);  }else{    return getOffsetSum(ele);  }}

對于支持getBoundingClientRect()方法的瀏覽器使用getOffsetRect()方法,不支持的則使用getOffsetSum()方法。

以上所述就是本文的全部內(nèi)容了,希望能夠?qū)Υ蠹覍W(xué)習(xí)javascript有是幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91美女视频在线观看 | 中文字幕精品一二三四五六七八 | bt 自拍 另类 综合 欧美 | 深夜免费视频 | 久久国产精品二国产精品中国洋人 | 中文字幕一区久久 | 成人免费福利视频 | 中文成人在线 | 欧美性生活免费视频 | 97人操| 毛片在线免费视频 | 性毛片视频 | 国产羞羞视频在线观看 | 成人在线观看一区二区三区 | 久久久久久久亚洲精品 | 在线播放中文 | 成人免费网站在线观看 | 精品国产一区二区三区在线观看 | 精品国产乱码久久久久久久 | 久久国语对白 | 99精彩视频在线观看 | 中文字幕在线观看www | 成人国产精品免费 | 最近中文字幕一区二区 | 亚洲成人综合网站 | 欧美精品色精品一区二区三区 | 久久国产精品久久久久久 | 精品久久久久久久久久中文字幕 | 精品国产91久久久久久浪潮蜜月 | 在线观看麻豆 | 久久影库| 亚洲午夜电影 | 久久精品亚洲国产奇米99 | 国产乱色精品成人免费视频 | 性欧美大战久久久久久久免费观看 | 国产99久久精品一区二区 | 麻豆国产网站 | 国产精品亚洲激情 | 一级做a爱片毛片免费 | 欧美精品欧美 | 手机av免费电影 |