天天看點

前端CSS3筆記第1章CSS3簡介第2章準備工作第3章基礎知識第4章Web字型第5章相容性第6章進階應用

第1章CSS3簡介

如同人類的的進化一樣,CSS3是CSS2的“進化”版本,在CSS2基礎上,增強或新增了許多特性, 彌補了CSS2的衆多不足之處,使得Web開發變得更為高效和便捷。

1.1   CSS3的現狀

1、浏覽器支援程度差,需要添加私有字首

2、移動端支援優于PC端

3、不斷改進中

4、應用相對廣泛

1.2   如何對待

1、堅持漸進增強原則

2、考慮使用者群體

3、遵照産品的方案

4、聽Boss的

第2章準備工作

2.1   統一環境

由于CSS3相容性問題的普遍存在,為了避免因相容性帶來的幹擾,我們約定統一的環境,以保證學習的效率,在最後會單獨說明相容性的問題。

1、Chrome浏覽器 version 46+

2、Firefox浏覽器 firefox 42+

3、PhotoShop CS6(建議)

2.1   如何使用手冊

學會使用工具,可以讓我們事半功倍。

[]       表示全部可選項

||        表示或者

|         表示多選一

?      表示0個或者1個

*        表示0個或者多個

{}            表示範圍

第3章基礎知識

3.1   選擇器

CSS3新增了許多靈活查找元素的方法,極大的提高了查找元素的效率和精準度。CSS3選擇器與jQuery中所提供的絕大部分選擇器相容。

3.1.1    屬性選擇器

其特點是通過屬性來選擇元素,具體有以下7種形式:

1、E[attr] 表示存在attr屬性即可;

2、E[attr=val] 表示屬性值完全等于val;

3、E[attr*=val] 表示的屬性值裡包含val字元并且在“任意”位置;

4、E[attr^=val] 表示的屬性值裡包含val字元并且在“開始”位置;

5、E[attr$=val] 表示的屬性值裡包含val字元并且在“結束”位置;

3.1.2    僞類選擇器

除了以前學過的:link、:active、:visited、:hover,CSS3又新增了其它的僞類選擇器。

1、以某元素相對于其父元素或兄弟元素的位置來擷取無素的結構僞類。

重點了解通過E來确定元素的父元素。

E:first-child第一個子元素

E:last-child最後一個子元素

E:nth-child(n) 第n個子元素,計算方法是E元素的全部兄弟元素;

E:nth-last-child(n) 同E:nth-child(n) 相似,隻是倒着計算;

n遵循線性變化,其取值0、1、2、3、4、... 但是當n<=0時,選取無效。

n可是多種形式:nth-child(2n)、nth-child(2n+1)、nth-child(-1n+5)等;

E:empty 選中沒有任何子節點的E元素;(使用不是非常廣泛)

2、目标僞類

E:target 結合錨點進行使用,處于目前錨點的元素會被選中;

3.1.3    僞元素選擇器

E::first-letter文本的第一個單詞或字(如中文、日文、韓文等);

E::first-line 文本第一行;

重點:E::before、E::after

是一個行内元素,需要轉換成塊元素

E:after、E:before 在舊版本裡是僞類,在新版本裡是僞元素,新版本下E:after、E:before會被自動識别為E::after、E::before,按僞元素來對待,這樣做的目的是用來做相容處理。

E:after、E:before後面的練習中會反複用到,目前隻需要有個大緻了解

E::selection 可改變選中文本的樣式;

":" 與 "::" 差別在于區分僞類和僞元素

3.2   顔色

新增了RGBA、HSLA模式,其中的A 表示透明度通道,即可以設定顔色值的透明度,相較opacity,它們不具有繼承性,即不會影響子元素的透明度。

Red、Green、Blue、Alpha即RGBA

Hue、Saturation、Lightness、Alpha即HSLA

R、G、B 取值範圍0~255

H 色調 取值範圍0~360,0/360表示紅色、120表示綠色、240表示藍色

S 飽和度 取值範圍0%~100%

L 亮度 取值範圍0%~100%

A 透明度 取值範圍0~1

關于透明度:

1、opacity隻能針對整個盒子設定透明度,子盒子及内容會繼承父盒子的透明度;

2 、transparent 不可調節透明度,始終完全透明

RGBA、HSLA可應用于所有使用顔色的地方。

3.3   文本

text-shadow,可分别設定偏移量、模糊度、顔色(可設透明度)。

1、水準偏移量 正值向右 負值向左;

2、垂直偏移量 正值向下 負值向上;

3、模糊度是不能為負值;

3.4   邊框

其中邊框圓角、邊框陰影屬性,應用十分廣泛,相容性也相對較好,具有符合漸進增強原則的特征,我們需要重點掌握。

3.4.1    邊框圓角

border-radius

圓角處理時,腦中要形成圓、圓心、橫軸、縱軸的概念,正圓是橢圓的一種特殊情況。如下圖

可分别設定長、短半徑,以“/”進行分隔,遵循“1,2,3,4”規則,“/”前面的1~4個用來設定橫軸半徑(分别對應橫軸1、2、3、4位置 ),“/”後面1~4個參數用來設定縱軸半徑(分别對應縱軸1、2、3、4位置 )

3.4.2    邊框陰影

box-shadow

1、水準偏移量 正值向右 負值向左;

2、垂直偏移量 正值向下 負值向上;

3、模糊度是不能為負值;

4、inset可以設定内陰影;

設定邊框陰影不會改變盒子的大小,即不會影響其兄弟元素的布局。

可以設定多重邊框陰影,實作更好的效果,增強立體感。

3.4.3    邊框圖檔

border-image

設定的圖檔将會被“切割”成九宮格形式,然後進行設定。如下圖

“切割”完成後生成虛拟的9塊圖形,然後按對應位置設定背景,

其中四個角位置、形狀保持不變,中心位置水準垂直兩個方向平鋪。如下圖

1、round和repeat之間的差別

round 會自動調整尺寸,完整顯示邊框圖檔。

repeat 單純平鋪多餘部分,會被“裁切”而不能完整顯示。

2、更改裁切尺寸

background-slice: 34 36 27 27 分别設定裁切如下圖

關于邊框圖檔重點了解9宮格的裁切及平鋪方式,實際開發中應用不廣泛,但是如能靈活動用會給我們帶來不少便利。

3.5   盒模型

CSS3中可以通過box-sizing 來指定盒模型,即可指定為content-box、border-box,這樣我們計算盒子大小的方式就發生了改變。

可以分成兩種情況:

1、box-sizing: border-box  計算方式為width = border + padding + content

2、box-sizing: content-box  計算方式為width = content

3.6   背景

背景在CSS3中也得到很大程度的增強,比如背景圖檔尺寸、背景裁切區域、背景定位參照點、多重背景等。

1、background-size設定背景圖檔的尺寸

cover會自動調整縮放比例,保證圖檔始終填充滿背景區域,如有溢出部分則會被隐藏。

contain會自動調整縮放比例,保證圖檔始終完整顯示在背景區域。

也可以使用長度機關或百分比

2、background-origin設定背景定位的原點

border-box以邊框做為參考原點;

padding-box以内邊距做為參考原點;

content-box以内容區做為參考點;

3、background-clip設定背景區域裁切

border-box裁切邊框以内為背景區域;

padding-box裁切内邊距以内為背景區域;

content-box裁切内容區做為背景區域;

4、以逗号分隔可以設定多背景,可用于自适應局

背景圖檔尺寸在實際開發中應用十分廣泛。

3.7   漸變

漸變是CSS3當中比較豐富多彩的一個特性,通過漸變我們可以實作許多炫麗的效果,有效的減少圖檔的使用數量,并且具有很強的适應性和可擴充性。

可分為線性漸變、徑向漸變

3.7.1    線性漸變

linear-gradient線性漸變指沿着某條直線朝一個方向産生漸變效果。

上圖是從黃色漸變到綠色

1、必要的元素:

a、方向

b、起始顔色

c、終止色;

2、關于方向如下圖

3.7.2    徑向漸變

radial-gradient徑向漸變指從一個中心點開始沿着四周産生漸變效果

1、必要的元素:

a、輻射範圍即圓半徑

b、中心點 即圓的中心

c、漸變起始色

d、漸變終止色

2、關于中心點:中心位置參照的是盒子的左上角

3、關于輻射範圍:其半徑可以不等,即可以是橢圓

3.8   過渡

過渡是CSS3中具有颠覆性的特征之一,可以實作元素不同狀态間的平滑過渡(補間動畫),經常用來制作動畫效果。

幀動畫:通過一幀一幀的畫面按照固定順序和速度播放。如電影膠片

補間動畫:自動完成從起始狀态到終止狀态的的過渡。

關于補間動畫更多學習可檢視http://mux.alimama.com/posts/1009

特點:目前元素隻要有“屬性”發生變化時,可以平滑的進行過渡。

transition-property設定過渡屬性

transition-duration設定過渡時間

transition-timing-function設定過渡速度

transition-delay設定過渡延時

以上四屬性重在了解

3.9   2D轉換

轉換是CSS3中具有颠覆性的特征之一,可以實作元素的位移、旋轉、變形、縮放,甚至支援矩陣方式,配合即将學習的過渡和動畫知識,可以取代大量之前隻能靠Flash才可以實作的效果。

1、移動 translate(x, y) 可以改變元素的位置,x、y可為負值;

a) 移動位置相當于自身原來位置

b) y軸正方向朝下

2、縮放 scale(x, y) 可以對元素進行水準和垂直方向的縮放,x、y的取值可為小數;

4、旋轉 rotate(deg) 可以對元素進行旋轉,正值為順時針,負值為逆時針;

5、傾斜 skew(deg, deg) 可以使元素按一定的角度進行傾斜

3.10     3D轉換

1、3D坐标軸

用X、Y、Z分别表示空間的3個次元,三條軸互相垂直。如下圖

2、左手坐标系

伸出左手,讓拇指和食指成“L”形,大拇指向右,食指向上,中指指向前方。這樣我們就建立了一個左手坐标系,拇指、食指和中指分别代表X、Y、Z軸的正方向。如下圖

3、左手法則

左手握住旋轉軸,豎起拇指指向旋轉軸正方向,正向就是其餘手指卷曲的方向。

3.11     動畫

動畫是CSS3中具有颠覆性的特征之一,可通過設定多個節點來精确控制一個或一組動畫,常用來實作複雜的動畫效果。

1、必要元素:

a、通過@keyframes指定動畫序列;

b、通過百分比将動畫序列分割成多個節點;

c、在各節點中分别定義各屬性

d、通過animation将動畫應用于相應元素;

2、關鍵屬性

a、animation-name設定動畫序列名稱

b、animation-duration動畫持續時間

c、animation-delay動畫延時時間

d、animation-timing-function動畫執行速度,linear、ease等

e、animation-play-state動畫播放狀态,play、paused等

f、animation-direction動畫逆播,alternate等

g、animation-fill-mode動畫執行完畢後狀态,forwards、backwards等

h、animation-iteration-count動畫執行次數,infinite等

前端面試題https://github.com/paddingme/Front-end-Web-Development-Interview-Question

騰訊動畫庫

http://isux.tencent.com/css3/tools.html

3.12     伸縮布局

CSS3在布局方面做了非常大的改進,使得我們對塊級元素的布局排列變得十分靈活,适應性非常強,其強大的伸縮性,在響應式開中可以發揮極大的作用。

如下圖,學習新的概念:

主軸:Flex容器的主軸主要用來配置Flex項目,預設是水準方向

側軸:與主軸垂直的軸稱作側軸,預設是垂直方向的

方向:預設主軸從左向右,側軸預設從上到下

主軸和側軸并不是固定不變的,通過flex-direction可以互換。

1、必要元素:

a、指定一個盒子為伸縮盒子 display: flex

b、設定屬性來調整此盒的子元素的布局方式 例如 flex-direction

c、明确主側軸及方向

d、可互換主側軸,也可改變方向

2、各屬性詳解

a、flex-direction調整主軸方向(預設為水準方向)

b、justify-content調整主軸對齊

c、align-items調整側軸對齊

d、flex-wrap控制是否換行

e、align-content堆棧(由flex-wrap産生的獨立行)對齊

f、flex-flow是flex-direction、flex-wrap的簡寫形式

g、flex控制子項目的縮放比例

h、order控制子項目的排列順序

此知識點重在了解,要明确找出主軸、側軸、方向,各屬性對應的屬性值可參考示例源碼

3.13     多列布局

類似報紙或雜志中的排版方式,上要用以控制大篇幅文本。

了解即可,實際意義不大。

第4章Web字型

開發人員可以為自已的網頁指定特殊的字型,無需考慮使用者電腦上是否安裝了此特殊字型,從此把特殊字型處理成圖檔的時代便成為了過去。

支援程度比較好,甚至IE低版本浏覽器也能支援。

4.1   字型格式

不同浏覽器所支援的字型格式是不一樣的,我們有必要了解一下有關字型格式的知識。

1、TureTpe(.ttf)格式

.ttf字型是Windows和Mac的最常見的字型,是一種RAW格式,支援這種字型的浏覽器有IE9+、Firefox3.5+、Chrome4+、Safari3+、Opera10+、iOS Mobile、Safari4.2+;

2、OpenType(.otf)格式

.otf字型被認為是一種原始的字型格式,其内置在TureType的基礎上,支援這種字型的浏覽器有Firefox3.5+、Chrome4.0+、Safari3.1+、Opera10.0+、iOS Mobile、Safari4.2+;

3、Web Open Font Format(.woff)格式

woff字型是Web字型中最佳格式,他是一個開放的TrueType/OpenType的壓縮版本,同時也支援中繼資料包的分離,支援這種字型的浏覽器有IE9+、Firefox3.5+、Chrome6+、Safari3.6+、Opera11.1+;

4、Embedded Open Type(.eot)格式

.eot字型是IE專用字型,可以從TrueType建立此格式字型,支援這種字型的浏覽器有IE4+;

5、SVG(.svg)格式

.svg字型是基于SVG字型渲染的一種格式,支援這種字型的浏覽器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+;

了解了上面的知識後,我們就需要為不同的浏覽器準備不同格式的字型,通常我們會通過字型生成工具幫我們生成各種格式的字型,是以無需過于在意字型格式間的差別差異。

推薦http://www.zhaozi.cn/、http://www.youziku.com/ 查找更多中文字型

4.2   字型圖示

其實我們可以把文字了解成是一種特殊形狀的圖檔,反之我們是不是也可以把圖檔制作成字型呢?

答案是肯定的。

常見的是把網頁常用的一些小的圖示,借助工具幫我們生成一個字型包,然後就可以像使用文字一樣使用圖示了。

優點:

1、将所有圖示打包成字型庫,減少請求;

2、具有矢量性,可保證清晰度;

3、使用靈活,便于維護;

Font Awesome 使用介紹

http://fontawesome.dashgame.com/

定制自已的字型圖示庫

http://iconfont.cn/

https://icomoon.io/

SVG素材

http://www.iconsvg.com/

第5章相容性

通過http://caniuse.com/ 可查詢CSS3各特性的支援程度,一般相容性處理的常見方法是為屬性添加私有字首,如不能解決,應避免使用,無需刻意去處理CSS3的相容性問題。

第6章進階應用

轉載于:https://www.cnblogs.com/famensaodiseng/p/7029161.html