最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript獲取文檔坐標(biāo)和視口坐標(biāo)

 更新時(shí)間:2015年05月26日 10:21:19   投稿:hebedich  
制作網(wǎng)頁的過程中,你有時(shí)候需要知道某個(gè)元素在網(wǎng)頁上的確切位置。下面的教程總結(jié)了Javascript在網(wǎng)頁定位方面的相關(guān)知識(shí)。有需要的小伙伴可以參考下。

元素的位置是以像素度量的,向右代表X坐標(biāo)的增加,向下代表Y坐標(biāo)的增加,但是,有兩個(gè)不同的點(diǎn)作為坐標(biāo)系的原點(diǎn):元素的X和Y坐標(biāo)可以相對(duì)于文檔的左上角或者相對(duì)于在職中顯示文檔的視口的左上角。

在定級(jí)窗口和標(biāo)簽頁中,”視口“只是實(shí)際顯示文檔內(nèi)容的瀏覽器的一部分:它不包括瀏覽器的“外殼”(如菜單、工具條和標(biāo)簽頁)。

針對(duì)框架也中顯示的文檔,是口試定了框架頁的<iframe>元素。無論在何種情況下,當(dāng)討論元素的位置是,必須弄清楚所使用的坐標(biāo)是文檔坐標(biāo)還是視口坐標(biāo)。(注意,視口坐標(biāo)有事也叫作窗口坐標(biāo))

如果文檔比視口要小,或者說還未出現(xiàn)滾動(dòng),則文檔的左上角就是視口的左上角,文檔和視口坐標(biāo)系統(tǒng)是同一個(gè)。但是一般來說,要在兩種坐標(biāo)系之間互相轉(zhuǎn)換,必須加上或減去滾動(dòng)的偏移量(scroll offset)。例如,在文檔坐標(biāo)中如果一個(gè)元素的Y坐標(biāo)是200像素,并且用戶已經(jīng)把瀏覽器向下滾動(dòng)了75像素,那么視口坐標(biāo)中元素的Y坐標(biāo)就是125像素。同樣,在視口坐標(biāo)中如果一個(gè)元素的X坐標(biāo)是400像素,并且用戶已經(jīng)水平滾動(dòng)了視口200像素,那么文檔坐標(biāo)中像素的X坐標(biāo)中元素的X坐標(biāo)就是600像素。

文檔坐標(biāo)比視口坐標(biāo)更加基礎(chǔ),并且在用戶滾動(dòng)是他們不會(huì)發(fā)生變化。不過,在客戶端編程中使用視口坐標(biāo)是非常常見的。當(dāng)使用CSS指定元素的位置時(shí)運(yùn)用了文檔坐標(biāo)。但是最簡單的查詢元素位置的方法:getBoundingClientRect()返回視口坐標(biāo)中的位置。類似的,當(dāng)為鼠標(biāo)事件注冊事件處理程序函數(shù)時(shí),報(bào)告的鼠標(biāo)指針的坐標(biāo)是在視口坐標(biāo)系中。

為了在坐標(biāo)系中轉(zhuǎn)換,我們需要判定瀏覽器窗口的滾動(dòng)條的位置。Window對(duì)象的pageXoffset和pageYOffset屬性在所有的瀏覽器中提供這些值,除了IE8及更早的版本以外。IE(和所有現(xiàn)代瀏覽器)也可以通過scrollLeft和scrollTop屬性來獲得滾動(dòng)條的位置。令人迷惑的是,正常的情況下通過查找文檔的根節(jié)點(diǎn)(document.documentElement)來獲取這些屬性,但是在怪異模式下,必須在文檔的<body>元素(documeng.body)上查詢它們。以下顯示了如何簡便的查詢滾動(dòng)條的位置。

functon getScrollOffsets(w){
  w = w || window;
  var sLeft,sTop;
  if(w.pageXOffset != null) {
    sLeft = w.pageXOffset;
    sTop = w.pageYOffset;
    return {x:sLeft,y:sTop};
  }
  if(document.compatMode == "CSS1Compat"){
    sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft; 
    sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;  
    return {x:sLeft,y:sTop};
  }else if(document.compatMode == "BackCompat"){
    sLeft = document.body.scrollLeft; 
    sTop = document.body.scrollTop;
    return {x:sLeft,y:sTop};  
  }
}

有時(shí)候能夠判定視口的尺寸也是非常有用的,例如,為了確定文檔的案部分是當(dāng)前可見的。利用滾動(dòng)偏移量查詢視口的尺寸的簡單方法在IE8及更早版本中無法工作,而且該技術(shù)在IE中的運(yùn)行法師還要取決于瀏覽器是否處于怪異模式還是標(biāo)準(zhǔn)模式。

window下的屬性:

innerHeight:包括滾動(dòng)條在內(nèi)的窗口內(nèi)容部分的高度

innerWidth:包括滾動(dòng)條在內(nèi)的窗口內(nèi)容部分的寬度

outerHeight:整個(gè)瀏覽器的高度,包括界面所有組成部分。

outerWidth:整個(gè)瀏覽器的寬度,包括界面所有組成部分。

pageXOffset:瀏覽器窗口的滾動(dòng)條X軸的位置

pageYOffset:瀏覽器窗口的滾動(dòng)條Y軸的位置

scrollX:瀏覽器窗口的滾動(dòng)條X軸的位置

scrollY:瀏覽器窗口的滾動(dòng)條Y軸的位置

屬性

document.documentElement document.body
clientHeight 視口內(nèi)可見內(nèi)容的大小,不包括滾動(dòng)的部分和滾動(dòng)條。
clientWidth
clientLeft     
clientTop   
offsetHeight 內(nèi)容大小,并且包括滾動(dòng)條。
offsetWidth
offsetLeft   
offsetTop   
scrollHeight 滾動(dòng)內(nèi)容的大小,包括滾動(dòng)的部分,但不包括滾動(dòng)條。
scrollWidth
scrollTop   
scrollWidth   

查詢窗口的視口尺寸:

function getViewportSize(w){
  w = w || window;
  var cWidth,cHeight;
  if(w.innerWidth != null){
    cWidth = w.innerWidht;
    cHeight = w.innerHeight;
    return {w:cWidth,h:w.cHeight};
  }
  if(document.compatMode == "CSS1Compat"){
    cWidth = document.documentElement.clientWidth;
    cHeight = doument.documentElement.clientHeight;
    return {w:cWidth,h:w.cHeight};
  }else if(document.compatMode == "BackCompat"){
    cWidth = document.body.clientWidth;
    cHeight = doument.body.clientHeight;
    return {w:cWidth,h:w.cHeight};
  }
}

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • JavaScript開發(fā)者必備的10個(gè)Sublime Text插件

    JavaScript開發(fā)者必備的10個(gè)Sublime Text插件

    Sublime Text幾乎是任何開發(fā)者在其工具箱的必備應(yīng)用程序,這篇文章主要介紹了JavaScript開發(fā)者必備的10個(gè)Sublime Text插件,感興趣的小伙伴們可以參考一下
    2016-02-02
  • js實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行變色的方法

    js實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行變色的方法

    這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行變色的方法,涉及javascript表格節(jié)點(diǎn)樣式及鼠標(biāo)事件的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • 原生JS實(shí)現(xiàn)音樂播放器

    原生JS實(shí)現(xiàn)音樂播放器

    這篇文章主要為大家詳細(xì)介紹了原生JS音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • BootStrap modal模態(tài)彈窗使用小結(jié)

    BootStrap modal模態(tài)彈窗使用小結(jié)

    這篇文章主要為大家詳細(xì)介紹了BootStrap modal模態(tài)彈窗使用小結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JavaScript狀態(tài)模式及適配器模式使用講解

    JavaScript狀態(tài)模式及適配器模式使用講解

    這篇文章主要介紹了理解JavaScript中的狀態(tài)模式及適配器模式,適配器模式即Adapter Pattern,是作為兩個(gè)不兼容的接口之間的橋梁。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-12-12
  • JavaScript中forEach和map的使用場景

    JavaScript中forEach和map的使用場景

    本文JavaScript中forEach和map的使用場景,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • LayerClose彈窗關(guān)閉刷新方法

    LayerClose彈窗關(guān)閉刷新方法

    今天小編就為大家分享一篇LayerClose彈窗關(guān)閉刷新方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • js觀察者模式的彈幕案例

    js觀察者模式的彈幕案例

    這篇文章主要為大家詳細(xì)介紹了js觀察者模式的彈幕案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • JavaScript判斷兩個(gè)數(shù)組相等的4類方法總結(jié)

    JavaScript判斷兩個(gè)數(shù)組相等的4類方法總結(jié)

    如果我們需要比較兩個(gè)數(shù)組是否相等,不能像比較基本類型(String、Number、Boolean等)一樣,使用 === (或 ==) 來判斷,所以如果要比較數(shù)組是否相等,需要使用一些特殊方法。本文為大家整理了四種常見用法,需要的可以參考一下
    2023-02-02
  • javascript 面向?qū)ο罄^承

    javascript 面向?qū)ο罄^承

    javascript 面向?qū)ο罄^承,需要的朋友可以參考下。
    2009-11-11

最新評(píng)論

安义县| 乌兰察布市| 长海县| 鄂温| 太白县| 大荔县| 虹口区| 新野县| 保山市| 凌海市| 全南县| 天全县| 雷波县| 南木林县| 长丰县| 巧家县| 玉树县| 桐城市| 绵阳市| 石渠县| 宕昌县| 永德县| 喀喇沁旗| 德化县| 新安县| 濉溪县| 明水县| 望都县| 湟源县| 柯坪县| 蒙自县| 崇阳县| 永清县| 乌兰县| 青川县| 寿光市| 卢湾区| 绥江县| 桐庐县| 合水县| 涟水县|