瞭解HTML標籤在各瀏覽器當中的默認樣式,可讓咱們瞭解,爲何會要寫Reset.css,Reset.css當中要怎麼寫樣式最合理。
試着思考下面的問題:css
這裏說的默認樣式實際上是每一個瀏覽器本身的默認樣式,咱們一般使用style或者link的形式應用的樣式內容被成爲「用戶樣式」。
瀏覽器加載完一個頁面以後的工做流程大概以下:
一、轉換
二、令牌化
三、詞法分析
四、DOM樹構建
五、CSSOM樹構建
六、DOM樹與CSSOM樹合併後造成渲染樹
七、經過佈局計算每一個對象顯示的位置和大小
八、繪製頁面html
按照上面的流程,瀏覽器會查看文檔當中是否有「用戶樣式」,若是沒有就使用瀏覽器的默認樣式,若是有就會用「用戶樣式」,就使用用戶樣式覆蓋「瀏覽器默認樣式」進行後面的渲染html5
咱們知道HTML標籤當中的head,title,meta,link,style,script元素默認是不展現的,就是由於瀏覽器的默認樣式當中定義了display:none屬性。css3
head,meta,title,link,style,script{ display:none; }
您能夠經過定義以下代碼在瀏覽器當中查看下效果git
head{ display:block; width:80px; height:80px; background:#f00; }
塊元素的特色:github
HTML標籤當中,那些被稱爲塊元素的標籤之因此有塊元素的屬性,是由於瀏覽器默認給它定義了display:block
而不是由於是塊元素纔會有display:block屬性。web
全部定義了display:block的元素,都是塊元素瀏覽器
html, body, p, div, layer, article,aside,footer,header,hgroup,main,nav,section, address, blockquote, figure, center, hr, ol,ul,menu,dir,dd,dl,form,legend,fieldset,frameset,frame,details,summary h1,h2,h3,h4,h5,h6{ display:block; }
行內元素的特色:ide
全部的元素默認都是行內元素,也就是display:inlinewordpress
q, map, area, output { display:inline; }
html標籤在瀏覽器當中是以那種佈局形式展現,都是由於display屬性的定義,display屬性包含如下值:
基本值: none | inline | block | list-item | inline-block table系列: table | inline-table | table-caption | table-cell | table-row | table-row-group | table-column | table-columen-group | table-footer-group | table-header-group css3新增: box | inline-box | flexbox | inline-flexbox | flex | inline-flex | run-in
基本值
li標籤默認定義的display:list-item,嘗試定義以下的代碼,在瀏覽器中查看:
html <div class="list"> <span class="item">1</span> <span class="item">2</span> <span class="item">3</span> </div> CSS .item{ display:list-item; }
table系列
看下面一段代碼
<table> <caption>年齡列表</caption> <thead> <tr> <th>姓名</th> <th>年齡</th> </tr> </thead> <tfoot> <tr> <td>年齡綜合</td> <td>27</td> </tr> </tfoot> <tbody> <tr> <td>張三</td> <td>12</td> </tr> <tr> <td>李四</td> <td>15</td> </tr> </tbody> </table>
當咱們使用thead定義表頭的時候,默認顯示的樣式就是由於thead標籤訂義了display:table-header-group;
一樣,tfoot就是由於定義了display:table-footer-group;
caption 就是由於定義了display:table-caption;
關於table系列,咱們簡單瞭解兩個問題:
block和table的區別
一、block寬度默認撐滿父元素
二、table寬度根據內容而定
table-cell的多列布局
<div class="main"> <div class="left"></div> <div class="middle"></div> <div class="right"></div> </div> .main{ width:500px; display:table; } .left,.middle,.right{ display:table-cell; height:100px; } .left{ width:20%; background:#ff0; } .middle{ background:green; } .right{ width:10%; background:red; }
CSS3系列,主要定義了彈性佈局相關的內容
彈性伸縮盒之後咱們有機會詳細聊聊,這裏說說幾個點
一、box和inline-box,flexbox和inline-flexbox,flex和inline-flex之間的差別
二、run-in是如何根據上下文做用的
第一個問題
在須要有固定寬度的狀況下的彈性佈局使用flex,
若是元素的寬度不固定,裏面的標籤還須要彈性佈局的話,就是用inline-flex
咱們經過如下代碼來了解
flex佈局;
inline-flex佈局
第二個問題
這裏有詳細的解釋
塊元素
行內元素
可變元素
文章七七八八,扯了不少東西,有點亂,讓看官們受累了
Chrom-blink
Chrom-webkit
Opera-10.51
Internet Explorer
HTML4
HTML5
瀏覽器渲染
解讀默認樣式