1. 程式人生 > >html5 用canvas實現圖片自動滑動切換

html5 用canvas實現圖片自動滑動切換

轉自:http://blog.csdn.net/iamke1987/article/details/9886707

圖片自動滑動效果很多網站都要用,最近在學html5就拿這個練練手,發現用canvas實現起來其實很簡單。程式碼比較粗糙,有很多改進的地方,不過還是先記錄一下。

一. html檔案

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4.     <metacharset="utf-8"/>
  5.     <title>HTML5 Images Slider</title>
  6.     <script
    src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
  7.     <scriptsrc="test.js"></script>
  8.     <linkhref="style.css"rel="stylesheet"/>
  9. </head>
  10. <body>
  11. <divid="container">
  12.     <canvasid="imgs"width="500"height="300"onclick="canvasClick()"></canvas>
  13. </div
    >
  14. <divclass="imgGallery">
  15.     <spanclass="cover"><imgsrc="1.jpg"id="img1"width="125"height="150"onclick="iconClick(this.id)"></span>
  16.     <imgsrc="2.jpg"id="img2"width="125"height="150"onclick="iconClick(this.id)">
  17.     <imgsrc="3.jpg"id="img3"width="125"height="150"onclick
    ="iconClick(this.id)">
  18.     <imgsrc="4.jpg"id="img4"width="125"height="150"onclick="iconClick(this.id)">
  19. </div>
  20. </body>
  21. <footer>
  22. </footer>
  23. </html>

二. js檔案,名字test.js

[javascript] view plaincopy
  1. var images = new Array();  
  2. var cIndex = 0;  
  3. var speed = 5;  
  4. var context;  
  5. var canvas;  
  6. var currentImage;  
  7. var width=300;  
  8. var height=300;  
  9. var stopX = 95;  
  10. var stopY = 0;  
  11. var autoTimeout;  
  12. var manuTimeout;  
  13. var interval;  
  14. var img1;  
  15. var img2;  
  16. var img3;  
  17. var img4;  
  18. var timeoutInterval = 5;  
  19. function slideImage(id,x,y,imgObj){  
  20.     this.speed = speed;  
  21.     this.preImage = null;  
  22.     this.nextImage = null;  
  23.     this.imgObj=imgObj;  
  24.     this.x=x;  
  25.     this.y=y;  
  26.     this.direction="right";  
  27.     this.id = id;  
  28. }  
  29. function buttonNext(x,y,bwidth,bheight){  
  30.     this.x = x;  
  31.     this.y = y;  
  32.     this.width = bwidth;  
  33.     this.height = bheight;  
  34. }  
  35. $(document).ready(  
  36.     function(){  
  37.         InitImages();  
  38.         canvas = document.getElementById("imgs");  
  39.         context = canvas.getContext("2d");  
  40.         //移動圖片
  41.         context.drawImage(currentImage.imgObj,currentImage.x,currentImage.y,width,height);  
  42.         context.drawImage(currentImage.preImage.imgObj,currentImage.preImage.x,currentImage.preImage.y,width,height);  
  43.         context.drawImage(currentImage.nextImage.imgObj,currentImage.nextImage.x,currentImage.nextImage.y,width,height);  
  44.         context.fillStyle="rgba(100,150,185,0.5)";  
  45.         context.fillRect(0,0,100,height);  
  46.         context.fillRect(400,0,100,height);  
  47.         interval = setTimeout("intervalSlide()", 20);  
  48.     }  
  49. );  
  50. function drawFrame(){  
  51.     context.clearRect(0,0,canvas.width,canvas.height);  
  52.     //呼叫beginPath()確保不會接著上次繪製的圖形繪製
  53.     context.beginPath();  
  54.     context.drawImage(currentImage.imgObj,currentImage.x,currentImage.y,width,height);  
  55.     context.drawImage(currentImage.preImage.imgObj,currentImage.preImage.x,currentImage.preImage.y,width,height);  
  56.     context.drawImage(currentImage.nextImage.imgObj,currentImage.nextImage.x,currentImage.nextImage.y,width,height);  
  57.     context.drawImage(currentImage.preImage.preImage.imgObj,currentImage.preImage.preImage.x,currentImage.preImage.preImage.y,width,height);  
  58.     //遮罩
  59.     context.fillStyle="rgba(100,150,185,0.5)";  
  60.     context.fillRect(0,0,100,height);  
  61.     context.fillRect(400,0,100,height);  
  62.     //每一幀的位置變動
  63.     currentImage.x -= speed;  
  64.     currentImage.preImage.x -= speed;  
  65.     currentImage.nextImage.x -= speed;  
  66.     currentImage.preImage.preImage.x -= speed;  
  67.     if(currentImage.x == 200){  
  68.         currentImage.nextImage.x = 500;  
  69.     }  
  70.     //到達指定位置停止變動
  71.     if(currentImage.x != stopX){  
  72.         autoTimeout = setTimeout("drawFrame()",timeoutInterval);  
  73.     }  
  74.     else{  
  75.     }  
  76. }  
  77. function InitImages(){  
  78.     img1 = new slideImage("img1",-200,0,document.getElementById("img1"));  
  79.     img2 = new slideImage("img2",100,0,document.getElementById("img2"));  
  80.     img3 = new slideImage("img3",400,0,document.getElementById("img3"));  
  81.     img4 = new slideImage("img4",700,0,document.getElementById("img4"));  
  82.     img1.preImage = img4;  
  83.     img1.nextImage = img2;  
  84.     img2.preImage= img1;  
  85.     img2.nextImage= img3;  
  86.     img3.preImage=img2;  
  87.     img3.nextImage=img4;  
  88.     img4.preImage = img3;  
  89.     img4.nextImage = img1;  
  90.     currentImage=img2;  
  91.     hilightSelectedImg();  
  92. }  
  93. function canvasClick(){  
  94.     currentImage = currentImage.nextImage;  
  95.     manuTimeout = setTimeout("drawFrame()",timeoutInterval);  
  96. }  
  97. function intervalSlide(){  
  98. 相關推薦

    html5 canvas實現圖片自動滑動切換

    轉自:http://blog.csdn.net/iamke1987/article/details/9886707 圖片自動滑動效果很多網站都要用,最近在學html5就拿這個練練手,發現用canvas實現起來其實很簡單。程式碼比較粗糙,有很多改進的地方,不過還是先記錄一

    HTML5 file API加canvas實現圖片前端JS壓縮並上傳 (轉載)

    www. 手機 回調 pre lan 瀏覽器中 rdp 效果 二進制 一、圖片上傳前端壓縮的現實意義 對於大尺寸圖片的上傳,在前端進行壓縮除了省流量外,最大的意義是極大的提高了用戶體驗。 這種體驗包括兩方面: 由於上傳圖片尺寸比較小,因此上傳速度會比較快,交互會更

    js實現圖片自動切換

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>圖片切換</title>     <sty

    純css3實現圖片自動切換

    實現圖片自動切換需要用到的主要是css3裡面的過渡這一節的內容。 大致思路是這樣的: 1、將圖片設定為li的背景圖片; 2、規定一個@keyframes的規則使得圖片按照這個規則進行切換; 3、設定每

    原生JS實現 圖片輪播切換 功能

    效果如圖:程式碼如下:<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title

    HTML5 canvas實現圖片拉伸、壓縮與裁剪

    前言: 我們在網頁中經常會用到圖片展示,通常情況下會給一個固定的寬高來顯示這個圖片,然而從伺服器端上傳的圖片大小是不確定的,如果直接按預設填充這個框有時候就會特別醜orz。作為一個完(wai)美(mao)主(xie)義(hui)者,讓圖片們儘可能優美

    HTML5+canvas實現圖片的壓縮上傳

    1.圖片上傳輸入框<input type="file" name="" class="fileUpload" accept="image/*" capture="camera"/>2.上面時候觸發onchange$('.fileUpload').on('chang

    android學習——實現歡迎介面圖片動畫滑動切換

    剛學習的時候想做兩個activity之間滑動切換的效果,就查了幾個部落格寫了之前的一篇“activity實現動畫切換”,現在看來這個功能好水,難看且基本不會有用到的。 但第一次啟動APP歡迎介面滑動進入的效果很常見,所以就查資料寫了這麼一個。 首先要了解一下ViewPa

    html5canvas生成圖片並儲存到本地

    前端的程式碼: function drawArrow(angle) { //Init canvas var canvas = $('#cv_Arrow')[0]; var context = canvas.getContext('2d'); var width =

    原生js+css3實現圖片自動切換圖片輪播

    運用CSS3transition及opacity屬性 製作圖片輪播動畫 自己這兩天根據用js來控制觸發CSS3中transition屬性,從而寫出來的以CSS3動畫為基礎,js控制過程的圖片輪播

    Android中實現類似探探中圖片左右滑動切換效果

          偶然之間發現探探的左右滑動的圖片挺好玩,試著去做了下,再到後來,看到許多大神也推出了同樣仿探探效果的部落格,從頭到尾閱讀下來,寫得通俗易懂,基本上沒什麼問題。於是,實現仿探探效果的想法再次出現在腦海中。那麼,還猶豫什麼,趁熱來一發吧!就這麼愉快地決定了。

    HTML5canvas圖片實現截圖DEMO

    首先   做一個  要截圖的容器,也就是包頁面的div, <div id = 'shareContent'> </div> <div id='img'></div> 再容器中正常寫入內容,如果頁面中有圖片元素的情況下,圖片內容

    CSS實現圖片幻燈片式的切換(所有圖片輪流顯示,每次顯示一張)

    HTML 部分<div id="img-wrap"> <img src="img/1.jpg"> <img src="img/2.jpg"> <img src="img/3.jpg"> <i

    JavaScript實現點選迴圈切換圖片

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>單擊迴圈切換圖片</title><script>var i = 1;func

    趙雅智_運用Bitmap和Canvas實現圖片顯示,縮小,旋轉,水印

    bitmap raw 圖形 res efault ast bmp 運用 放置 上一篇已經介紹了Android種Bitmap和Canvas的使用,以下我們來寫一個詳細實例 http://blog.csdn.net/zhaoyazhi2129/article/details

    ubuntu下expect實現密碼自動輸入

    echo 遠程 shell ## 告訴 linux inux word linux下 每次筆記本一開機啟動,總會連用不著且礙事的觸摸板也一塊啟動。便想寫個腳本,讓電腦啟動時關閉觸摸板。(當然,我想更好的辦法是,修改系統啟動時的加載模塊,讓觸摸板不自動加載,但是目前還不知道用

    微信小程序滾動Tab實現左右可滑動切換

    -h RR -i lse img url 判斷 active AR --------------------------------------------------------wxml-------------------------------------------

    學習 | canvas實現圖片懶加載 && 下滑底部加載

    window back mov code 圖片 wim .com rod pro   用canvas實現圖片的懶加載並且下滑到據底部60px的時候再次加載數據,模仿UC瀏覽器的新聞加載。   完整代碼:https://github.com/dirkhe1051931999

    js實現圖片(小球)在屏幕上上下左右移動

    tin doctype ctx eight doc itl 左右 idt ext <html> <head> <title>Document</title> </head> <body style

    【Unity】Shader實現圖片的區域遮罩,支援半透明,實現地圖動態上色功能

    一個專案,做世界地圖時,希望未開啟的地塊是線稿,新地塊開啟時,做一個上色處理。 想到的方案就是:上了色的彩圖蓋線上稿上,然後用mask 控制彩圖的區域性顯隱。 網上找了一個,可以半透明遮罩的shader:https://www.jianshu.com/p/1d9d439c28fa 要控制不同區塊