TML5的強大之處不僅在于讓網頁元素更加靈活多變,更在于它可以很方便地實現各種網頁動畫特效,讓你的網站更加富有現代化特色。就現在的瀏覽器而言,已經基本都支持HTML5了,所以這也方便了我們開發者免去了考慮瀏覽器兼容性的頭疼問題。今天要分享一些令人難忘的HTML5炫酷動畫,希望大家會喜歡。
分享之前我先推薦下我自己的web前端學習交流群:675498134,不管你是小白還是大神,我都歡迎你們過來學習交流,不定期分享干貨,包括我自己整理的最新的前端資料和教程送給大家,歡迎初學和進階中的小伙伴,一起學習一起交流,共同進步。
1、HTML5火球擋板碰撞動畫游戲
今天我們要再來分享一款超酷的HTML5火球擋板碰撞動畫游戲。屏幕上有一個火球在不停的運動,你可以移動鼠標滑動屏幕下方的擋板,火球碰撞到擋板后,即可反彈出去,這是個很有特色的HTML5游戲。
2、HTML5/CSS3圓盤秒表動畫 秒表可暫停計時
今天我們要分享一款基于HTML5和CSS3的圓盤秒表動畫,秒表可以精確到0.001秒,并且可以在計時過程中暫停計時,同時秒表可以隨時重置。
3、3D版HTML5模擬衣服撕扯動畫
還記得很早以前向大家分享的這款HTML5 Canvas模擬衣服撕扯動畫嗎?這絕對是一款非常具有創意而且很好玩的HTML5動畫。今天我們來分享一下它的3D版本,在原來的基礎上,衣服布料呈3D環形顯示,你同樣可以用鼠標拖拽衣服,不過和之前不同的是,鼠標左鍵用來拖拽衣服,鼠標右鍵用來切割衣服,失去了之前鼠標用力程度和衣服破碎程度的關系,似乎功能上有所缺失,但是HTML5 3D功能還是不錯的。
4、純CSS3實現超酷的磁帶動畫
記得之前分享過一款HTML5磁帶式古典播放器,效果相當震撼。這次我們要用純CSS3來實現一個超酷的磁帶動畫特效。首先用純CSS3繪制了一個磁帶的外觀,還是相當逼真的,然后用CSS3的動畫屬性實現了磁帶的旋轉,就像在播放歌曲一樣,如果配合HTML5的音頻播放功能,就和那個磁帶播放器差不多了。
5、HTML5仿Apple Watch時鐘動畫
Apple Watch剛剛發布不久,就已經有國外的大牛將其時鐘表盤界面用HTML5模仿出來了,并且這款HTML5仿Apple Watch的時鐘是動態的,可以根據本地時間實時更新指針數據。時鐘的界面非常華麗,確實有蘋果的風格,HTML5也的確非常強大。
6、純CSS3和SVG鼠標滑過燈泡發光特效
這次要分享一款利用純CSS3和SVG實現的燈泡發光效果,我們只需要將鼠標滑過燈泡,整個燈泡就會出現發光發亮的動畫特效,效果相當逼真。CSS3的運用,讓燈泡外圍有一層淡淡的光暈。并且在燈光點亮和熄滅的時候有淡入淡出的效果。
7、HTML5動感的火焰燃燒動畫特效
這又是一款基于HTML5的超炫動畫特效,是一款動感的火焰燃燒動畫效果。這款HTML5動畫火焰燃燒非常逼真,之前我們也分享過一些其他的HTML5火焰燃燒動畫,比如:HTML5 Canvas火焰燃燒動畫和純CSS3實現打火機火焰動畫。一般像這樣的HTML5動畫都是基于Canvas的,今天的這款也不例外。
8、CSS3圖片傾斜效果 可傾斜四個角度
今天我們再來分享一款CSS3圖片特效,它可以讓網頁上的圖片傾斜任意的角度,其實在CSS3中實現圖片的傾斜非常簡單,我們并不需要利用復雜的JS計算各種角度,只要用CSS3的transition屬性即可完成圖片的傾斜效果,非常簡單,具體實現大家可以看DEMO演示。
分享到這里就告一段落了,學習web前端的朋友可以來我的群,群里每天都有對應資料學習:675498134,歡迎初學和進階中的小伙伴。
在的網頁中應用了越來越多的3D應用,特別是基于HTML5 Canvas的動畫特效,讓用戶有一種非常震撼的視覺體驗。本文收集了8個非常炫酷的3D視覺效果的HTML5動畫,都有源代碼分享,你可以學習你感興趣的HTML5動畫,一起來看看。
1、CSS3飄帶狀3D菜單
菜單帶小圖標這次我們要來分享一款很特別的CSS3菜單,菜單的外觀是飄帶狀的,并且每一個菜單項有一個精美的小圖標,鼠標滑過菜單項時,菜單項就會向上凸起,像是飄帶飄動一樣,形成非常酷的3D視覺效果。這款CSS3飄帶狀3D菜單非常適合作一些活動頁面的菜單導航。
2、HTML5/CSS3 3D紙片折疊動畫
今天我們再來分享一款非常華麗的HTML5/CSS3 3D動畫特效,盡管它目前很少能在項目中應用,但從源碼中我們可以學到很多HTML5 3D動畫的制作知識。這是一款紙片折疊動畫特效,利用HTML5和CSS3的相關特性,我們可以將一張張紙片折疊起來,形成很酷的3D動畫效果。
3、HTML5 webkit 3D立方體圖片旋轉滑塊應用
今天再來分享一款HTML5 3D立方體動畫,這個只是一個3D效果模型,你可以用圖片替換演示中的立方體4個面,這樣就可以將這款HTML5立方體旋轉動畫改造成HTML5 3D焦點圖了,由于是基于webkit的,所以有瀏覽器限制,Google Chrome最佳。
4、HTML5顏色漸變3D文字特效
之前我們已經分享過不少HTML5文字特效,效果都還不錯,尤其是這款HTML5擺動的文字特效類似柳枝擺動,更是有非常酷的文字動畫效果。今天我們要分享一款HTML5 3D文字特效,文字的顏色是漸變的,同時有文字陰影,更加凸顯了3D立體的效果。
5、HTML5 3D圖片陰影翻轉動畫
今天我們要分享一款很酷的HTML5 3D動畫特效,這款3D特效可以為你的圖片增加陰影的效果,而且可以讓圖片在鼠標滑過的時候出現3D翻轉的動畫效果。這和之前分享的HTML5 3D動畫HTML5 3D正方體旋轉動畫有著類似的效果,大家也可以看看。
6、純CSS3 3D按鈕按鈕酷似牛奶般剔透
CSS3按鈕一般都可以設計的非常漂亮,利用投影、漸變等CSS3屬性特效可以把按鈕渲染的十分動感。今天分享的這款CSS3按鈕外觀非常特別,它看上去酷似晶瑩剔透的牛奶,而且在點擊按鈕時出現3D效果的動畫,按鈕按下時,按鈕會輕輕的彈動一下,非常逼真。
7、CSS3 3D發光切換按鈕
剛剛我們發布過一款CSS3開關切換滑動按鈕,應該說出了有點3D立體的效果外,其他都很普通?,F在我們要來分享一款更酷的CSS3開關切換按鈕,它不僅具有3D的效果,而且可以發光,當開關處于打開狀態時,旁邊的小燈就會亮起來,然后燈光投射到開關上,效果挺逼真的。
8、CSS3 3D彈性按鈕
今天要分享的這款CSS3按鈕和這款按鈕差不錯,也同樣擁有3D的效果,按鈕在按下時帶有彈性質感。
微信搜索“IT之家”關注搶6s大禮!下載IT之家客戶端(戳這里)也可參與評論抽樓層大獎!
VG 動畫有很多種實現方法,也有很大SVG動畫庫,現在我們就來介紹 svg動畫實現方法都有哪些?
SVG animation 有五大元素,他們控制著各種不同類型的動畫,分別為:
1.1、set
set 為動畫元素設置延遲,此元素是SVG中最簡單的動畫元素,但是他并沒有動畫效果。
使用語法:
<set attributeName="" attributeType="" to="" begin="" />
eg:繪制一個半徑為200的圓,4秒之后,半徑變為50。
<svg width="320" height="320">
<circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
<set attributeName="r" attributeType="XML" to="50" begin="4s" />
</circle>
</svg>
1.2、animate
是基礎的動畫元素,實現單屬性的過渡效果。
使用語法:
<animate
attributeName="r"
from="200" to="50"
begin="4s" dur="2s"
repeatCount="2"
></animate>
eg:繪制一個半徑為200的圓,4秒之后半徑在2秒內從200逐漸變為50。
<circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
<animate attributeName="r" from="200" to="50"
begin="4s" dur="2s" repeatCount="2"></animate>
</circle>
1.3、animateColor
控制顏色動畫,animate也可以實現這個效果,所以該屬性目前已被廢棄。
1.4、animateTransform
實現transform變換動畫效果,與css3的transform變換類似。實現平移、旋轉、縮放等效果。
使用語法:
<animateTransform attributeName="transform" type="scale"
from="1.5" to="0"
begin="2s" dur="3s"
repeatCount="indefinite"></animateTransform>
<svg width="320" height="320">
<circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
<animateTransform attributeName="transform" begin="4s"
dur="2s" type="scale" from="1.5" to="0"
repeatCount="indefinite"></animateTransform>
</circle>
</svg>
1.5、animateMotion
可以定義動畫路徑,讓SVG各個圖形,沿著指定路徑運動。
使用語法:
<animateMotion
path="M 0 0 L 320 320"
begin="4s" dur="2s"></animateMotion>
eg:繪制一個半徑為10的圓,延遲4秒從左上角運動的右下角。
<svg width="320" height="320">
<circle cx="0" cy="0" r="10" style="stroke: none; fill: #0000ff;">
<animateMotion
path="M 0 0 L 320 320"
begin="4s" dur="2s"
></animateMotion>
</circle>
</svg>
實際制作動畫的時候,動畫太單一不酷,需要同時改變多個屬性時,上邊的四種元素可以互相組合,同類型的動畫也能組合。以上這些元素雖然能夠實現動畫,但是無法動態地添加事件,所以接下來我們就看看 js 如何制作動畫。
上篇文章我們介紹js可以操作path,同樣也可以操作SVG的內置形狀元素,還可以給任意元素添加事件。
給SVG元素添加事件方法與普通元素一樣,可以只用on+事件名 或者addEventListener添加。
eg:使用SVG繪制地一條線,點擊線條地時候改變 x1 ,實現旋轉效果。
<svg width="800" height="800" id="svg">
<line id="line" x1="100" y1="100"
x2="400" y2="300"
stroke="black" stroke-width="5"></line>
</svg>
<script>
window.onload = function(){
var line = document.getElementById("line")
line.onclick = function(){
let start = parseInt(line.getAttribute("x1")),
end=400,dis = start-end
requestAnimationFrame(next)
let count = 0;
function next(){
count++
let a = count/200,cur = Math.abs(start+ dis*a)
line.setAttribute('x1',cur)
if(count<200)requestAnimationFrame(next)
}
}
}
</script>
js制作的SVG動畫,主要利用 requestAnimationFrame 來實現一幀一幀的改變。
我們上述制作的 SVG 圖形、動畫等,運行在低版本IE中,發現SVG只有IE9以上才支持,低版本的并不能支持,為了兼容低版本瀏覽器,可以使用 VML ,VML需要添加額外東西,每個元素需要添加 v:元素,樣式中還需要添加 behavier ,經常用于繪制地圖。由于使用太麻煩,所以我們借助 Raphael.js 庫。
Raphael.js是通過SVG/VML+js實現跨瀏覽器的矢量圖形,在IE瀏覽器中使用VML,非IE瀏覽器使用SVG,類似于jquery,本質還是一個javascript庫,使用簡單,容易上手。
使用之前需要先引入Raphael.js庫文件。cdn的地址為:https://cdn.bootcdn.net/ajax/libs/raphael/2.3.0/raphael.js
3.1、創建畫布
Rapheal有兩種創建畫布的方式:
第一種:瀏覽器窗口上創建畫布
創建語法:
var paper = Raphael(x,y,width,height)
x,y是畫布左上角的坐標,此時畫布的位置是絕對定位,有可能會與其他html元素重疊。width、height是畫布的寬高。
第二種:在一個元素中創建畫布
創建語法:
var paper = Raphael(element, width, height);
element是元素節點本身或ID width、height是畫布的寬度和高度。
3.2、繪制圖形
畫布創建好之后,該對象自帶SVG內置圖形有矩形、圓形、橢圓形。他們的方法分別為:
paper.circle(cx, cy, r); // (cx , cy)圓心坐標 r 半徑
paper.rect(x, y, width, height, r); // (x,y)左上角坐標 width寬度 height高度 r圓角半徑(可選)
paper. ellipse(cx, cy, rx, ry); // (cx , cy)圓心坐標 rx水平半徑 ry垂直半徑
eg:在div中繪制一個圓形,一個橢圓、一個矩形。
<div id="box"></div>
<script>
var paper = Raphael("box",300,300)
paper.circle(150,150,150)
paper.rect(0,0,300,300)
paper.ellipse(150,150,100,150)
</script>
運行結果如下:
除了簡單圖形之外,還可以繪制復雜圖形,如三角形、心型,這時就使用path方法。
使用語法:paper.path(pathString)
pathString是由一個或多個命令組成,每個命令以字母開始,多個參數是由逗號分隔。
eg:繪制一個三角形。
let sj = paper.path("M 0,0 L100,100 L100,0 'Z'")
還可以繪制文字,如果需要換行,使用 \n 。
文字語法:paper.text(x,y,text)
(x,y)是文字坐標,text是要繪制的文字。
3.3、設置屬性
圖形繪制之后,我們通常會添加stroke、fill、stroke-width等讓圖形更美觀,Raphael使用attr給圖形設置屬性。
使用語法:circle.attr({"屬性名","屬性值","屬性名","屬性值",...})
如果只有屬性名沒有屬性值,則是獲取屬性,如果有屬性值,則是設置屬性。
注意:如果只設置一個屬性時,可以省略‘{}’。如:rect.attr('fill','pink')
eg:給上邊的矩形添加邊框和背景色。
<div id="box"></div>
<script>
var paper = Raphael("box",300,300)
let rect = paper.rect(100,100,150,200)
rect.attr({'fill':'red','stroke':'blue','stroke-width':'10'})
</script>
3.4、添加事件
RaphaelJS一般具有以下事件:
click、dblclick、drag、hide、hover、mousedown、mouseout、mouseup、mouseover等以及對應的解除事件,只要在前面加上“un”就可以了(unclick、undblclick)。
使用語法:
obj.click(function(){
//需要操作的內容
})
3.5、添加動畫
animate為指定圖形添加動畫并執行。
使用語法:
obj.animate({
"屬性名1":屬性值1,
"屬性名2":屬性值2,
...
},time,type)
屬性名和屬性值就根據你想要的動畫類型加就ok。
time:動畫所需時間。
type:指動畫緩動類型。常用值有:
eg:點擊矩形,矩形緩緩變大。
<div id="box"></div>
<script>
var paper = Raphael("box",800,500)
let rect = paper.rect(100,100,150,100)
rect.attr({'fill':'red','stroke':'blue','stroke-width':'10'})
rect.attr('fill','pink')
rect.click(function(){
rect.animate({
"width":300,
"height":300
},1000,"bounce")
})
</script>
復制上邊的代碼,分別在各個瀏覽器和低版本IE瀏覽器運行,發現都可以正常運行。SVG的動畫庫挺多了,我們介紹了拉斐爾,有興趣的小伙伴可以自行找找其他庫。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。