概念:將多個小圖片拼接到一個圖片中。經過background-position
和元素尺寸調節須要顯示的背景圖案。css
優勢:css3
HTTP
請求數,極大地提升頁面加載速度缺點:web
display: none;
與visibility: hidden;
的區別聯繫:它們都能讓元素不可見算法
區別:瀏覽器
display:none
;會讓元素徹底從渲染樹中消失,渲染的時候不佔據任何空間;visibility: hidden
;不會讓元素從渲染樹消失,渲染師元素繼續佔據空間,只是內容不可見display: none
;是非繼承屬性,子孫節點消失因爲元素從渲染樹消失形成,經過修改子孫節點屬性沒法顯示;visibility: hidden;
是繼承屬性,子孫節點消失因爲繼承了hidden
,經過設置visibility: visible;
可讓子孫節點顯式display
一般會形成文檔重排。修改visibility
屬性只會形成本元素的重繪。display: none
;元素內容;會讀取visibility: hidden;
元素內容link
與@import
的區別link
是HTML
方式, @import
是CSS方式sass
link
最大限度支持並行下載,@import
過多嵌套致使串行下載,出現FOUC
性能優化
link
能夠經過rel="alternate stylesheet"
指定候選樣式less
瀏覽器對link
支持早於@import
,可使用@import
對老瀏覽器隱藏樣式工具
@import
必須在樣式規則以前,能夠在css文件中引用其餘文件佈局
整體來講:link
優於@import
Flash Of Unstyled Content
:用戶定義樣式表加載以前瀏覽器使用默認樣式顯示文檔,用戶樣式加載渲染以後再重新顯示文檔,形成頁面閃爍。
解決方法:把樣式表放到文檔的head
建立規則:
float
不是none
)position
取值爲absolute
或fixed
)display
取值爲inline-block
,table-cell
, table-caption
,flex
, inline-flex
之一的元素overflow
不是visible
的元素做用:
margin
摺疊若是display
爲none
,那麼position
和float
都不起做用,這種狀況下元素不產生框
不然,若是position
值爲absolute
或者fixed
,框就是絕對定位的,float
的計算值爲none
,display
根據下面的表格進行調整。
不然,若是float
不是none
,框是浮動的,display
根據下表進行調整
不然,若是元素是根元素,display
根據下表進行調整
其餘狀況下display
的值爲指定值
總結起來:絕對定位、浮動、根元素都須要調整display
父級div
定義height
結尾處加空div
標籤clear:both
父級div
定義僞類:after
和zoom
父級div
定義overflow:hidden
父級div
也浮動,須要定義寬度
結尾處加br
標籤clear:both
比較好的是第3種方式,好多網站都這麼用
由於瀏覽器的兼容問題,不一樣瀏覽器對有些標籤的默認值是不一樣的,若是沒對CSS
初始化每每會出現瀏覽器之間的頁面顯示差別。
固然,初始化樣式會對SEO
有必定的影響,但魚和熊掌不可兼得,但力求影響最小的狀況下初始化
新增各類css
選擇器
圓角 border-radius
多列布局
陰影和反射
文字特效text-shadow
線性漸變
旋轉transform
CSS3新增僞類有那些?
p:first-of-type
選擇屬於其父元素的首個<p>
元素的每一個<p>
元素。
p:last-of-type
選擇屬於其父元素的最後 <p>
元素的每一個<p>
元素。
p:only-of-type
選擇屬於其父元素惟一的 <p>
元素的每一個 <p>
元素。
p:only-child
選擇屬於其父元素的惟一子元素的每一個 <p>
元素。
p:nth-child(2)
選擇屬於其父元素的第二個子元素的每一個 <p>
元素。
:after
在元素以前添加內容,也能夠用來作清除浮動。
:before
在元素以後添加內容
:enabled
:disabled
控制表單控件的禁用狀態。
:checked
單選框或複選框被選中
block
象塊類型元素同樣顯示。
none
缺省值。象行內元素類型同樣顯示。
inline-block
象行內元素同樣顯示,但其內容象塊類型元素同樣顯示。
list-item
象塊類型元素同樣顯示,並添加樣式列表標記。
table
此元素會做爲塊級表格來顯示
inherit
規定應該從父元素繼承 display
屬性的值
有兩種, IE
盒子模型、W3C
盒子模型;
盒模型: 內容(content)、填充(padding
)、邊界(margin
)、 邊框(border
);
區 別: IE
的content
部分把 border
和 padding
計算了進去;
優先級就近原則,同權重狀況下樣式定義最近者爲準
載入樣式以最後載入的定位爲準
優先級爲: !important > id > class > tag
important
比 內聯優先級高
它決定了元素如何對其內容進行定位,以及與其餘元素的關係和相互做用
浮動的框能夠向左或向右移動,直到他的外邊緣碰到包含框或另外一個浮動框的邊框爲止。因爲浮動框不在文檔的普通流中,因此文檔的普通流的塊框表現得就像浮動框不存在同樣。浮動的塊框會漂浮在文檔普通流的塊框上
absolute
:生成絕對定位的元素,相對於 static
定位之外的第一個父元素進行定位
fixed
:生成絕對定位的元素,相對於瀏覽器窗口進行定位
relative
:生成相對定位的元素,相對於其正常位置進行定位
static
默認值。沒有定位,元素出如今正常的流中
inherit
規定從父元素繼承 position
屬性的值
移除空格
使用margin
負值
使用font-size:0
letter-spacing
word-spacing
GIF
8
位像素,256
色boolean
透明JPEG
256
PNG
PNG8
和truecolor PNG
PNG8
相似GIF
顏色上限爲256
,文件小,支持alpha
透明度,無動畫浮動後,行內元素不會成爲塊狀元素,可是能夠設置寬高。行內元素要想變成塊狀元素,佔一行,直接設置display:block
;。但若是元素設置了浮動後再設置display:block
;那就不會佔一行。
偶數字號相對更容易和 web 設計的其餘部分構成比例關係
單冒號(:
)用於CSS3僞類,雙冒號(::
)用於CSS3
僞元素
用於區分僞類和僞元素
多數顯示器默認頻率是60Hz
,即1
秒刷新60
次,因此理論上最小間隔爲1/60*1000ms = 16.7ms
@import
引入多個css
文件,可使用CSS
工具將CSS
合併爲一個CSS
文件,例如使用Sass\Compass
等!important
規則最重要,大於其它規則
行內樣式規則,加1000
對於選擇器中給定的各個ID
屬性值,加100
對於選擇器中給定的各個類屬性、屬性選擇器或者僞類選擇器,加10
對於選擇其中給定的各個元素標籤選擇器,加1
若是權值同樣,則按照樣式規則的前後順序來應用,順序靠後的覆蓋靠前的規則
position
、display
、float
、width
、heigh
t、margin
、padding
、top
、left
、right
、`
css
壓縮與合併、Gzip
壓縮
css
文件放在head
裏、不要用@import
儘可能用縮寫、避免用濾鏡、合理使用選擇器
依靠CSS3
中提出的三個屬性:transition
、transform
、animation
transition
:定義了元素在變化過程當中是怎麼樣的,包含transition-property
、transition-duration
、transition-timing-function
、transition-delay
。
transform
:定義元素的變化結果,包含rotate
、scale
、skew
、translate
。
animation
:動畫定義了動做的每一幀(@keyframes
)有什麼效果,包括animation-name
,animation-duration
、animation-timing-function
、animation-delay
、animation-iteration-count
、animation-direction
優勢能夠加密,減小了http
請求
缺點是須要消耗CPU
進行編解碼
.left { float: left; width: 100px; height: 200px; background: red; } .right { float: right; width: 200px; height: 200px; background: blue; } .main { margin-left: 120px; margin-right: 220px; height: 200px; background: green; }
<div class="container"> <div class="left"></div> <div class="right"></div> <div class="main"></div> </div>
.container { margin-left: 120px; margin-right: 220px; } .main { float: left; width: 100%; height:300px; background: green; } .left { position: relative; left: -120px; float: left; height: 300px; width: 100px; margin-left: -100%; background: red; } .right { position: relative; right: -220px; float: right; height: 300px; width: 200px; margin-left: -200px; background: blue; }
<div class="container"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div>
.content { float: left; width: 100%; } .main { height: 200px; margin-left: 110px; margin-right: 220px; background: green; } .main::after { content: ''; display: block; font-size:0; height: 0; zoom: 1; clear: both; } .left { float:left; height: 200px; width: 100px; margin-left: -100%; background: red; } .right { float: right; height: 200px; width: 200px; margin-left: -200px; background: blue; }
<div class="content"> <div class="main"></div> </div> <div class="left"></div> <div class="right"></div>
均具備「變量」、「混合」、「嵌套」、「繼承」、「顏色混合」五大基本特性
Scss
和LESS
語法較爲嚴謹,LESS
要求必定要使用大括號「{}」,Scss
和Stylus
能夠經過縮進表示層次與嵌套關係
Scss
無全局變量的概念,LESS
和Stylus
有相似於其它語言的做用域概念
Sass
是基於Ruby
語言的,而LESS
和Stylus
能夠基於NodeJS
NPM
下載相應庫後進行編譯;
PostCSS
提供了一個解析器,它可以將 CSS
解析成抽象語法樹PostCSS
這個平臺上,咱們可以開發一些插件,來處理咱們的CSS
,好比熱門的:autoprefixer
postcss
能夠對sass處理事後的css
再處理 最多見的就是autoprefixer