日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

窗口和元素的大小:offset client scroll

發(fā)布時間:2024/4/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 窗口和元素的大小:offset client scroll 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、偏移量(offset)只讀

offsetHeight:元素垂直方向上占用的空間大小。包括元素內(nèi)容區(qū)高度、元素上下內(nèi)邊距、(可見的)水平滾動條高度、上下邊框高度

offsetWidth:元素水平方向上占用的空間大小。包括元素內(nèi)容區(qū)寬度、元素左右內(nèi)邊距、(可見的)垂直滾動條寬度、左右邊框?qū)挾?/span>

offsetLeft:元素左外邊框到包含元素左內(nèi)邊框之間的距離

offsetTop:元素上外邊框到包含元素上內(nèi)邊框之間的距離

獲取某個元素在頁面上的偏移量

function getElementLeft(element){var actualLeft=element.offsetLeft;var current=element.offsetParent;while(current!=null){actualLeft+=current.offsetLeft;current=current.offsetParent;}return actualLeft; } function getElementLeft(element){var actualTop=element.offsetTop;var current=element.offsetParent;while(current!=null){actualTop+=current.offsetTop;current=current.offsetParent;}return actualTop; } View Code

?2、客戶區(qū)大小(client)只讀

都不包括邊框

clientHeight:元素內(nèi)容區(qū)高度(height)+元素上下內(nèi)邊距高度(paddingTop+paddingBottom)-可見的水平滾動條高度

clientWidth:元素內(nèi)容區(qū)寬度(width)+元素左右內(nèi)邊距寬度(paddingLeft+paddingRight)-可見的垂直滾動條寬度

FF下textarea元素的clientWidth和clientHeight不包括元素的內(nèi)邊距

獲取瀏覽器視口(viewport)大小

function getViewport(){if(document.compatMode=='CSS1Compat') {return{height:document.documentElement.clientHeight,width:document.documentElement.clientWidth};}else{return{height:document.body.clientHeight,width:document.body.clientWidth};} } View Code

3、滾動大小(scroll)

<div id='divP' style="height: 100px;width: 500px; padding:5px;margin: 10px; border: 1px solid #ccc;overflow: scroll"><div id='divS' style="height: 200px; width: 600px;padding:4px;margin:9px;border:2px solid"></div> </div>

divS可見區(qū)域高度=height+上下padding+上下border=212px

divS可見區(qū)域?qū)挾?#61;width+左右padding+左右border=612px

var divPScrollHeight=document.getElementById('divP').scrollHeight

var divPScrollWidth=document.getElementById('divP').scrollWidth

chrome/opera:    divPScrollHeight=divS可見區(qū)域高度+divS上下margin+divP上下padding//240px

FF/IE7+:       divPScrollHeight=divS可見區(qū)域高度+divS上下margin+diaP上padding//235px(不包括下內(nèi)邊距)

chrome/opera/FF/IE8+: divPScrollWidth=divS可見區(qū)域?qū)挾?#43;divSmarginLeft+divPpaddingLeft//626px(不包括右內(nèi)邊距和子元素的右外邊距)

IE7:          ?divPScrollWidth=divS可見區(qū)域?qū)挾?#43;divS左右margin+divP左右padding//640px

?

下面是閑來無事測試了一下其他元素撐開body的情況,并且意外發(fā)現(xiàn)div和textarea撐開body不同瀏覽器是有點區(qū)別的

div撐開body

<body>//默認margin=8px<div id='div' style="height: 1100px; width:1500px;padding:5px;margin: 10px;border: 1px solid #ccc;"></div> </body>

body默認maring=8px;如果div的margin大于body的margin,則margin為div的margin,否則為body的margin

div可見區(qū)域高度=height+paddingTop+paddingBottom+borderTop+borderBottom//1112px

div可見區(qū)域?qū)挾?#61;width+paddingLeft+paddingRight+borderLeft+borderRight//1512px

document.documentElement.scrollHeight=div可見區(qū)域高度+(div/body)marginTop+(div/body)marginBottom//1132px

document.documentElement.scrollWidth=div可見區(qū)域?qū)挾?#43;(div)marginLeft+(body)marginLeft//1530px

chrome/opera:  document.body.scrollHeight=document.documentElement.scrollHeight//1132px

chrome/opera:  document.body.scrollWidth=document.documentElement.scrollWidth//1530px

FF/IE:      document.body.scrollHeight=div可見區(qū)域高度//1112px

FF/IE:      document.body.scrollWidth=div可見區(qū)域?qū)挾?#43;(div)marginLeft//1522px

textarea撐開body

<body>//默認margin=8px<textarea id='textarea' style="height: 1100px; width:1500px;padding:5px;margin: 10px;border: 1px solid #ccc;"></textarea> </body>

textarea可見區(qū)域高度=height+paddingTop+paddingBottom+borderTop+borderBottom//1112px

textarea可見區(qū)域?qū)挾?#61;width+paddingLeft+paddingRight+borderLeft+borderRight//1512px

var dESHeight=document.documentElement.scrollHeight

chrome/opera:  dESHeight=textarea可見區(qū)域高度+(textarea)上下margin+(body)上下margin+3//1151px

FF:        dESHeight=textarea可見區(qū)域高度+(textarea)上下margin+(body)上下margin+1//1149px

?IE8+:      dESHeight=textarea可見區(qū)域高度+(textarea)上下margin+(body)上下margin//1148px

(IE7body默認上下margin=15px左右margin=10px)

IE7:       dESHeight=textarea可見區(qū)域高度+(textarea)上下margin+(body)上下margin+2//1164px

document.documentElement.scrollWidth

document.documentElement.scrollWidth=textarea可見區(qū)域?qū)挾?#43;(textarea)左右margin+(body)marginLeft//1540px(注:IE7為1142px因為ie7body默認左右margin=10px)

var bSHeight=document.body.scrollHeight

chorme/opera:  bSHeight=document.documentElement.scrollHeight//1151px

chrome/opera:  bSHeight=document.documentElment.scrollWidth//1540px

FF:        bSHeight=textarea可見區(qū)域高度+(textarea)上下margin+1//1133px

IE8+:       ?bSHeight=textarea可見區(qū)域高度+(textarea)上下margin//1132px

IE7:       ?bSHeight=textarea可見區(qū)域高度+(textarea)上下margin+2//1134px

var bSWidth=document.body.scrollWidth

chorme/opera:  bSWidth=docuemnt.documentElement.scrollWidth//1540px

FF:        bSWidth=textarea可見區(qū)域?qū)挾?#43;(textarea)marginLeft//1522px

IE7+:       ?bSWidth=textarea可見區(qū)域?qū)挾?#43;(textarea)左右margin//1532px

終上所述:在textarea撐開body的情況下,scrollHeight在chrome/opera有3px差,FF有1px差,IE7有2px差

并且由于瀏覽器body有默認的margin值,這樣會影響我們獲取的scrollWidth和scrollHeight,所以最好將body的margin設(shè)置為0

?

這個周末測試這些現(xiàn)在頭都大了,暈暈乎乎的,有什么錯誤麻煩指點一下。待后期清醒一點會再更新一下。

?

轉(zhuǎn)載請注明出處:http://www.cnblogs.com/miss-radish/p/3661371.html?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/miss-radish/p/3661371.html

總結(jié)

以上是生活随笔為你收集整理的窗口和元素的大小:offset client scroll的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。