<html>
元素,不過有些調試器會使用<body>
做爲根元素,在大多數瀏覽器中,初始包含塊就是一個視窗大小的矩形。初始包含塊不等於視窗。position
值是relative
或static
,包含塊則由最近的塊級根構成。position
值是absolute
(絕對定位),包含塊設置爲最近的position
值不是static
的祖先元素。若是這個祖先是塊級元素,包含塊則設置爲該元素的內邊距邊界。若是沒有祖先,元素的包含塊定義爲初始包含塊。left,top,right,bottom,width,height
默認值是auto
。margin,padding,border-width
默認值是0
width,margin,padding
百分比參照於包含塊的width
的值,height
百分比參照於包含塊的height
,left
百分比參照於包含塊的width
,top
百分比參照於包含塊的height
margin
爲負值(margin
不影響元素的位置):將元素的邊界往裏收,爲正值:將元素的邊界往外擴。<body>
標籤設置最小寬度:left.width*2+right.width (right.width*2+left.width)
。<body>
元素,<html>
元素,視口三合一,高度必須一層一層的繼承下來。<body>
元素和<html>
元素中只有一個overflow
屬性,那麼這個overflow
屬性給文檔。若是二者都寫了,<html>
元素上的overflow
屬性會做用給文檔,<body>
元素的overflow
屬性會做用給本身。html,body{ height:100%;overflow:hidden;}
。Box
:CSS佈局的基本單位。Box
是CSS佈局的對象和基本單位,直觀來講,就是一個頁面是由不少個Box
組成的。元素的類型和display
屬性,決定了這個Box的類型,不一樣類型的Box。會參與不一樣的formatting Context
(一個決定如何渲染文檔的容器),所以Box內的元素會以不一樣的方式渲染。block-level box
:display
屬性爲block
,list-item
,table
的元素,會生成block-level box
。而且參與block fomatting context
;inline-level box
:display
屬性爲inline
,inline-block
,inline-table
的元素,會生成inline-level box
。而且參與inline formatting context
。hack
(條件註釋表達式)用來設置不一樣的瀏覽器版本下編寫代碼。*針對IE6和IE7,_只針對IE6。text-align只對內聯元素(行內元素)有效。css
white-space
控制文本換行或不換行。最大的場景就是溢出顯示省略號 div{ display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
vertical-align
屬性用來指定行內元素的垂直對齊方式,就是參照一行上垂直對齊時以行高值最大的行內框爲基準進行對齊的。<input>
,<img>
這種元素被稱爲替換元素,在頁面上寫的時候只寫了一個標籤,但是最終渲染到頁面中的時候用圖片或者文本框佔據高寬了,不用默認指定高寬。margin
爲負值:調整旁邊兩列的位置(使三列布局到一行上)。margin-bottom
爲負值,padding-bottom
設一個比較大的值。超出部分用overflow:hidden
。margin:0 auto
;使用浮動時會失效。margin
爲負值:調整旁邊兩列的位置(使三列布局到一行上)。<div>
標籤中再加一個<div>
標籤,將內部<div>
標籤的內邊距調整,使兩列位置調整到兩頭。<main>
,當<main>
的高度足夠長的時候,<footer>
應該緊跟在<main>
元素的後面。當<main>
元素比較短的時候(好比小於屏幕的高度),咱們指望這個<footer>
元素可以「粘連」在屏幕的底部。stickyfooter
的佈局套路:
<div>
標籤(父子關係),父標籤下面寫<footer>
。<body>
元素獲取視口高度(html,body{height:100%;})
,父標籤的最小高度(mid-height:100%)
設置和<body>
元素同樣的高度。此時footer
被撐到視口下方。footer
的margin-top
設置爲負的footer.height
,,footer
向上移,這樣footer
就在底部顯示了。可是當子元素中的內容區足夠大,撐開到超過視口的時候,內容區會與footer
重疊。padding-bottom:footer.height
。消除重疊。<body>
元素一個滾動條 。<body>
元素的尺寸變爲視口的尺寸。Formatting context
是W3C CSS2.1規範中的一個概念。它是頁面中的一塊渲染區域,而且有一套渲染規則,它決定了其子元素將如何定位,以及和其餘元素的關係和相互做用。最多見的Formatting context 有Block fomatting context(簡稱BFC) ,Inline formatting context(簡稱IFC).
BFC(Block formatting context)
直譯爲「塊級格式化上下文」。它是一個獨立的渲染區域,只有Block-level box
參與,它規定了內部的Block-level Box
如何佈局,而且與這個區域外部絕不相干。BFC
佈局規則:
Box
會在垂直方向,一個接一個地放置。BFC
的區域不會與float box
重疊。Box
垂直方向的距離由margin
決定。屬於同一個BFC
的兩個相鄰Box
的margin
會發生重疊。BFC
的高度時,浮動元素也參與計算。(清除浮動,haslayout
)BFC
就是頁面上的一個隔離的獨立容器,容器裏面的子元素不會影響到外面的元素。反之也如此。BFC
的元素:
float
屬性不爲none
position
爲absolute
或fixed
overflow
不爲visible
display
爲inline-block,table-cell,table-caption,flex,inline-flex
<div>
標籤,上面浮動,下面的<div>
頂上去<body>
設置最小寬度,利用BFC
規則給右邊的<div>
標籤設置overflow:hidden
。margin
疊加:處於同一個BFC
中兩個相鄰塊元素會margin
重疊。解決辦法:
BFC
中。overflow:hidden
,讓父子元素不處於同一個BFC
中,便可解決margin
傳遞問題。BFC
, overflow:hidden
(缺點不兼容IE6)(浮動盒子的特色,定位盒子的特色:高寬都由內容撐開)<br>
標籤清除浮動。<br clear="all">
(IE6不支持)<div style="clear:both;">
(不推薦,沒有符合結構,行爲,樣式相分離的原則)IE6下元素的最小高度爲19px,能夠嘗試給元素的fontsize
設爲0,可是仍是會有2px的偏差。haslayout
兼容IE6(zoom:1;
),同時設置:after僞類{ content:"";display:block;clear:both;}
。position:absolute
;該元素的父元素設置相對定位position:relative
;(讓該元素相對於父元素進行定位),設置該元素的left:50%;top:50%
;再將該元素的外邊距設置爲margin-left:負的該元素的寬度
;margin-top:負的該元素的高度;
position:absolute
;該元素的父元素設置相對定位position:relative
;(讓該元素相對於父元素進行定位),設置該元素的left,right,top,bottom
爲0,margin
設置爲auto
;left+right+width+padding+margin=包含塊padding
區域的尺寸。垂直方向上:top+bottom+height+padding+margin=包含塊padding
區域的尺寸position:absolute
;該元素的父元素設置相對定位position:relative
;(讓該元素相對於父元素進行定位),設置該元素的left:50%;top:50%;transform:translate3d(-50%,-50%,0)
;font-size
的值有px
,em
(em值的大小是動態的,當定義font-size
屬性時,1em
等於元素的父元素的字體大小)%
(參照父元素的字體大小)在Google中font-size
默認是16px,最小是12px。font-style
,兩個值italic
或oblique
均可以讓字體傾斜。font-weight
,normal
和bold
(正常和加粗兩個值),normal
正常粗細,與400等值,bold
加粗,與700等值,一共分爲9個等級100-900.font-family
容許經過給定一個有前後順序的,由字體名或者字體族名組成的列表來爲選定的元素設置字體,屬性的值用逗號隔開,瀏覽器會選擇列表中第一個該計算機上有安裝的字體。通常將最後一個值設置爲字體族。font
簡寫屬性,該屬性必須同時設置font-size
和font-family
,如需設置font-style
和font-weight
中任意一個,它們必須放在font-size
值的前面,line-height
值必須緊跟在font-size
以後,而且要在屬性值前面加上/
。最後font-family
是必不可少的,必須放在最後。(通常不推薦使用)行距=行高-字體大小
。line-height
產生的行間距就是增長和減小各行內框高度。line-height
的計算值減去font-size
的計算值,這個值就是總行距,這個值多是個負值,任何將行間距/2分別應用到內容區的頂部和底部,其結果就是該元素的行內框。line-height:1
會直接被子元素繼承,而不是轉換爲font-size
的值再被子元素繼承,可是line-height:100%
,會先轉換成父元素的font-size
的值,再由子元素繼承。body{ line-height:1;}
,當頁面中有大量文字時,標籤的行高設置爲1.5,頁面顯示文字會優美- 行高最大的做用是單行文本垂直居中。<div>
標籤的盒子,先給<div>
標籤設置一個text-align:center;
讓圖片水平居中,而後給<div>
標籤加一個after
僞類,display:inline-block
,vertical-align:middle
,高度設置爲100%,這樣就給了圖片的vertical-align
一個參照,而後給圖片<img>
標籤設置一個vertical-align:middle;
(vertical-align
只適用於inline-block
元素,其餘類型元素不適用)。