JS中得各種寬度


window與document的這些屬性的值會(huì)不太兼容,會(huì)在后面補(bǔ)充說妒茬。
一下效果展示忽略IE9之前瀏覽器束倍,主要考慮主流瀏覽器與手機(jī)端的效果。

  • 可以獲得寬度與高度的屬性
  • clientHeight 與clientWidth 指元素的客戶區(qū)大小乱顾,即 可見內(nèi)容區(qū)+padding
    #t1{
    width: 100px;
    height: 100px;
    border: 4px solid yellowgreen;
    background: yellow;
    padding: 10px;
    }
    div.clientWidth+';'+div.clientHeight;

    120=width(100)+padding(10)*2;
    不加邊框板祝,當(dāng)內(nèi)容溢出或者出現(xiàn)滾動(dòng)條時(shí)的寬度與高度都不會(huì)算在內(nèi)。
    是dom對(duì)象的可見寬度走净,這里的可見是針對(duì)設(shè)置overflow: scroll;后部分內(nèi)容隱藏而說的券时。
  • offsetHeight與offsetWidth 是元素的外在大小,即 border +padding+可見內(nèi)容區(qū)
    div.offsetWidth+';'+div.offsetHeight

    128 = width(100)+padding(10)2+border(4)2
    上圖內(nèi)容區(qū)溢出隱藏伏伯,是因?yàn)樵O(shè)置了overflow: scroll;才會(huì)有這樣的現(xiàn)象橘洞。
  • scrolWidth與scrollHeight是元素的實(shí)際大小,即 實(shí)際內(nèi)容區(qū)+padding
    div.scrollWidth+';'+div.scrollHeight

以上這三對(duì)屬性都是針對(duì)dom元素的说搅,可以測(cè)得元素的寬度炸枣,但是,細(xì)心的會(huì)發(fā)現(xiàn)弄唧,以上三種并沒有提供獲得width(100)的方法适肠,所以可以使用window.getComputedStyle(div,null).getPropertyValue('width');
這樣獲得就是100。


其實(shí)比較難理解的是像window候引、document.body侯养、document. documentElement這兩個(gè)dom對(duì)象在獲得他們的寬度時(shí)會(huì)有各種問題。
現(xiàn)在開始撕一下這其中的神奇澄干。沸毁。。

  • document.body與document. documentElement
    前者是body傻寂,后者是html息尺。但是現(xiàn)在大家都習(xí)慣將元素默認(rèn)的padding與margin設(shè)置為0,這樣無論是通過以上兩種誰去訪問clientWidth都是一樣的值(電腦端一致)疾掰。
    但是手機(jī)端訪問這兩個(gè)值的時(shí)候會(huì)隨著由于是客戶端搂誉,我們會(huì)對(duì)網(wǎng)頁的meta標(biāo)簽做一些設(shè)置,然后通過這兩個(gè)對(duì)象訪問的屬性的值就不一樣静檬。但是由于body是html的子標(biāo)簽炭懊,所以獲得可視窗口(clientWidth)的大小,建議使用后者document. documentElement.clientWidth拂檩。

document對(duì)象有個(gè)屬性compatMode ,它有兩個(gè)值:
BackCompat 對(duì)應(yīng)quirks mode
CSS1Compat 對(duì)應(yīng)strict mode
IE6以前的瀏覽器就是第一種渲染模式侮腹,導(dǎo)致IE6要是想獲得可視窗口(clientWidth)時(shí),必須使用document.body.clientWidth這個(gè)來訪問稻励。IE6我實(shí)習(xí)的公司已經(jīng)放棄啦父阻。

綜上:拋棄document.body的用法愈涩,使用document. documentElement。
  • window.innerWidth與document. documentElement.clientWidth用哪個(gè)加矛?
    接下來說的是不為網(wǎng)頁添加meta標(biāo)簽的效果履婉,添加標(biāo)簽的我覺得應(yīng)該另外寫一篇,因?yàn)闀?huì)涉及到自適應(yīng)的知識(shí)斟览。
    我做了再安卓機(jī)瀏覽器毁腿,iPhone的safari瀏覽器以及這兩種手機(jī)內(nèi)微信內(nèi)訪問網(wǎng)頁運(yùn)行的qq瀏覽器的測(cè)試。
    測(cè)試結(jié)果肯定是不統(tǒng)一的苛茂。
    測(cè)試前提:不為頁面設(shè)置固定的寬度已烤,不設(shè)置meta標(biāo)簽。
    測(cè)試結(jié)果:
屬性 安卓機(jī) iphone
window.innerWidth 980px 980px
..clientWidth 980px 980px
屬性 安卓機(jī)微信 iphone微信
window.innerWidth 320px 980px
..clientWidth 980px 980px

總是會(huì)有搗蛋鬼妓羊。胯究。。
綜上:如果想要獲得手機(jī)端頁面的可視寬度侍瑟,建議使用
document. documentElement.clientWidth

在下一篇唐片,筆記中,會(huì)對(duì)這個(gè)屬性在meta標(biāo)簽的不同設(shè)置下的值進(jìn)行分析涨颜。

BTW:我又回來费韭,好好學(xué)習(xí)啦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末庭瑰,一起剝皮案震驚了整個(gè)濱河市星持,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弹灭,老刑警劉巖督暂,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異穷吮,居然都是意外死亡逻翁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門捡鱼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來八回,“玉大人,你說我怎么就攤上這事驾诈〔纾” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵乍迄,是天一觀的道長(zhǎng)管引。 經(jīng)常有香客問我,道長(zhǎng)闯两,這世上最難降的妖魔是什么褥伴? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任谅将,我火速辦了婚禮,結(jié)果婚禮上噩翠,老公的妹妹穿的比我還像新娘戏自。我一直安慰自己邦投,他們只是感情好伤锚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著志衣,像睡著了一般屯援。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上念脯,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天狞洋,我揣著相機(jī)與錄音,去河邊找鬼绿店。 笑死吉懊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的假勿。 我是一名探鬼主播借嗽,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼转培!你這毒婦竟也來了恶导?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤浸须,失蹤者是張志新(化名)和其女友劉穎惨寿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體删窒,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裂垦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肌索。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕉拢。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖驶社,靈堂內(nèi)的尸體忽然破棺而出企量,到底是詐尸還是另有隱情,我是刑警寧澤亡电,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布届巩,位于F島的核電站,受9級(jí)特大地震影響份乒,放射性物質(zhì)發(fā)生泄漏恕汇。R本人自食惡果不足惜腕唧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘾英。 院中可真熱鬧枣接,春花似錦、人聲如沸缺谴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湿蛔。三九已至膀曾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阳啥,已是汗流浹背添谊。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留察迟,地道東北人斩狱。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扎瓶,于是被迫代替她去往敵國(guó)和親所踊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Window和document對(duì)象的區(qū)別 window對(duì)象window對(duì)象表示瀏覽器中打開的窗口window對(duì)象是...
    FConfidence閱讀 2,162評(píng)論 0 5
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案栗弟? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,734評(píng)論 1 92
  • 剛剛在研究技術(shù)污筷,突然查一個(gè)問題,不小心跳到簡(jiǎn)書乍赫,感覺這里面的文章排版很精致瓣蛀,很容易讓讀者抓住自己要找的點(diǎn),所以下了...
    Gerry的技術(shù)隨想閱讀 138評(píng)論 0 1
  • 時(shí)光老了雷厂,我們成長(zhǎng)了惋增。 隨著我這個(gè)十六歲的年輕人也過完了十七歲的生日,也就意味著我們四個(gè)都十七歲了改鲫,而下一個(gè)生日就...
    松果不噠噠閱讀 206評(píng)論 0 0
  • 就在剛剛诈皿,我刪除了朋友圈一條發(fā)布不到3分鐘的文章分享,而這篇文章像棘,來自簡(jiǎn)書稽亏。 很羨慕那些能夠?qū)戦L(zhǎng)文章的人。因?yàn)殚L(zhǎng)期...
    錫安閱讀 579評(píng)論 1 3