久草中文在线观看_久久精品中文字幕一区_亚洲日本欧美日韩中文字幕_熟妇人妻无乱码中文字幕真矢织江

或者

深入剖析DOM樹之clientl家族

作者:聚擎 瀏覽:91 發布時間:2017-06-27
分享 評論 0

 最近研究DOM,這是js操作的基礎,不深入了解,你沒法跟瀏覽器親密對話。廢話不多說,今天對client,offset,scroll及style寬高家族左翼深入探討,以chrome為例,其他瀏覽器可能有解析上的差別。

具體來說即:

1.clientWidth,clientHeight,clientLeft,clientTop;

2.offsetWidth,offsetHeight,offsetLeft,offsetTop;

3.scrollWidth,scrollHeight,scrollLeft,scrollTop;

4.height,width。

clientWidth

顧名思義,client,客戶端。具體到某一個元素比如html,body或者a,p,img指的就是這個元素,而非常規理解的客戶端諸如瀏覽器。

html標簽:

當html各種屬性為默認值時,內部是空的head及body元素,其clientWidth值即為視口寬度,比如我的電腦屏寬1366px,當縮放瀏覽器的時候,該值變成縮放后的寬度,而當豎直滾動條出現的時候,需減去滾動條的寬度(豎直滾動條在高度大于可視屏幕高度時出現,可能是html或其子元素撐開的)。而移動端瀏覽器是不支持縮放的,因此在默認情況下,這個值就是內置的視口寬度,所謂視口寬度不是硬件屏寬,而是虛擬寬度,比如iphone6為980px,實際屏寬沒這么大。

由于影響寬度的屬性有width,margin,padding,border,outline。我們逐一來看,當設置html有width,margin,padding,border,outline任意一個或累加的時候,clientWidth不受影響。也即html的clientWidth只與客戶端內置視口寬及用戶縮放行為有關。

如果內部元素body非默認值,而是設定width,margin,padding,border,outline任意一個或累加的時候,我們看看html的clientWidth的表現,經測試,無論設置多少不會對html的clientWidth造成影響,驗證了該值只與客戶端內置視口寬及用戶縮放行為有關的結論。

如果出現右側滾動條,一般是當元素高大于瀏覽器可見部分高時出現,該值需要減去滾動條的寬度,即16px。

以上測試使用的chrome瀏覽器,其他瀏覽器可能會有區別。總的一句話,html標簽該值只與客戶端內置視口寬及用戶縮放行為有關。

body標簽:

當body標簽各種屬性為默認值時,內部為空,父元素html為默認屬性。其clientWidth值跟html一樣,即受客戶端內置視口寬及縮放行為影響,如果出現滾動條,則需減去滾動條的寬度16px,而且body默認左右各8px的margin。

tips:body最大clientWidth為33554430px。

而若在其父元素,子元素各項屬性值保持默認的情況下,body設置以上width等5項值,會出現什么情況呢?當設置了寬,該值變為寬,當設置了padding,該值變為寬+padding,也即設置本身本身就具有了優先級,而設置另外三項則不受影響。這個寬度是不受限制的,小可到0,大可到無窮,當然這個無法驗證,數值太大,瀏覽器會崩潰。

而若本身保持默認值,父元素html進行5項值測試,設置寬,結果變成該寬值減去滾動條寬度16px,即便沒出現滾動條也是如此。而設置其他值不受影響。也即body的clientWidth是受父元素html的寬影響的,其他值不對該值造成影響。

若本身及父元素保持默認值,子元素變動5項值的時候,該值不受影響。

經以上驗證,body的該值只受本身的寬+padding及父元素html寬的影響,本身值更具優先級,也即一旦設置本身寬+padding,父元素的寬失效。

p標簽(block元素):

當父元素,子元素及本身都為默認值時,該值需要減去父元素body默認的margin左右各8px,當出現滾動條還需減去滾動條的寬度。實際等同于父元素的寬,如果自身有border還需減去。

當父子元素默認,本身設置以上5值,除本身寬+padding外,其他值不影響,也即clientWidth值等于本身寬加上本身左右padding。該結論跟body一樣。

當本身及子元素默認,父元素設置5項,該值表現跟body一樣,即該值成為父元素寬度,其他四項不造成影響。

當本身及父元素為默認,子元素設置5項,該值恢復到各項都為默認值的時候,即屏寬減去左右padding各8px。

由此可見,block元素的clientWidth也只受本身寬+padding及父元素寬的影響,如果包括父元素往上追蹤皆未設置寬度,則會一直追到根元素html的默認值,在PC是客戶端可見寬,在移動端是內置視口寬。而若設置了本身寬,padding,或寬+padding,則該值即是這些值,棄用父元素及往上繼承的寬度。

video(inline-block元素):

當父子及本身為默認時,該值為0。

當父子為默認,本身設置5值,該值為本身寬+padding。

當本身及子為默認值,父設置5值,該值為0,也即不受父元素寬度影響,這是跟block元素相區別的地方。

當本身及父元素為默認值,子元素設置5值,此類情況對于自閉合標簽不適用。該值恢復默認值,也即該元素內置的寬+padding。

因此對于inline-block元素來說,其clientWidth只受本身寬+padding的影響,不受其他影響。

a(inline元素):

當父子及本身為默認時,該值為0。

當父子為默認,本身設置5值,該值為0。

當本身及子為默認,父為5值,該值為0。

當本身及父為默認,子為5值,該值為0。

一句話,對于inline元素來說,clientWidth這個值始終為0,即便內有文本元素也為0。

總而言之,根元素html只受默認視口及用戶行為影響;block元素,包括body及其他塊clientWidth受自身寬+padding及父元素寬的影響,且以自身為優先;inline-block只受自身寬+padding影響;inline不受任何影響,始終為0。再總結下,clientWidth實際就是自身所有的寬+padding。內聯元素皆無,內聯塊和塊級元素二者之和。

ok,按著這樣一梳理,這個屬性背后隱藏的東西就一目了然了,后面繼續家族中其他元素的驗證及解讀。前幾天看了網絡上的幾篇文章,有出入,因此決定自己一探究竟。

久草中文在线观看_久久精品中文字幕一区_亚洲日本欧美日韩中文字幕_熟妇人妻无乱码中文字幕真矢织江
<code id="6mcsu"></code>
<li id="6mcsu"></li>
<li id="6mcsu"><dl id="6mcsu"></dl></li>
  • <code id="6mcsu"><tr id="6mcsu"></tr></code>
    91在线小视频| 欧美日精品一区视频| 国内精品视频666| 91麻豆swag| 一区二区高清在线| 欧美午夜一区二区三区免费大片| 午夜私人影院久久久久| 精品乱码亚洲一区二区不卡| 国产成人免费av在线| 亚洲色欲色欲www在线观看| 欧美天堂一区二区三区| 另类小说色综合网站| 亚洲国产精品ⅴa在线观看| 在线亚洲欧美专区二区| 免费欧美在线视频| 国产欧美一区二区三区鸳鸯浴 | 91美女视频网站| 午夜视频一区二区三区| 久久先锋资源网| 91在线国内视频| 免费在线一区观看| 国产精品蜜臀av| 欧美日韩高清一区二区不卡| 国产乱子伦视频一区二区三区| 亚洲美女偷拍久久| 日韩视频一区在线观看| 成人毛片视频在线观看| 亚洲成av人综合在线观看| 26uuu久久天堂性欧美| 91国产福利在线| 精油按摩中文字幕久久| 亚洲精品免费在线| 日韩精品影音先锋| 一本久久综合亚洲鲁鲁五月天 | 99精品视频一区二区三区| 日本伊人色综合网| 国产精品日韩成人| 欧美福利一区二区| youjizz久久| 久久国产视频网| 亚洲黄色小说网站| 欧美精品一区二区三区蜜桃视频| 91色porny蝌蚪| 久久99久久99| 亚洲第一会所有码转帖| 欧美韩日一区二区三区四区| 宅男噜噜噜66一区二区66| 99精品国产一区二区三区不卡| 男女性色大片免费观看一区二区| 亚洲人午夜精品天堂一二香蕉| 精品国产亚洲在线| 欧美性大战久久久| av一区二区不卡| 国产一区免费电影| 日韩精品成人一区二区在线| 最新国产精品久久精品| 26uuu久久综合| 91精品欧美福利在线观看| 99视频有精品| 国产精品1区2区| 免费看日韩精品| 一区二区三区国产精品| 国产精品久久久久一区二区三区| 欧美一级二级在线观看| 欧美午夜影院一区| 99v久久综合狠狠综合久久| 国产精品一区二区无线| 美腿丝袜在线亚洲一区 | 国产成人综合在线| 久久国内精品自在自线400部| 午夜亚洲福利老司机| 亚洲黄色性网站| 亚洲婷婷综合久久一本伊一区 | 欧美激情一区三区| 精品国产sm最大网站免费看| 88在线观看91蜜桃国自产| 色综合久久中文综合久久97| 懂色av一区二区三区免费看| 麻豆视频观看网址久久| 首页欧美精品中文字幕| 亚洲自拍与偷拍| 亚洲免费在线视频一区 二区| 国产精品天干天干在观线| 久久久精品蜜桃| 欧美精品一区男女天堂| 精品国产一区二区三区不卡| 欧美一区二区日韩| 在线播放视频一区| 欧美老人xxxx18| 欧美日韩精品三区| 欧美日韩一区二区三区在线看| 一本色道亚洲精品aⅴ| 99精品热视频| 9人人澡人人爽人人精品| 成人av在线电影| 不卡的av电影| 91原创在线视频| 色综合久久久久综合体| 色综合天天综合网天天狠天天| bt7086福利一区国产| 成人国产视频在线观看| 北条麻妃国产九九精品视频| www.成人在线| 91色.com| 欧美性大战xxxxx久久久| 欧美日韩中字一区| 在线不卡一区二区| 日韩欧美精品在线视频| 日韩欧美专区在线| www精品美女久久久tv| 久久综合av免费| 国产亚洲综合在线| 国产精品免费视频一区| 18成人在线观看| 亚洲精品免费在线| 无码av免费一区二区三区试看| 视频一区在线播放| 麻豆精品视频在线观看视频| 国内精品免费**视频| 国产999精品久久久久久绿帽| 成人av资源站| 在线免费观看一区| 在线成人高清不卡| 精品国产制服丝袜高跟| 国产精品人妖ts系列视频| 亚洲欧美激情插| 午夜av电影一区| 精品一区二区三区在线播放 | 欧美日韩精品一二三区| 日韩视频在线一区二区| 国产亚洲一区二区三区在线观看| 中文字幕中文乱码欧美一区二区 | 国产在线精品一区二区不卡了 | 婷婷开心久久网| 久久精品免费观看| 成人精品国产一区二区4080| 在线亚洲+欧美+日本专区| 日韩一区国产二区欧美三区| 国产亚洲欧美激情| 亚洲伦理在线精品| 日韩avvvv在线播放| 国产91露脸合集magnet | 91精品国产综合久久久久久| 欧美成人在线直播| 欧美韩国日本不卡| 一区二区高清在线| 精品一二线国产| 91在线观看美女| 91精品国产色综合久久不卡电影| 久久免费视频色| 亚洲在线成人精品| 久久爱www久久做| 97精品超碰一区二区三区| 制服丝袜亚洲网站| 中文字幕不卡在线| 性欧美疯狂xxxxbbbb| 国产精品一二三四五| 欧美视频日韩视频在线观看| 久久久综合精品| 亚洲午夜精品网| 国产成人免费在线| 欧美日韩1区2区| 国产欧美日韩麻豆91| 午夜视频在线观看一区二区| 盗摄精品av一区二区三区| 欧美日韩一二三| 中文一区二区在线观看| 五月婷婷欧美视频| 国产成人精品综合在线观看 | 亚洲图片有声小说| 国产精品一线二线三线精华| 欧美无人高清视频在线观看| 欧美激情综合网| 日本vs亚洲vs韩国一区三区二区| 不卡视频一二三| 精品成人一区二区三区四区| 亚洲一区二区三区在线播放| 丁香啪啪综合成人亚洲小说 | 欧美丝袜自拍制服另类| 国产欧美精品一区| 日韩高清一区在线| 91麻豆国产在线观看| www精品美女久久久tv| 香蕉影视欧美成人| www.久久精品| 久久久精品黄色| 蜜臀精品久久久久久蜜臀| 91成人免费在线| 国产精品三级久久久久三级| 久久国产精品第一页| 欧美日韩你懂得| 亚洲视频 欧洲视频| 国产精品99久久久久久有的能看 | 六月婷婷色综合| 欧美日本免费一区二区三区| 中文字幕一区免费在线观看| 国产精品一区久久久久| 日韩一级视频免费观看在线| 亚洲高清视频的网址| 色哟哟欧美精品|