gogo专业大尺度亚洲高清人体,美女张开双腿让男生桶,亚洲av无码一区二区三区鸳鸯影院,久久久久国产精品人妻

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > DOM 元素尺寸與位置

DOM 元素尺寸與位置 時(shí)間:2018-09-26      來(lái)源:未知

一.獲取元素CSS大小

1.通過(guò)style獲取元素的大小

varbox = document.getElementById('box'); //獲取元素

box.style.width;

box.style.height;

PS:style獲取只能獲取到行內(nèi)style屬性的CSS樣式中的寬和高,如果有,獲取;如果沒(méi)有,則返回空。

2.通過(guò)計(jì)算獲取元素的大小

varstyle = window.getComputedStyle ?

window.getComputedStyle(box,null) : null || box.currentStyle;

style.width; //1424px、200px、auto

style.height; //18px、200px、auto

PS:通過(guò)計(jì)算獲取元素的大小,無(wú)關(guān)你是否是行內(nèi)、內(nèi)聯(lián)或者鏈接,它經(jīng)過(guò)計(jì)算后得到的結(jié)果返回出來(lái)。如果本身設(shè)置大小,它會(huì)返回元素的大小,如果本身沒(méi)有設(shè)置,非IE瀏覽器會(huì)返回默認(rèn)的大小,IE瀏覽器返回auto。

3.通過(guò)CSSStyleSheet對(duì)象中的cssRules(或rules)屬性獲取元素大小

var sheet =document.styleSheets[0]; //獲取link或style

var rule = (sheet.cssRules ||sheet.rules)[0]; //獲取第一條規(guī)則

rule.style.width;

rule.style.height;

PS:cssRules(或rules)只能獲取到內(nèi)聯(lián)和鏈接樣式的寬和高,不能獲取到行內(nèi)和計(jì)算后的樣式。

總結(jié):以上的三種CSS獲取元素大小的方法,只能獲取元素的CSS大小,卻無(wú)法獲取元素本身實(shí)際的大小。比如加上了內(nèi)邊距(padding)、外邊距(margin)、邊框(border)、滾動(dòng)條(scroll)之后的大小

二.獲取元素實(shí)際大小

測(cè)試代碼:

HTML部分:

<body>

<divid="box">

測(cè)Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div測(cè)試Div

</div>

</body>

CSS部分:

#box{

width:200px;

height:200px;

background:red;

overflow:scroll;

}

1.clientWidth和clientHeight

這組屬性可以獲取元素可視區(qū)的大小,可以得到元素內(nèi)容及內(nèi)邊距所占據(jù)的空間大小。

box.clientWidth; //200

box.clientHeight; //200

PS:返回了元素大小,但沒(méi)有單位,默認(rèn)單位是px,如果設(shè)置了其他的單位,比如100em之類,返回出來(lái)的結(jié)果還會(huì)轉(zhuǎn)換為px像素。(CSS獲取的話,是照著你設(shè)置的樣式獲取)。

PS:對(duì)于元素的實(shí)際大小,clientWidth和clientHeight理解方式如下:

1.增加邊框,無(wú)變化,為200;

2.增加外邊距,無(wú)變化,為200;

3.增加滾動(dòng)條,終值等于原本大小減去滾動(dòng)條的大小,為184;

4.增加內(nèi)邊距,終值等于原本大小加上內(nèi)邊距的大小,為220;

PS:如果說(shuō)沒(méi)有設(shè)置任何CSS的寬和高度,那么非IE瀏覽器會(huì)算上滾動(dòng)條和內(nèi)邊距的計(jì)算后的大小,而IE瀏覽器則返回0。

2.scrollWidth和scrollHeight

這組屬性可以獲取滾動(dòng)內(nèi)容的元素大小。

box.scrollWidth; //200

box.scrollWidth; //200

PS:返回了元素大小,默認(rèn)單位是px。如果沒(méi)有設(shè)置任何CSS的寬和高度,它會(huì)得到計(jì)算后的寬度和高度。

PS:對(duì)于元素的實(shí)際大小,scrollWidth和scrollHeight理解如下

1.增加邊框,不同瀏覽器有不同解釋:

a) Firefox和Opera瀏覽器會(huì)增加邊框的大小,220 x 220

b) Chrome和Safari瀏覽器會(huì)忽略邊框大小,200 x 200

c) IE瀏覽器忽略邊框并且只顯示它有效內(nèi)容的高度,200 x 18(單個(gè)“測(cè)試 Div”的高度為18)

2.增加內(nèi)邊距,終值會(huì)等于原本大小加上內(nèi)邊距大小,220 x 220,IE為220x 38

3.增加滾動(dòng)條,終值會(huì)等于原本大小減去滾動(dòng)條大小,184 x 184,IE為184x 18

4.增加外邊據(jù),無(wú)變化。

5.增加內(nèi)容溢出(若果沒(méi)有滾動(dòng)條,不同瀏覽器兼容不同,所以加上滾動(dòng)條overflow:scroll;),F(xiàn)irefox、Chrome和IE獲取實(shí)際內(nèi)容高度,Opera比前三個(gè)瀏覽器獲取的高度偏小,Safari比前三個(gè)瀏覽器獲取的高度偏大。

3.offsetWidth和offsetHeight(穩(wěn)定,使用頻率高!)

這組屬性可以返回元素實(shí)際大小,包含邊框、內(nèi)邊距和滾動(dòng)條。

box.offsetWidth; //200

box.offsetHeight; //200

PS:返回了元素大小,默認(rèn)單位是px。如果沒(méi)有設(shè)置任何CSS的寬和高度,他會(huì)得到計(jì)算后的寬度和高度。

PS:對(duì)于元素的實(shí)際大小,offsetWidth和offsetHeight理解如下:

1.增加邊框,終值會(huì)等于原本大小加上邊框大小,為220;

2.增加內(nèi)邊距,終值會(huì)等于原本大小加上內(nèi)邊距大小,為220;

3.增加外邊據(jù),無(wú)變化;

4.增加滾動(dòng)條,無(wú)變化,不會(huì)減小;

HTML部分:

<body>

<divid="box">

測(cè)試Div

</div>

</body>

CSS部分:

#box{

width:200px;

height:200px;

background:red;

}

PS:對(duì)于元素大小的獲取,一般是塊級(jí)(block)元素并且以設(shè)置了CSS大小的元素較為方便。如果是內(nèi)聯(lián)元素(inline)或者是沒(méi)有設(shè)置大小的元素就尤為麻煩,所以,建議使用的時(shí)候注意。

三.獲取元素周邊大小

1.clientLeft和clientTop

這組屬性可以獲取元素設(shè)置了左邊框和上邊框的大小。

box.clientLeft; //獲取左邊框的長(zhǎng)度

box.clientTop; //獲取上邊框的長(zhǎng)度

PS:目前只提供了Left和Top這組,并沒(méi)有提供Right和Bottom。如果四條邊寬度不同的話,可以直接通過(guò)計(jì)算后的樣式獲取,或者采用以上三組獲取元素大小的減法求得。

2.offsetLeft和offsetTop

這組屬性可以獲取當(dāng)前元素相對(duì)于父元素的位置。

box.offsetLeft;

box.offsetTop;

PS:獲取元素當(dāng)前相對(duì)于父元素的位置,好將此元素設(shè)置為絕對(duì)定位position:absolute;否則不同的瀏覽器會(huì)有不同的解釋。

PS:加上邊框和內(nèi)邊距不會(huì)影響它的位置,但加上外邊距會(huì)累加。

box.offsetParent; //得到父元素

PS:offsetParent中,如果本身父元素是,非IE返回body對(duì)象,IE返回html對(duì)象。如果兩個(gè)元素嵌套,如果父元素沒(méi)有使用定位position:absolute,那么offsetParent將返回body對(duì)象或html對(duì)象。所以,在獲取offsetLeft和offsetTop時(shí)候,CSS定位很重要。

如果說(shuō),在很多層次里,外層已經(jīng)定位,我們?cè)趺传@取里層的元素距離body或html元素之間的距離呢?也就是獲取任意一個(gè)元素距離頁(yè)面上的位置。那么我們可以編寫函數(shù),通過(guò)不停的向上回溯獲取累加來(lái)實(shí)現(xiàn)。代碼如下:

//只有兩層的情況下:

box.offsetTop+ box.offsetParent.offsetTop;

//如果多層的話,就必須使用循環(huán)或遞歸:

function offsetLeft(element) {

var left = element.offsetLeft; //得到第一層距離

var parent = element.offsetParent; //得到第一個(gè)父元素

while (parent !== null) { //如果還有上一層父元素

left += parent.offsetLeft; //把本層的距離累加

parent = parent.offsetParent; //得到本層的父元素

} //然后繼續(xù)循環(huán)

return left;

}

3.scrollTop和scrollLeft

這組屬性可以獲取滾動(dòng)條被隱藏的區(qū)域大小,也可設(shè)置定位到該區(qū)域。

box.scrollTop; //獲取滾動(dòng)內(nèi)容上方的位置(就是隱藏的內(nèi)容的高度)

box.scrollLeft; //獲取滾動(dòng)內(nèi)容左方的位置

如果要讓滾動(dòng)條滾動(dòng)到初始的位置,那么可以寫一個(gè)函數(shù):

functionscrollStart(element) {

if (element.scrollTop != 0) element.scrollTop = 0; //賦值為0;

}

上一篇:理解js中this的指向問(wèn)題

下一篇:Android動(dòng)畫(huà)

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部