1. 程式人生 > >Js 中一系列寬度和高度的學習

Js 中一系列寬度和高度的學習

頁面 chrome html5 影響 float 20px 我們 一個 完全

  在學習元素一系列寬度和高度之前,我們先來看一個平時開發中幾乎不會遇到的問題,那就是html文檔聲明<!DOCTYPE html> 確實會對元素的寬高產生影響。幾乎不會遇到,是因為我們在寫html 文件時,編輯器會自動幫助我們生成html文件的模版。在vs code中, 按 !,再加enter或tab 鍵,就生成了,非常簡單方便。而它最開始的一行就是<!DOCTYPE html>

技術分享圖片

  而我在這裏卻遇到了沒有寫文檔聲明的html 文件,是因為我在學習h5 的history api 實現路由時,突然想到要學習width 和height 知識的,也不是完全突然,因為這兩個知識點是在同步學習的。在學習時history api 時,我新建了一個空html文件,直接把別的人代碼復制過來了,而代碼中確實沒有文檔聲明, 這是以後在查找問題是發現的。

技術分享圖片

  這個html 文件很簡單,路由嗎,就是4個點擊按鈕,一個渲染區域。

<head>
  <style type="text/css">
    .Panel {
      width: 200px;
      height: 100px;
      background: red;
      display: none;
      color: white;
      padding: 20px 20px;
    }

    .ChangeButton {
      margin: 10px 10px;
      float: left;
    }
  </
style> </head> <body> <input type="button" id="Button1" class="ChangeButton" value="panel 1" /> <input type="button" id="Button2" class="ChangeButton" value="panel 2" /> <input type="button" id="Button3" class="ChangeButton" value="panel 3" /> <input type="button"
id="Button4" class="ChangeButton" value="panel 4" /> <div id="PanelContainer" style="clear:both;"> <div class="Panel" id="Panel1">panel 1</div> <div class="Panel" id="Panel2">panel 2</div> <div class="Panel" id="Panel3">panel 3</div> <div class="Panel" id="Panel4">panel 4</div> </div> </body>

  整個頁面如下:

技術分享圖片

  現在我就打開了瀏覽器控制臺,把知道的知識先寫一下。首先我想到的是可視區的寬高, 這裏只寫高度clientHeight. 為了測兼容性,我還打開了兩個瀏覽器,chrome和edge, 把它們調得一模一樣,高度對齊,控制臺對齊技術分享圖片  

  可能是控制臺太高,頁面出現了滾動條,也是這個無心的動作,讓我對寬度和高度有了一個全新的認識。現在在瀏覽器控制臺中寫代碼,技術分享圖片

  兩個瀏覽器表現不一致,一下子懵了,因為我記得這個是沒有兼容性問題啊,並且還發現顯示的數據也不對。在控制臺上打開element 面板,找到body, 右側顯示是181高度。技術分享圖片

  一時也不知道怎麽處理了,慣性的方法, 只能不停刷新頁面,調節控制臺的高度,重新寫代碼,突然有一次,在edge瀏覽器的控制臺報了一個warning, 請考慮添加有效的 HTML5 doctype:“<!DOCTYPE html>”。

技術分享圖片

  我這時發現,我的html文檔中是沒有DOCTYPE。 其實這個warning 一直存在,只是我沒有關註它,我直接把它清空了。這也是不好的習慣, 至於為什麽沒有,我上面已經說了,現在把它加上,

技術分享圖片

  刷新瀏覽器,在控制臺上重新書寫代碼,這次發現一致了。

技術分享圖片

  真的是什麽問題都能碰到,一直以為<!DOCTYE html> 沒有什麽作用, 現在終於知道了它還是有用的。

Js 中一系列寬度和高度的學習