CSS3 基礎(chǔ)及動(dòng)畫相關(guān)實(shí)踐

一、分享目的

  • 普及CSS基礎(chǔ)知識(shí)
  • 介紹CSS3基礎(chǔ)及動(dòng)畫相關(guān)熟悉
  • 通過(guò)分析iceland首頁(yè)動(dòng)畫源碼潘懊,介紹使用CSS3動(dòng)畫屬性
  • 最終目的:讓大家了解逼纸,什么樣的動(dòng)畫和動(dòng)效,前端能使用CSS3寫出來(lái)剑按。

二、什么是CSS

以下是官方解釋:

  • CSS 指層疊樣式表 (Cascading Style Sheets)
  • 樣式定義如何顯示 HTML 元素
  • 樣式通常存儲(chǔ)在樣式表中
  • 把樣式添加到 HTML 4.0 中澜术,是為了解決內(nèi)容與表現(xiàn)分離的問(wèn)題
  • 外部樣式表可以極大提高工作效率
  • 外部樣式表通常存儲(chǔ)在 CSS 文件中
  • 多個(gè)樣式定義可層疊為一

問(wèn)題:
層疊 如何理解艺蝴?
關(guān)鍵詞:權(quán)重 繼承
CSS層疊性是指CSS樣式在針對(duì)同一元素配置同一屬性時(shí),依據(jù)層疊規(guī)則(權(quán)重)來(lái)處理沖突鸟废,選擇應(yīng)用權(quán)重高的CSS選擇器所指定的屬性猜敢,一般也被描述為權(quán)重高的覆蓋權(quán)重低的,因此也稱作層疊盒延。

通用選擇器(*) < 元素(類型)選擇器 < 類選擇器 < 屬性選擇器 < 偽類 < ID 選擇器 <內(nèi)聯(lián)樣式

//btn在被鼠標(biāo)hover的時(shí)候缩擂,背景會(huì)變?yōu)榘咨?.btn{
background:red; 
}
.btn:hover{
background:white;
}

css語(yǔ)法

selector  {  //選擇器
    property1:value1;//屬性:值 --> 聲明
    property2:value2;
 }

三、什么是CSS3

CSS3是CSS技術(shù)的升級(jí)版本添寺,CSS3語(yǔ)言開發(fā)是朝著模塊化發(fā)展的胯盯。以前的規(guī)范作為一個(gè)模塊實(shí)在是太龐大而且比較復(fù)雜,所以计露,把它分解為一些小的模塊博脑,更多新的模塊也被加入進(jìn)來(lái)楞捂。這些模塊包括: 盒子模型、列表模塊趋厉、超鏈接方式 寨闹、語(yǔ)言模塊 、背景和邊框 君账、文字特效 繁堡、多欄布局等。

說(shuō)人話就是:最新的css標(biāo)準(zhǔn)乡数。

模塊包括:

  • 選擇器
  • 盒模型
  • 背景和邊框
  • 文字特效
  • 2D/3D轉(zhuǎn)換
  • 動(dòng)畫
  • 多列布局
  • 用戶界面

四椭蹄、不知不覺使用的CSS3

在平時(shí)的生產(chǎn)實(shí)踐中,我們已經(jīng)大量使用css3屬性净赴,如下所示:

//圓角
border-radius 
//投影
box-shadow 
//背景
background-image
background-size
background-origin
background-clip
//漸變
background: linear-gradient(direction, color-stop1, color-stop2, ...);
//框大小
box-sizing: border-box;

五绳矩、轉(zhuǎn)換和過(guò)渡——我們要的動(dòng)效

1)主要方法

transform 向元素應(yīng)用 2D 或 3D 轉(zhuǎn)換
transform-origin 允許你改變被轉(zhuǎn)換元素的位置。
transform-style 規(guī)定被嵌套元素如何在 3D 空間中顯示玖翅。
perspective 規(guī)定 3D 元素的透視效果翼馆。 demo
perspective-origin 規(guī)定 3D 元素的底部位置。
backface-visibility 定義元素在不面對(duì)屏幕時(shí)是否可見金度。demo(背面可以設(shè)置不可見)

2)2D 轉(zhuǎn)換

translate(x,y) 沿著 X 和 Y 軸移動(dòng)元素应媚。
translateX(n) 沿著 X 軸移動(dòng)元素。
translateY(n) 沿著 Y 軸移動(dòng)元素猜极。
scale(x,y) 改變?cè)氐膶挾群透叨取?br> scaleX(n) 改變?cè)氐膶挾取?br> scaleY(n) 改變?cè)氐母叨取?br> rotate(angle) 在參數(shù)中規(guī)定角度中姜。
skew(x-angle,y-angle) 沿著 X 和 Y 軸。
skewX(angle) 沿著 X 軸跟伏。
skewY(angle) 沿著 Y 軸丢胚。

3)3D轉(zhuǎn)換

translate3d(x,y,z) 定義 3D 轉(zhuǎn)化。
scale3d(x,y,z) 定義 3D 縮放轉(zhuǎn)換受扳。
rotate3d(x,y,z,angle) 定義 3D 旋轉(zhuǎn)携龟。

用法是

transform : translate(20px,30px);   (移動(dòng)x:20px,y:30px)
transform : scale(2);   擴(kuò)大2倍

4)過(guò)渡

transition-property: width;     //應(yīng)用過(guò)渡的css名詞 辞色,如果寫all 代表屬性都變換
transition-duration: 1s;  //過(guò)渡效果花費(fèi)的時(shí)間
transition-timing-function: linear;  //規(guī)定過(guò)渡效果時(shí)間曲線骨宠,默認(rèn)ease
transition-delay: 2s; //過(guò)渡效果開始時(shí)間浮定,默認(rèn)0
//也可以簡(jiǎn)寫為:
transition: width 1s linear 2s;

demo

六相满、動(dòng)畫

css3動(dòng)畫,主要是用animation桦卒,看以下范例立美。

div{
    animation-name: myfirst;  //動(dòng)畫名稱
    animation-duration: 5s; //一個(gè)周期的時(shí)間
    animation-timing-function: linear;  //速度曲線
    animation-delay: 2s;  //規(guī)定動(dòng)畫何時(shí)開始
    animation-iteration-count: infinite; //規(guī)定動(dòng)畫循環(huán)次數(shù)
    animation-direction: alternate;  //規(guī)定動(dòng)畫下周期是否逆向
    animation-play-state: running; //運(yùn)行或暫停
    //可以簡(jiǎn)寫為
    animation: myfirst 5s linear 2s infinite alternate;
}

//改變顏色和位置
@keyframes myfirst 
{
     0%   {background: red; left:0px; top:0px;}
    25%  {background: yellow; left:200px; top:0px;}
    50%  {background: blue; left:200px; top:200px;}
    75%  {background: green; left:0px; top:200px;}
    100% {background: red; left:0px; top:0px;}
}

接下來(lái),我們對(duì)照iceland首頁(yè)動(dòng)畫源碼方灾,解釋css3動(dòng)畫的使用建蹄。

七碌更、兼容性和性能

兼容性和性能,是我們必須要考慮的洞慎。
靜態(tài)資源大小痛单,cpu、內(nèi)存消耗率等重要因素也是考慮范圍劲腿。

兼容性方面

animation IE9以上


animation.png

transform 2d/3d 部分屬性旭绒,支持IE9、10以上


transform2d.png
transform3d.png

近3個(gè)月的瀏覽器使用情況統(tǒng)計(jì)焦人,大部分的瀏覽器挥吵,均可得到動(dòng)畫體驗(yàn)。當(dāng)然花椭,IE瀏覽器是老大難問(wèn)題忽匈。不過(guò)隨著時(shí)間的推移,IE 8 9都將推出歷史舞臺(tái)(穩(wěn)住就是勝利)矿辽。


瀏覽器.png

總之丹允,在高級(jí)瀏覽器上,css3動(dòng)畫袋倔,能使用更少的資源嫌松,得到很好效果。

CSS3動(dòng)畫性能方面注意:

  • 盡可能多的利用硬件能力(3D變形會(huì)消耗更多的內(nèi)存與功耗奕污,應(yīng)確實(shí)有性能問(wèn)題時(shí)才去使用它萎羔,兼在權(quán)衡)
  • 盡可能少的使用box-shadows與gradients
  • 盡可能的讓動(dòng)畫元素不在文檔流中,以減少重排
  • CSS屬性在CSS動(dòng)畫中行為表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碳默,一起剝皮案震驚了整個(gè)濱河市贾陷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘱根,老刑警劉巖髓废,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異该抒,居然都是意外死亡慌洪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門凑保,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冈爹,“玉大人,你說(shuō)我怎么就攤上這事欧引∑瞪耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵芝此,是天一觀的道長(zhǎng)憋肖。 經(jīng)常有香客問(wèn)我因痛,道長(zhǎng),這世上最難降的妖魔是什么岸更? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任鸵膏,我火速辦了婚禮,結(jié)果婚禮上怎炊,老公的妹妹穿的比我還像新娘较性。我一直安慰自己,他們只是感情好结胀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布赞咙。 她就那樣靜靜地躺著,像睡著了一般糟港。 火紅的嫁衣襯著肌膚如雪攀操。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天秸抚,我揣著相機(jī)與錄音速和,去河邊找鬼。 笑死剥汤,一個(gè)胖子當(dāng)著我的面吹牛颠放,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吭敢,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鹿驼!你這毒婦竟也來(lái)了欲低?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畜晰,失蹤者是張志新(化名)和其女友劉穎砾莱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凄鼻,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腊瑟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了块蚌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闰非。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖匈子,靈堂內(nèi)的尸體忽然破棺而出河胎,到底是詐尸還是另有隱情闯袒,我是刑警寧澤虎敦,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布游岳,位于F島的核電站,受9級(jí)特大地震影響其徙,放射性物質(zhì)發(fā)生泄漏胚迫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一唾那、第九天 我趴在偏房一處隱蔽的房頂上張望访锻。 院中可真熱鬧,春花似錦闹获、人聲如沸期犬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)龟虎。三九已至,卻和暖如春沙庐,著一層夾襖步出監(jiān)牢的瞬間鲤妥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工拱雏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棉安,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓铸抑,卻偏偏與公主長(zhǎng)得像贡耽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹊汛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color菇爪,font,text-align柒昏,li...
    wzhiq896閱讀 1,732評(píng)論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color凳宙,font,text-align职祷,li...
    love2013閱讀 2,304評(píng)論 0 11
  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案氏涩? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 1、屬性選擇器:id選擇器 # 通過(guò)id 來(lái)選擇類名選擇器 . 通過(guò)類名來(lái)選擇屬性選擇器 ...
    Yuann閱讀 1,621評(píng)論 0 7
  • 查看當(dāng)前完整路徑: 查看當(dāng)前目錄下文件 切換目錄 創(chuàng)建文件 刪除文件 重命名文件 創(chuàng)建文件夾 文件目錄 vim編輯器
    DCbryant閱讀 214評(píng)論 0 0