文主要內容
transition的中文含義是過渡。過渡是CSS3中具有顛覆性的一個特征,可以實現元素不同狀態間的平滑過渡(補間動畫),經常用來制作動畫效果。
transition 包括以下屬性:
上面的四個屬性也可以寫成綜合屬性:
transition: 讓哪些屬性進行過度 過渡的持續時間 運動曲線 延遲時間; transition: all 3s linear 0s;
其中,transition-property這個屬性是尤其需要注意的,不同的屬性值有不同的現象。我們來示范一下。
如果設置 transition-property: width,意思是只讓盒子的寬度在變化時進行過渡。效果如下:
如果設置 transition-property: all,意思是讓盒子的所有屬性(包括寬度、背景色等)在變化時都進行過渡。效果如下
案例:小米商品詳情
效果如下:
轉換是 CSS3 中具有顛覆性的一個特征,可以實現元素的位移、旋轉、變形、縮放,甚至支持矩陣方式。
轉換再配合過渡和動畫,可以取代大量早期只能靠 Flash 才可以實現的效果。
在 CSS3 當中,通過 transform 轉換來實現 2D 轉換或者 3D 轉換。
1、縮放:scale
格式:
transform: scale(x, y); transform: scale(2, 0.5);
參數解釋: x:表示水平方向的縮放倍數。y:表示垂直方向的縮放倍數。如果只寫一個值就是等比例縮放。
取值:大于1表示放大,小于1表示縮小。不能為百分比。
格式舉例:
效果:
上圖可以看到,給 box1 設置 2D 轉換,并不會把兄弟元素擠走。
2、位移:translate
格式:
transform: translate(水平位移, 垂直位移); transform: translate(-50%, -50%);
參數解釋:
格式舉例:
效果:
上圖中,因為我在操作的時候,鼠標懸停后,立即進行了略微的移動,所以產生了兩次動畫。正確的效果應該是下面這樣的
應用:讓絕對定位中的盒子在父親里居中
我們知道,如果想讓一個標準流中的盒子在父親里居中(水平方向看),可以將其設置margin: 0 auto屬性。
可如果盒子是絕對定位的,此時已經脫標了,如果還想讓其居中(位于父親的正中間),可以這樣做:
div { width: 600px; height: 60px; position: absolute; 絕對定位的盒子 left: 50%; 首先,讓左邊線居中 top: 0; margin-left: -300px; 然后,向左移動寬度(600px)的一半 }
如上方代碼所示,我們先讓這個寬度為600px的盒子,左邊線居中,然后向左移動寬度(600px)的一半,就達到效果了。
現在,我們還可以利用偏移 translate 來做,這也是比較推薦的寫法:
div { width: 600px; height: 60px; background-color: red; position: absolute; 絕對定位的盒子 left: 50%; 首先,讓左邊線居中 top: 0; transform: translate(-50%); 然后,利用translate,往左走自己寬度的一半【推薦寫法】 }
3、旋轉:rotate
格式:
transform: rotate(角度); transform: rotate(45deg);
參數解釋:正值 順時針;負值:逆時針。
效果:
注意,上方代碼中,我們給盒子設置了 transform 中的 rotate 旋轉,但同時還要給盒子設置 transition 過渡。如果沒有這行過渡的代碼,旋轉會直接一步到位,效果如下:(不是我們期望的效果)
案例1:小火箭
上方代碼中,我們將 transform 的兩個小屬性合并起來寫了。
案例2:撲克牌
rotate 旋轉時,默認是以盒子的正中心為坐標原點的。如果想改變旋轉的坐標原點,可以用transform-origin屬性。格式如下:
transform-origin: 水平坐標 垂直坐標; transform-origin: 50px 50px; transform-origin: center bottom; //旋轉時,以盒子底部的中心為坐標原點
我們來看一下 rotate 結合 transform-origin 的用法舉例。
代碼如下:
效果如下:
4、傾斜
3D 轉換
1、旋轉:rotateX、rotateY、rotateZ
3D坐標系(左手坐標系)
如上圖所示,伸出左手,讓拇指和食指成“L”形,大拇指向右,食指向上,中指指向前方。拇指、食指和中指分別代表X、Y、Z軸的正方向,這樣我們就建立了一個左手坐標系。
瀏覽器的這個平面,是X軸、Y軸;垂直于瀏覽器的平面,是Z軸。
旋轉的方向:(左手法則)
左手握住旋轉軸,豎起拇指指向旋轉軸的正方向,正向就是其余手指卷曲的方向。
從上面這句話,我們也能看出:所有的3d旋轉,對著正方向去看,都是順時針旋轉。
格式:
transform: rotateX(360deg); //繞 X 軸旋轉360度 transform: rotateY(360deg); //繞 Y 軸旋轉360度 transform: rotateZ(360deg); //繞 Z 軸旋轉360度
格式舉例:
(1)rotateX 舉例
效果:
上方代碼中,我們最好加個透視的屬性,方能看到3D的效果;沒有這個屬性的話,圖片旋轉的時候,像是壓癟了一樣。
而且,透視的是要加給圖片的父元素 div,方能生效。我們在后面會講解透視屬性。
(2)rotateY 舉例:
效果:
(3)rotateZ 舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> .rotateZ { width: 330px; height: 227px; margin: 100px auto; /* 透視*/ perspective: 200px; } img { transition: all 1s; } .rotateZ:hover img { transform: rotateZ(360deg); } </style> </head> <body> <div class="rotateZ"> <img src="images/z.jpg" alt=""/> </div> </body> </html>
效果:
案例:百度錢包
現在有下面這張圖片素材:
要求做成下面這種效果:
上面這張圖片素材其實用的是精靈圖。實現的代碼如下:
2、移動:translateX、translateY、translateZ
格式:
transform: translateX(100px); //沿著 X 軸移動 transform: translateY(360px); //沿著 Y 軸移動 transform: translateZ(360px); //沿著 Z 軸移動
格式舉例:
(1)translateX 舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> .box { width: 200px; height: 200px; background: green; transition: all 1s; } .box:hover { transform: translateX(100px); } </style> </head> <body> <div class="box"> </div> </body> </html>
效果:
(2)translateY 舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> .box { width: 200px; height: 200px; background: green; transition: all 1s; } .box:hover { transform: translateY(100px); } </style> </head> <body> <div class="box"> </div> </body> </html>
效果:
(3)translateZ 舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> body { /* 給box的父元素加透視效果*/ perspective: 1000px; } .box { width: 250px; height: 250px; background: green; transition: all 1s; margin: 200px auto } .box:hover { /* translateZ必須配合透視來使用*/ transform: translateZ(400px); } </style> </head> <body> <div class="box"> </div> </body> </html>
效果:
上方代碼中,如果不加透視屬性,是看不到translateZ的效果的。
3、透視:perspective
電腦顯示屏是一個 2D 平面,圖像之所以具有立體感(3D效果),其實只是一種視覺呈現,通過透視可以實現此目的。
透視可以將一個2D平面,在轉換的過程當中,呈現3D效果。但僅僅只是視覺呈現出3d 效果,并不是正真的3d。
格式有兩種寫法:
4、3D呈現(transform-style)
3D元素構建是指某個圖形是由多個元素構成的,可以給這些元素的父元素設置transform-style: preserve-3d來使其變成一個真正的3D圖形。屬性值可以如下:
transform-style: preserve-3d; //讓 子盒子 位于三維空間里 transform-style: flat; //讓子盒子位于此元素所在的平面內(子盒子被扁平化)
案例:立方體
動畫是CSS3中具有顛覆性的特征,可通過設置多個節點 來精確控制一個或一組動畫,常用來實現復雜的動畫效果。
1、定義動畫的步驟
(1)通過@keyframes定義動畫;
(2)將這段動畫通過百分比,分割成多個節點;然后各節點中分別定義各屬性;
(3)在指定元素里,通過 animation 屬性調用動畫。
之前,我們在 js 中定義一個函數的時候,是先定義,再調用:
js 定義函數: function fun(){ 函數體 } 調用: fun();
同樣,我們在 CSS3 中定義動畫的時候,也是先定義,再調用:
定義動畫: @keyframes 動畫名{ from{ 初始狀態 } to{ 結束狀態 } } 調用: animation: 動畫名稱 持續時間;
其中,animation屬性的格式如下:
animation: 定義的動畫名稱 持續時間 執行次數 是否反向 運動曲線 延遲執行。(infinite 表示無限次) animation: move1 1s alternate linear 3; animation: move2 4s;
定義動畫的格式舉例:
注意好好看代碼中的注釋。
效果如下:
2、動畫屬性
我們剛剛在調用動畫時,animation屬性的格式如下:
animation屬性的格式如下:
animation: 定義的動畫名稱 持續時間 執行次數 是否反向 運動曲線 延遲執行。(infinite 表示無限次) animation: move1 1s alternate linear 3; animation: move2 4s;
可以看出,這里的 animation 是綜合屬性,接下來,我們把這個綜合屬性拆分看看。
(1)動畫名稱:
animation-name: move;
(2)執行一次動畫的持續時間:
animation-duration: 4s;
備注:上面兩個屬性,是必選項,且順序固定。
(3)動畫的執行次數:
animation-iteration-count: 1; //iteration的含義表示迭代
屬性值infinite表示無數次。
(3)動畫的方向:
animation-direction: alternate;
屬性值:normal 正常,alternate 反向。
(4)動畫延遲執行:
animation-delay: 1s;
(5)設置動畫結束時,盒子的狀態:
animation-fill-mode: forwards;
屬性值: forwards:保持動畫結束后的狀態(默認), backwards:動畫結束后回到最初的狀態。
(6)運動曲線:
animation-timing-function: ease-in;
屬性值可以是:linear ease-in-out steps()等。
注意,如果把屬性值寫成steps(),則表示動畫不是連續執行,而是間斷地分成幾步執行。我們接下來專門講一下屬性值 steps()。
steps()的效果
我們還是拿上面的例子來舉例,如果在調用動畫時,我們寫成:
animation: move2 4s steps(2);
效果如下:
有了屬性值 steps(),我們就可以作出很多不連續地動畫效果。比如時鐘;再比如,通過多張靜態的魚,作出一張游動的魚。
step()舉例:時鐘的簡易模型
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> div { width: 3px; height: 200px; background-color: #000; margin: 100px auto; transform-origin: center bottom; /* 旋轉的中心點是底部 */ animation: myClock 60s steps(60) infinite; } @keyframes myClock { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } </style> </head> <body> <div></div> </body> </html>
上方代碼,我們通過一個黑色的長條div,旋轉360度,耗時60s,分成60步完成。即可實現。
效果如下:
動畫舉例:擺動的魚
現在,我們要做下面這種效果,為了作出上面這種效果,要分成兩步。
(1)第一步:讓魚在原地擺動
魚在原地擺動并不是一張 gif動圖,她其實是由很多張靜態圖間隔地播放,一秒鐘播放完畢,就可以了
圖片的url是http://img.smyhvae.com/20180209_1245.gif,圖片較大,如無法觀看,可在瀏覽器中單獨打開。
上面這張大圖的尺寸是:寬 509 px、高 2160 px。
我們可以理解成,每一幀的尺寸是:寬 509 px、高 270 px。270 * 8 = 2160。讓上面這張大圖,在一秒內從 0px 的位置往上移動2160px,分成8步來移動。就可以實現了。
代碼是:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> .shark { width: 509px; height: 270px; /*盒子的寬高是一幀的寬高*/ border: 1px solid #000; margin: 100px auto; background: url(images/shark.png) left top; /* 讓圖片一開始位于 0 px的位置 */ animation: sharkRun 1s steps(8) infinite; /* 一秒之內,從頂部移動到底部,分八幀, */ } @keyframes sharkRun { 0% { } /* 270 * 8 = 2160 */ 100% { background-position: left -2160px; /* 動畫結束時,讓圖片位于最底部 */ } } </style> </head> <body> <div class="sharkBox"> <div class="shark"></div> </div> </div> </body> </html>
我們不妨把上面的動畫的持續時間從1s改成 8s,就可以看到動畫的慢鏡頭
這下,你應該恍然大悟了。
(2)第二步:讓魚所在的盒子向前移動。
實現的原理也很簡單,我們在上一步中已經讓shark這個盒子實現了原地搖擺,現在,讓 shark 所在的父盒子 sharkBox向前移動,即可。完整版代碼是:
最后效果很好
這是我在學習CSS3動畫的時候收藏的一篇好文,現在分享在這里,既方便大家學習參考,也方便日后查閱,最后感謝作者
鏈接文章
https://www.cnblogs.com/qianguyihao/p/8435182.html
是用純css來寫的一個效果圖,動畫效果還是挺有意思的哦~
很多初學者小伙伴都以為css只需要會那么一些就ok了,很簡單,其實css還是很多你所不知道的內容哦。
分享之前還是要推薦一下小編的web前端學習群:121404239,有技術知識點分享,還有小編整理好的web前端資料和教程哦!
html代碼:
<div class="loader"></div>
<div class="shadow"></div>
css代碼:
@-webkit-keyframes mainAnimation {
0% {
width: 50px;
-webkit-transform: translateX(0px) translateY(0px) rotate(0deg);
transform: translateX(0px) translateY(0px) rotate(0deg);
}
今天為大家分享10部非常適合中學生學習英語的英文動畫電影,家長可依據不同類別主題為孩子挑選喜歡的影片,陪孩子一起觀看。
《魔發奇緣》
《魔發奇緣》改編自格林童話《萵苣姑娘》,影片故事主角是位有著一頭長發的女孩樂佩,她的頭發受到魔法的控制,也因此她自幼居住在一座與世隔絕的高塔上。
直到有一天,有一位痞子帥哥大盜弗林·萊德發現這高塔正是最佳的藏身處,于時他徒手爬上了高塔,殊不知高塔上原來有著一位美少女,一場奇緣就此展開。
童話故事,基本沒有孩子不喜歡的,每位老師也都有童心,來一場魔法奇遇吧。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中英文字幕):
https://v.qq.com/x/cover/v4re9xte29okqed/n0022jllxsq.html
《丁丁歷險記》
影片講述的是一天丁丁買了一只古老的船模送給船長作為禮物,于是又一次驚險的歷險開始了。
獨角獸號隱藏著一個海盜和財寶的故事。在他的朋友杜邦偵探的幫助下,丁丁、白雪和船長開始去揭開獨角獸號的秘密。
勇氣、冒險,老少咸宜。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中英文字幕):
https://v.qq.com/x/cover/t1ynh6jkmwyr76g/i0016ojgikb.html
《里約大冒險》
《里約大冒險》的故事講述一只一直是世界上僅存的公金剛鸚鵡。直到有一天,一個鳥類研究博士圖里奧來到了這里,告知鸚鵡的主人琳達要是再不給它們進行人工繁殖那么藍色金剛鸚鵡可能就會滅絕,而他們研究所就有一只母藍色金剛鸚鵡。
于是,為了拯救藍色金剛鸚鵡,他們從美國出發飛往巴西里約熱內盧,一段充滿異域風情的冒險之旅就這么開始了。
孩子們都是喜歡冒險的,而且動物們各顯神通,保證孩子們喜歡電影喜歡上臺詞。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中文字幕):
https://v.qq.com/x/cover/zb24obs27w4mfdw/k0020jbkc1h.html
《霍頓與無名氏》
《霍頓與無名氏》電影的故事講述了一只叫霍頓的大象,給“無名鎮”中的居民們重新找到一個適合居住的地方,解救“無名鎮”市民的生命。
責任感和使命感,孩子不可或缺。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中英文字幕):
http://www.bilibili.com/video/av341454/
《天才眼鏡狗》
《天才眼鏡狗》故事圍繞一只世界上“最聰明狗狗”皮博迪先生收養了一個人類小男孩謝爾曼而展開了一段奇妙旅程。為了讓他的養子能更好的見證世界的奇妙,他自己發明了一臺時光穿梭機。
皮博迪與舍曼一起穿越時空,四處冒險,并鬧出各種笑話。
輕松愉悅的氛圍,常用口語很好學。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中英文字幕):
http://v.youku.com/v_show/id_XNzUwNDgzMDUy.html
《瘋狂原始人》
《瘋狂原始人》電影《瘋狂原始人》講述原始人咕嚕一家六口在老爸瓜哥的庇護下生活。
每天搶奪鴕鳥蛋為食,躲避野獸的追擊,每晚聽老爸敘述同一個故事,在山洞里過著一成不變的生活。
大女兒小伊是一個和老爸性格截然相反的充滿好奇心的女孩,她不滿足一輩子留在這個小山洞里,一心想要追逐山洞外面的新奇世界。
沒想到世界末日突然降臨,山洞被毀,一家人被迫離開家園,一行人在影片中展開了一場鬧騰而又驚險的旅程。幽默十足,親情暖暖的。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中文字幕):
http://www.le.com/ptv/vplay/2044435.html
《海底總動員》
《海底總動員》故事主要敘述一只過度保護兒子的小丑魚馬林和它在路上碰到的藍唐王魚多莉兩人一同在汪洋大海中尋找瑪林失去的兒子尼莫的奇幻經歷。
在路途中,瑪林漸漸了解到它必須要勇于冒險以及它的兒子已經有能力照顧自己了。
親情與成長,看完暖暖的。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中英文字幕):
http://www.iqiyi.com/v_19rriflzv7.html
《冰雪奇緣》
《冰雪奇緣》改編自安徒生童話《白雪皇后》。
影片講述小國阿倫黛爾因一個魔咒永遠地被冰天雪地覆蓋,為了尋回夏天,安娜公主和山民克里斯托夫以及他的馴鹿搭檔組隊出發,為展開一段拯救王國的歷險。
獲獎無數,主題曲火爆全球。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中文字幕):
https://v.qq.com/x/cover/bv8m91i5jj1w1ww/k0014rpm1vd.html
《精靈旅社》
《精靈旅社》影片講述吸血鬼之王德古拉伯爵為了保護心愛的女兒遠離人類,建造一家五星級的怪物酒店,正當他滿心歡喜地為寶貝女兒籌備118歲生日晚宴時,一位人類客人喬納森誤打誤撞闖入酒店。
德古拉想盡各種手段將他趕出吸血鬼的地盤,而喬納森卻與德古拉的女兒一見鐘情。
父愛,第二部還有父親與女兒育兒觀念的差別,大人看看更有意義。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中英文字幕):
http://v.youku.com/v_show/id_XNjc4NDgyOTUy.htmlspm=a2h1n.8261147.0.0
《瘋狂動物城》
《瘋狂動物城》該片講述了在一個所有動物和平共處的動物城市,兔子朱迪通過自己努力奮斗完成自己兒時的夢想,成為動物警察的故事。關于夢想與堅持。
觀看鏈接:復制鏈接到瀏覽器打開并觀看(中文字幕):
http://v.youku.com/v_show/id_XMTU3MjI1MTk1Mg==.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。