當前位置:首頁 > 科技 > 正文

html5 canvas動畫?canvas動畫特效

html5 canvas動畫?canvas動畫特效

大家好,今天來為大家解答html5 canvas動畫這個問題的一些問題點,包括canvas動畫特效也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現在讓我們一起來...

大家好,今天來為大家解答html5 canvas動畫這個問題的一些問題點,包括canvas動畫特效也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現在讓我們一起來看看吧!如果解決了您的問題,還望您關注下本站哦,謝謝~

如何使用html5與css3完成google涂鴉動畫

知道如何使用CSS3動畫比知道如何使用<canvas>元素更重要:因為瀏覽器能夠優化那些元素的性能(通常是他們的樣式,比如CSS),而我們使用canvas自定義畫出來的效果卻不能被優化。原因又在于,瀏覽器使用的硬件主要取決于顯卡的能力。目前,瀏覽器沒有給予我們直接訪問顯卡的權力,比如,每一個繪畫操作都不得不在瀏覽器中先調用某些函數。1.canvashtml代碼:

代碼如下:

<html><head><metacharset="UTF-8"/><title>AnimationinHTML5usingthecanvaselement</title></head><bodyonload="init();"><canvasid="canvas"width="1000"height="600">Yourbrowserdoesnotsupportthe<code><canvas></code>-element.Pleasethinkaboutupdatingyourbrower!</canvas><divid="controls"><buttontype="button"onclick="speed(-0.1);">Slower</button><buttontype="button"onclick="play(this);">Play</button><buttontype="button"onclick="speed(+0.1)">Faster</button></div></body></html>

js代碼:定義一些變量:

代碼如下:

vardx=5,//當前速率rate=1,//當前播放速度ani,//當前動畫循環c,//畫圖(CanvasContext)w,//汽車[隱藏的](CanvasContext)grassHeight=130,//背景高度carAlpha=0,//輪胎的旋轉角度carX=-400,//x軸方向上汽車的位置(將被改變)carY=300,//y軸方向上汽車的位置(將保持為常量)carWidth=400,//汽車的寬度carHeight=130,//汽車的高度tiresDelta=15,//從一個輪胎到最接近的汽車底盤的距離axisDelta=20,//汽車底部底盤的軸與輪胎的距離radius=60;//輪胎的半徑

為了實例化汽車canvas(初始時被隱藏),我們使用下面的自執行的匿名函數

代碼如下:

(function(){varcar=document.createElement('canvas');//創建元素car.height=carHeight+axisDelta+radius;//設置高度car.width=carWidth;//設置寬度w=car.getContext('2d');})();

點擊“Play”按鈕,通過定時重復執行“畫汽車”操作,來模擬“幀播放”功能:

代碼如下:

functionplay(s){//參數s是一個buttonif(ani){//如果ani不為null,則代表我們當前已經有了一個動畫clearInterval(ani);//所以我們需要清除它(停止動畫)ani=null;s.innerHTML='Play';//重命名該按鈕為“播放”}else{ani=setInterval(drawCanvas,40);//我們將設置動畫為25fps[幀每秒],40/1000,即為二十五分之一s.innerHTML='Pause';//重命名該按鈕為“暫?!眪}

加速,減速,通過以下方法,改變移動距離的大小來實現:

代碼如下:

functionspeed(delta){varnewRate=Math.max(rate+delta,0.1);dx=newRate/rate*dx;rate=newRate;}頁面加載的初始化方法://initfunctioninit(){c=document.getElementById('canvas').getContext('2d');drawCanvas();}

主調方法:

代碼如下:

functiondrawCanvas(){c.clearRect(0,0,c.canvas.width,c.canvas.height);//清除Canvas(已顯示的),避免產生錯誤c.save();//保存當前坐標值以及狀態,對應的類似“push”操作drawGrass();//畫背景c.translate(carX,0);//移動起點坐標drawCar();//畫汽車(隱藏的canvas)c.drawImage(w.canvas,0,carY);//畫最終顯示的汽車c.restore();//恢復Canvas的狀態,對應的是類似“pop”操作carX+=dx;//重置汽車在X軸方向的位置,以模擬向前走carAlpha+=dx/radius;//按比例增加輪胎角度if(carX>c.canvas.width){//設置某些定期的邊界條件carX=-carWidth-10;//也可以將速度反向為dx*=-1;}}

畫背景:

代碼如下:

functiondrawGrass(){//創建線性漸變,前兩個參數為漸變開始點坐標,后兩個為漸變結束點坐標vargrad=c.createLinearGradient(0,c.canvas.height-grassHeight,0,c.canvas.height);//為線性漸變指定漸變色,0表示漸變起始色,1表示漸變終止色grad.addColorStop(0,'#33CC00');grad.addColorStop(1,'#66FF22');c.fillStyle=grad;c.lineWidth=0;c.fillRect(0,c.canvas.height-grassHeight,c.canvas.width,grassHeight);}

畫車身:

代碼如下:

functiondrawCar(){w.clearRect(0,0,w.canvas.width,w.canvas.height);//清空隱藏的畫板w.strokeStyle='#FF6600';//設置邊框色w.lineWidth=2;//設置邊框的寬度,單位為像素w.fillStyle='#FF9900';//設置填充色w.beginPath();//開始繪制新路徑w.rect(0,0,carWidth,carHeight);//繪制一個矩形w.stroke();//畫邊框w.fill();//填充背景w.closePath();//關閉繪制的新路徑drawTire(tiresDelta+radius,carHeight+axisDelta);//我們開始畫第一個輪子drawTire(carWidth-tiresDelta-radius,carHeight+axisDelta);//同樣的,第二個}

畫輪胎:

代碼如下:

functiondrawTire(x,y){w.save();w.translate(x,y);w.rotate(carAlpha);w.strokeStyle='#3300FF';w.lineWidth=1;w.fillStyle='#0099FF';w.beginPath();w.arc(0,0,radius,0,2*Math.PI,false);w.fill();w.closePath();w.beginPath();w.moveTo(radius,0);w.lineTo(-radius,0);w.stroke();w.closePath();w.beginPath();w.moveTo(0,radius);w.lineTo(0,-radius);w.stroke();w.closePath();w.restore();}

由于原理簡單,并且代碼中作了詳細注釋,這里就不一一講解!2.CSS3你將看到我們未通過一句JS代碼就完全實現了和上面一樣的動畫效果:HTML代碼:

代碼如下:

<html><head><metacharset="UTF-8"/><title>AnimationsinHTML5usingCSS3animations</title></head><body><divid="container"><divid="car"><divid="chassis"></div><divid="backtire"><div></div><div></div></div><divid="fronttire"><div></div><div></div></div></div><divid="grass"></div></div><footer></footer></body></html>CSS代碼:body{padding:0;margin:0;}

定義車身與輪胎轉到的動畫(你會看到基本每一個動畫都有四個版本的定義:原生版本/webkit【Chrome|Safari】/ms【為了向后兼容IE10】/moz【FireFox】)

代碼如下:

/*定義動畫:從-400px的位置移動到1600px的位置*/@keyframescarAnimation{0%{left:-400px;}/*指定初始位置,0%等同于from*/100%{left:1600px;}/*指定最終位置,100%等同于to*/}/*SafariandChrome*/@-webkit-keyframescarAnimation{0%{left:-400px;}100%{left:1600px;}}/*Firefox*/@-moz-keyframescarAnimation{0%{left:-400;}100%{left:1600px;}}/*IE暫不支持,此處定義是為了向后兼容IE10*/@-ms-keyframescarAnimation{0%{left:-400px;}100%{left:1600px;}}@keyframestyreAnimation{0%{transform:rotate(0);}100%{transform:rotate(1800deg);}}@-webkit-keyframestyreAnimation{0%{-webkit-transform:rotate(0);}100%{-webkit-transform:rotate(1800deg);}}@-moz-keyframestyreAnimation{0%{-moz-transform:rotate(0);}100%{-moz-transform:rotate(1800deg);}}@-ms-keyframestyreAnimation{0%{-ms-transform:rotate(0);}100%{-ms-transform:rotate(1800deg);}}#container{position:relative;width:100%;height:600px;overflow:hidden;/*這個很重要*/}#car{position:absolute;/*汽車在容器中采用絕對定位*/width:400px;height:210px;/*汽車的總高度,包括輪胎和底盤*/z-index:1;/*讓汽車在背景的上方*/top:300px;/*距頂端的距離(y軸)*/left:50px;/*距左側的距離(x軸)*//*以下內容賦予該元素預先定義的動畫及相關屬性*/-webkit-animation-name:carAnimation;/*名稱*/-webkit-animation-duration:10s;/*持續時間*/-webkit-animation-iteration-count:infinite;/*迭代次數-無限次*/-webkit-animation-timing-function:linear;/*播放動畫時從頭到尾都以相同的速度*/-moz-animation-name:carAnimation;/*名稱*/-moz-animation-duration:10s;/*持續時間*/-moz-animation-iteration-count:infinite;/*迭代次數-無限次*/-moz-animation-timing-function:linear;/*播放動畫時從頭到尾都以相同的速度*/-ms-animation-name:carAnimation;/*名稱*/-ms-animation-duration:10s;/*持續時間*/-ms-animation-iteration-count:infinite;/*迭代次數-無限次*/-ms-animation-timing-function:linear;/*播放動畫時從頭到尾都以相同的速度*/animation-name:carAnimation;/*名稱*/animation-duration:10s;/*持續時間*/animation-iteration-count:infinite;/*迭代次數-無限次*/animation-timing-function:linear;/*播放動畫時從頭到尾都以相同的速度*/}/*車身*/#chassis{position:absolute;width:400px;height:130px;background:#FF9900;border:2pxsolid#FF6600;}/*輪胎*/.tire{z-index:1;/*同上,輪胎也應置于背景的上方*/position:absolute;bottom:0;border-radius:60px;/*圓半徑*/height:120px;/*2*radius=height*/width:120px;/*2*radius=width*/background:#0099FF;/*填充色*/border:1pxsolid#3300FF;-webkit-animation-name:tyreAnimation;-webkit-animation-duration:10s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-moz-animation-name:tyreAnimation;-moz-animation-duration:10s;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear;-ms-animation-name:tyreAnimation;-ms-animation-duration:10s;-ms-animation-iteration-count:infinite;-ms-animation-timing-function:linear;animation-name:tyreAnimation;animation-duration:10s;animation-iteration-count:infinite;animation-timing-function:linear;}#fronttire{right:20px;/*設置右邊的輪胎距離邊緣的距離為20*/}#backtire{left:20px;/*設置左邊的輪胎距離邊緣的距離為20*/}#grass{position:absolute;/*背景絕對定位在容器中*/width:100%;height:130px;bottom:0;/*讓背景色線性漸變,bottom,表示漸變的起始處,第一個顏色值是漸變的起始值,第二個顏色值是終止值*/background:linear-grdaient(bottom,#33CC00,#66FF22);background:-webkit-linear-gradient(bottom,#33CC00,#66FF22);background:-moz-linear-gradient(bottom,#33CC00,#66FF22);background:-ms-linear-gradient(bottom,#33CC00,#66FF22);}.hr,.vr{position:absolute;background:#3300FF;}.hr{height:1px;width:100%;/*輪胎的水平線*/left:0;top:60px;}.vr{width:1px;height:100%;/*輪胎的垂直線*/left:60px;top:0;}

3.JQuery與CSS3這是一個效果與兼容性俱佳的方式(特別對于IE9暫不支持CSS3而言)HTML代碼(可以看到與CSS3中的HTML代碼并無不同):

代碼如下:

<html><head><metacharset="UTF-8"/><title>AnimationsinHTML5usingCSS3animations</title></head><body><divid="container"><divid="car"><divid="chassis"></div><divid="backtire"><div></div><div></div></div><divid="fronttire"><div></div><div></div></div></div><divid="grass"></div></div><footer></footer></body></html>CSS:<style>body{padding:0;margin:0;}#container{position:relative;width:100%;height:600px;overflow:hidden;/*這個很重要*/}#car{position:absolute;/*汽車在容器中采用絕對定位*/width:400px;height:210px;/*汽車的總高度,包括輪胎和底盤*/z-index:1;/*讓汽車在背景的上方*/top:300px;/*距頂端的距離(y軸)*/left:50px;/*距左側的距離(x軸)*/}/*車身*/#chassis{position:absolute;width:400px;height:130px;background:#FF9900;border:2pxsolid#FF6600;}/*輪胎*/.tire{z-index:1;/*同上,輪胎也應置于背景的上方*/position:absolute;bottom:0;border-radius:60px;/*圓半徑*/height:120px;/*2*radius=height*/width:120px;/*2*radius=width*/background:#0099FF;/*填充色*/border:1pxsolid#3300FF;-o-transform:rotate(0deg);/*旋轉(單位:度)*/-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);}#fronttire{right:20px;/*設置右邊的輪胎距離邊緣的距離為20*/}#backtire{left:20px;/*設置左邊的輪胎距離邊緣的距離為20*/}#grass{position:absolute;/*背景絕對定位在容器中*/width:100%;height:130px;bottom:0;/*讓背景色線性漸變,bottom,表示漸變的起始處,第一個顏色值是漸變的起始值,第二個顏色值是終止值*/background:linear-grdaient(bottom,#33CC00,#66FF22);background:-webkit-linear-gradient(bottom,#33CC00,#66FF22);background:-moz-linear-gradient(bottom,#33CC00,#66FF22);background:-ms-linear-gradient(bottom,#33CC00,#66FF22);}.hr,.vr{position:absolute;background:#3300FF;}.hr{height:1px;width:100%;/*水平線*/left:0;top:60px;}.vr{width:1px;height:100%;/*垂直線*/left:60px;top:0;}</style>

JS代碼:首先引入在線API:

代碼如下:

<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

實現動畫代碼(相當簡潔):

代碼如下:

<script>$(function(){varrot=0;varprefix=$('.tire').css('-o-transform')?'-o-transform':($('.tire').css('-ms-transform')?'-ms-transform':($('.tire').css('-moz-transform')?'-moz-transform':($('.tire').css('-webkit-transform')?'-webkit-transform':'transform')));varorigin={/*設置我們的起始點*/left:-400};varanimation={/*該動畫由jQuery執行*/left:1600/*設置我們將移動到的最終位置*/};varrotate=function(){/*該方法將被旋轉的輪子調用*/rot+=2;$('.tire').css(prefix,'rotate('+rot+'deg)');};varoptions={/*將要被jQuery使用的參數*/easing:'linear',/*指定速度,此處只是線性,即為勻速*/duration:10000,/*指定動畫持續時間*/complete:function(){$('#car').css(origin).animate(animation,options);},step:rotate};options.complete();});</script>

如何用HTML5實現圖片轉圈的動畫效果

canvas百度下不就知道了,問毛線問

HTML5動畫有什么用途

html5動畫主要服務對象還是給予web的應用,并不會對全部app開發造成威脅,這樣有利于不同類型應用使用不同的開發方式,靈活性更強。利用HTML5開發移動應用的優點主要有以下幾點:

1.離線緩存為HTML5開發移動應用提供了基礎HTML5WebStorageAPI可以看做是加強版的cookie,不受數據大小限制,有更好的彈性以及架構,可以將數據寫入到本機的ROM中,還可以在關閉瀏覽器后再次打開時恢復數據,以減少網絡流量。同時,這個功能算得上是另一個方向的后臺“操作記錄”,而不占用任何后臺資源,減輕設備硬件壓力,增加運行流暢性。

2.音頻視頻自由嵌入,多媒體形式更為靈活原生開發方式對于文字和音視頻混排的多媒體內容處理相對麻煩,需要拆分開文字、圖片、音頻、視頻,解析對應的URL并分別用不同的方式處理。HTML5在這個方面完全不受限制,可以完全放在一起進行處理。

3.地理定位,隨時隨地分享位置充分發揮移動設備對定位上的優勢,推動LBS應用發展??梢跃C合使用GPS、wifi、手機等方式讓定位更為精準、靈活。地理位置定位,讓定位和導航不再專屬導航軟件,地圖也不用下載非常大的地圖包,可以通過緩存來解決,到哪兒下哪兒,更靈活。

4.Canvas繪圖,提升移動平臺的繪圖能力使用CanvasAPI可以簡單繪制熱點圖收集用戶體驗資料支持圖片的移動、旋轉、縮放等常規編輯Canvas–2D的繪圖功能支持Canvas3D–3D的繪圖功能支持SVG–向量圖支援

5.專為移動平臺定制的表單元素瀏覽器中出現的html5表單元素與對應的鍵盤:只需要簡單的聲明<inputtype=”email”>即可完成對不同樣式鍵盤的調用,簡捷方便。

6.豐富的交互方式支持提升互動能力:拖拽、撤銷歷史操作、文本選擇等Transition–組件的移動效果Transform–組件的變形效果Animation–將移動和變形加入動畫支持

7.HTML5使用上的優勢更低的開發及維護成本;使頁面變得更小,減少了用戶不必要的支出;而且,性能更好使耗電量更低;方便升級,打開即可使用最新版本,免去重新下載升級包的麻煩,使用過程中就直接更新了離線緩存。

8.CSS3視覺設計師的輔助利器CSS3支持了字體的嵌入、版面的排版,以及最令人印象深刻的動畫功能。Selector–更有彈性的選擇器Webfonts–嵌入式字體Layout–多樣化的排版選擇Stlyingradiusgradientshadow–圓角、漸變、陰影Borderbackground–邊框的背景支持使用CSS3來完成部分視覺工作,載入速度快,節省代碼及圖片,也為用戶節約了帶寬。

9.實時通訊以往網站由于HTTP協議以及瀏覽器的設計,實時的互動性相當的受限,只能使用一些技巧來「仿真」實時的通訊效果,但HTML5提供了完善的實時通訊支持。

10.檔案以及硬件支持不知道大家有沒有發現,在Gmail等新的網頁程序當中,已經可以透過拖拉的方式將檔案作為郵件附件?這就是HTML5檔案的功能中的Drag’nDrop和FileAPI。

11.語意化語意化的網絡是可以讓計算機能夠更加理解網頁的內容,對于像是搜索引擎的優化(SEO)或是推薦系統可以有很大的幫助。

12.雙平臺融合的app開發方式,提高工作效率依照目前iPhone/Android迅速提升市占率的情勢來看,未來如果想要在先進的智慧型手機上撰寫應用程式,要不是選擇使用Objective-C+CocoaTouchFramework撰寫iPhone/iPad應用程式,就是選擇Java+AndroidFramework撰寫

怎樣用html5做出翻頁的效果

對!html5的動畫效果是用(js)jQuery+css3做的!html5繪圖是用HTML5Canvas畫圖標簽加上API做的!

HTML5用canvas怎么實現動畫效果

HTML5<canvas>元素用于圖形的繪制,通過腳本(通常是JavaScript)來完成。<canvas>標簽只是圖形容器,您必須使用腳本來繪制圖形。你可以通過多種方法使用canvas繪制路徑,盒、圓、字符以及添加圖像。

好了,文章到此結束,希望可以幫助到大家。

主站蜘蛛池模板: 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 久久综合国产乱子伦精品免费| 欧美va亚洲va国产综合| 久久香综合精品久久伊人| 欧美日韩亚洲综合在线| 一本一本久久A久久综合精品| 国产综合久久久久| 久久综合亚洲色一区二区三区 | 亚洲综合视频在线| 中文自拍日本综合| 色欲香天天天综合网站| 激情综合婷婷色五月蜜桃| 丁香五月婷婷综合激情在线 | 精品国产第一国产综合精品| 亚洲欧美国产日产综合不卡| 国产欧美日韩综合精品一区二区| 亚洲欧美综合中文| 色妞色综合久久夜夜| 中文字幕亚洲综合小综合在线| 亚洲欧美乱综合图片区小说区| 久久婷婷五月综合色99啪ak| 国产精品无码久久综合网| 一本色道久久综合| 国产欧美精品一区二区色综合| 欧美亚洲综合另类成人| 狠狠色色综合网站| 色婷婷综合缴情综免费观看| 亚洲狠狠婷婷综合久久蜜芽| 色综合合久久天天给综看| 色与欲影视天天看综合网| 狠狠色丁香婷婷久久综合| 99久久国产综合精品网成人影院| 国产成人亚洲综合无码 | 久久婷婷五月综合成人D啪| 天天做天天爱天天综合网2021| 伊伊人成亚洲综合人网7777 | 热综合一本伊人久久精品| 丁香五月婷婷综合激情在线| 色综合天天综合婷婷伊人| 亚洲 欧美 国产 动漫 综合| 日韩欧美亚洲综合久久|