本篇內(nèi)容介紹了“怎么用HTML5+CSS3動(dòng)態(tài)畫(huà)一個(gè)笑臉”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)是專業(yè)的社旗網(wǎng)站建設(shè)公司,社旗接單;提供成都做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行社旗網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
今天本文的主要內(nèi)容是:利用HTML5 svg繪制出一個(gè)線條笑臉,然后使用CSS3給它添加動(dòng)畫(huà)效果,讓它可以慢慢被畫(huà)出來(lái)。光說(shuō)可能大家還不明白是什么效果,我們直接來(lái)看看效果圖:
下面我們來(lái)研究一下是怎么實(shí)現(xiàn)這個(gè)效果的:
首先設(shè)置整個(gè)頁(yè)面的背景顏色、svg畫(huà)布的大小、線條的顏色、
body { background: #222; display: flex; height: 100vh; justify-content: center; align-items: center; margin: 0; } svg { display: block; height: 90vmin; width: 90vmin; } .stroke { stroke-width: 1; stroke: #fff; fill: none; }
然后利用svg繪制出一個(gè)線條笑臉
定義svg標(biāo)簽,在當(dāng)前文檔內(nèi)嵌套一個(gè)獨(dú)立的svg片段
<svg viewBox="-50 -50 100 100"> </svg>
定義一個(gè)path標(biāo)簽,畫(huà)一個(gè)圓
<svg viewBox="-50 -50 100 100"> <path class="stroke" d="M-40 0 a 40 40 0 0 1 80 0 a 40 40 0 0 1 -80 0"></path> </svg>
在使用path標(biāo)簽畫(huà)左邊的眼睛
<svg viewBox="-50 -50 100 100"> <path class="stroke" d="M-40 0 a 40 40 0 0 1 80 0 a 40 40 0 0 1 -80 0"></path> <path class="stroke" d="M-20 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> </svg>
將右邊的眼睛也畫(huà)出來(lái)
<svg viewBox="-50 -50 100 100"> <path class="stroke" d="M-40 0 a 40 40 0 0 1 80 0 a 40 40 0 0 1 -80 0"></path> <path class="stroke" d="M-20 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> <path class="stroke" d="M10 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> </svg>
將嘴巴畫(huà)出來(lái)
<svg viewBox="-50 -50 100 100"> <path class="stroke" d="M-40 0 a 40 40 0 0 1 80 0 a 40 40 0 0 1 -80 0"></path> <path class="stroke" d="M-20 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> <path class="stroke" d="M10 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> <path class="stroke" d="M30 0 a 30 30 0 1 1 -60 0"></path> </svg>
給.stroke元素添加一個(gè)stroke-linecaps屬性,將嘴巴路徑兩端的形狀設(shè)置為圓弧。
.stroke { stroke-linecap: round; }
OK,笑臉畫(huà)出來(lái)了!最后實(shí)現(xiàn)動(dòng)畫(huà)效果:
給.stroke元素綁定一個(gè)動(dòng)畫(huà),然后設(shè)置stroke-dasharray和stroke-dashoffset屬性,這樣笑臉圖案會(huì)被先隱藏起來(lái)
.stroke { animation: stroke-anim 2s linear forwards; stroke-dasharray: 300; stroke-dashoffset: 300; }
使用@keyframes規(guī)則,給動(dòng)畫(huà)設(shè)置動(dòng)作,將stroke-dashoffsets屬性的值設(shè)置為0,這樣笑臉圖案就能慢慢顯示出來(lái)
@keyframes stroke-anim { to { stroke-dashoffset: 0; } }
動(dòng)畫(huà)效果雖然出來(lái)了,但不是我們想要的。我們需要使用animation-delay定義每一步動(dòng)作的開(kāi)始時(shí)間,先畫(huà)出臉,再畫(huà)左眼和右眼,最后畫(huà)出嘴巴:
.stroke:nth-child(2) { animation-delay: 2s; } .stroke:nth-child(3) { animation-delay: 3s; } .stroke:nth-child(4) { animation-delay: 4s; } @keyframes stroke-anim { to { stroke-dashoffset: 0; } }
ok,完成!下面給出完整代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> body { background: #222; display: flex; height: 100vh; justify-content: center; align-items: center; margin: 0; } svg { display: block; height: 90vmin; width: 90vmin; } .stroke { stroke-width: 1; stroke: #fff; fill: none; stroke-linecap: round; animation: stroke-anim 2s linear forwards; stroke-dasharray: 300; stroke-dashoffset: 300; } .stroke:nth-child(2) { animation-delay: 2s; } .stroke:nth-child(3) { animation-delay: 3s; } .stroke:nth-child(4) { animation-delay: 4s; } @keyframes stroke-anim { to { stroke-dashoffset: 0; } } </style> </head> <body> <svg viewBox="-50 -50 100 100"> <path class="stroke" d="M-40 0 a 40 40 0 0 1 80 0 a 40 40 0 0 1 -80 0"></path> <path class="stroke" d="M-20 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> <path class="stroke" d="M10 -20 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0"></path> <path class="stroke" d="M30 0 a 30 30 0 1 1 -60 0"></path> </svg> </body> </html>
大家可以直接復(fù)制以上代碼,在本地進(jìn)行運(yùn)行演示。
這里給大家介紹幾個(gè)關(guān)鍵的標(biāo)簽和屬性:
<svg>
元素
SVG 圖像是使用各種元素創(chuàng)建的,這些元素分別應(yīng)用于矢量圖像的結(jié)構(gòu)、繪制與布局。如果svg不是根元素,svg 元素可以用于在當(dāng)前文檔(比如說(shuō),一個(gè)HTML文檔)內(nèi)嵌套一個(gè)獨(dú)立的svg片段 。 這個(gè)獨(dú)立片段擁有獨(dú)立的視口和坐標(biāo)系統(tǒng)。
<path>
路徑
path元素是用來(lái)定義形狀的通用元素。所有的基本形狀都可以用path元素來(lái)創(chuàng)建。SVG <path>元素用于繪制由直線,圓弧,曲線等組合而成的高級(jí)形狀,帶或不帶填充。該 <path>元素可能是所有元素中最先進(jìn),最通用的SVG形狀。它可能也是最難掌握的元素。
animation
屬性和@keyframes
規(guī)則
/* 定義動(dòng)畫(huà)*/ @keyframes 動(dòng)畫(huà)名稱{ /* 樣式規(guī)則*/ } /* 將它應(yīng)用于元素 */ .element { animation-name: 動(dòng)畫(huà)名稱(在@keyframes中已經(jīng)聲明好的); /* 或使用動(dòng)畫(huà)簡(jiǎn)寫屬性*/ animation: 動(dòng)畫(huà)名稱 1s ... }
animation 屬性是一個(gè)簡(jiǎn)寫屬性,可用于設(shè)置六個(gè)動(dòng)畫(huà)屬性:
animation-name:規(guī)定需要綁定到選擇器的 keyframe 名稱。。 animation-duration:規(guī)定完成動(dòng)畫(huà)所花費(fèi)的時(shí)間,以秒或毫秒計(jì)。 animation-timing-function:規(guī)定動(dòng)畫(huà)的速度曲線。 animation-delay:規(guī)定在動(dòng)畫(huà)開(kāi)始之前的延遲。 animation-iteration-count:規(guī)定動(dòng)畫(huà)應(yīng)該播放的次數(shù)。 animation-direction:規(guī)定是否應(yīng)該輪流反向播放動(dòng)畫(huà)。
animation-delay
屬性定義動(dòng)畫(huà)何時(shí)開(kāi)始。
該屬性值以秒或毫秒計(jì);允許負(fù)值,-2s 使動(dòng)畫(huà)馬上開(kāi)始,但跳過(guò) 2 秒進(jìn)入動(dòng)畫(huà)。
:nth-child()
選擇器
:nth-child(n) 選擇器匹配父元素中的第 n 個(gè)子元素,元素類型沒(méi)有限制。
n 可以是一個(gè)數(shù)字,一個(gè)關(guān)鍵字,或者一個(gè)公式。
“怎么用HTML5+CSS3動(dòng)態(tài)畫(huà)一個(gè)笑臉”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁(yè)標(biāo)題:怎么用HTML5+CSS3動(dòng)態(tài)畫(huà)一個(gè)笑臉
轉(zhuǎn)載源于:http://chinadenli.net/article36/joegpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、企業(yè)建站、全網(wǎng)營(yíng)銷推廣、網(wǎng)站制作、網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)