校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 基于HTML代碼實現圖片碎片化加載功能

基于HTML代碼實現圖片碎片化加載功能

熱門標簽:貴陽ai外呼系統 長春極信防封電銷卡公司 智能電銷機器人廣告語 重慶人工智能電銷機器人報價 強訊外呼系統 電銷外呼線路改不外呼線路 愛巢地圖標注 crm外呼系統好不好 電話機器人批發

今天來實現一個圖片碎片化加載效果,效果如下:

 

我們分為 3 個步驟來實現:

  • 定義 html 結構
  • 拆分圖片
  • 編寫動畫函數

定義html結構

這里只需要一個 canvas 元素就可以了。

<html>
  <body>
    <canvas
      id="myCanvas"
      width="900"
      height="600"
      style="background-color: black;"
    ></canvas>
  </body>
</html>

拆分圖片

這個例子中,我們將圖片按照 10 行 10 列的網格,拆分成 100 個小碎片,這樣就可以對每一個小碎片獨立渲染了。

let image = new Image();
image.src = "https://cdn.yinhengli.com/canvas-example.jpeg";
let boxWidth, boxHeight;
// 拆分成 10 行,10 列
let rows = 10,
  columns = 20,
  counter = 0;

image.onload = function () {
  // 計算每一行,每一列的寬高
  boxWidth = image.width / columns;
  boxHeight = image.height / rows;
  // 循環渲染
  requestAnimationFrame(animate);
};

requestAnimationFrame :告訴瀏覽器,你希望執行一個動畫,并且要求瀏覽器在下次重繪之前調用指定的回調函數更新動畫。

編寫動畫函數

接下來我們編寫動畫函數,讓瀏覽器在每一次重繪前,隨機渲染某個小碎片。

這里的核心是 context.drawImage 方法。

let canvas = document.getElementById("myCanvas");
let context = canvas.getContext("2d");

function animate() {
  // 隨機渲染某個模塊
  let x = Math.floor(Math.random() * columns);
  let y = Math.floor(Math.random() * rows);
  // 核心
  context.drawImage(
    image,
    x * boxWidth,  // canvas 中橫坐標起始位置
    y * boxHeight, // canvas 中縱坐標起始位置
    boxWidth,      // 畫圖的寬度(小碎片圖像的寬)
    boxHeight,     // 畫圖的高度(小碎片圖像的高)
    x * boxWidth,  // 從大圖的 x 坐標位置開始畫圖
    y * boxHeight, // 從大圖的 y 坐標位置開始畫圖
    boxWidth,      // 從大圖的 x 位置開始,畫多寬(小碎片圖像的寬)
    boxHeight      // 從大圖的 y 位置開始,畫多高(小碎片圖像的高)
  );
  counter++;
  // 如果模塊渲染了 90%,就讓整個圖片顯示出來。
  if (counter > columns * rows * 0.9) {
    context.drawImage(image, 0, 0);
  } else {
    requestAnimationFrame(animate);
  }
}

完整代碼

<html>
  <body>
    <canvas
      id="myCanvas"
      width="900"
      height="600"
      style="background-color: black;"
    ></canvas>
    <script>
      let image = new Image();
      image.src = "https://cdn.yinhengli.com/canvas-example.jpeg";
      let canvas = document.getElementById("myCanvas");
      let context = canvas.getContext("2d");
      let boxWidth, boxHeight;
      let rows = 10,
        columns = 20,
        counter = 0;

      image.onload = function () {
        boxWidth = image.width / columns;
        boxHeight = image.height / rows;
        requestAnimationFrame(animate);
      };

      function animate() {
        let x = Math.floor(Math.random() * columns);
        let y = Math.floor(Math.random() * rows);
        context.drawImage(
          image,
          x * boxWidth, // 橫坐標起始位置
          y * boxHeight, // 縱坐標起始位置
          boxWidth, // 圖像的寬
          boxHeight, // 圖像的高
          x * boxWidth, // 在畫布上放置圖像的 x 坐標位置
          y * boxHeight, // 在畫布上放置圖像的 y 坐標位置
          boxWidth, // 要使用的圖像的寬度
          boxHeight // 要使用的圖像的高度
        );
        counter++;
        if (counter > columns * rows * 0.9) {
          context.drawImage(image, 0, 0);
        } else {
          requestAnimationFrame(animate);
        }
      }
    </script>
  </body>
</html>

總結

通過這個 Demo,我們使用了 canvasAPI 實現了圖片的碎片加載效果,是不是特別簡單!

到此這篇關于基于HTML代碼實現圖片碎片化加載功能的文章就介紹到這了,更多相關html圖片碎片化加載內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:保定 內蒙古 山南 吳忠 廣安 陜西 清遠 上海

巨人網絡通訊聲明:本文標題《基于HTML代碼實現圖片碎片化加載功能》,本文關鍵詞  基于,HTML,代碼,實現,圖片,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于HTML代碼實現圖片碎片化加載功能》相關的同類信息!
  • 本頁收集關于基于HTML代碼實現圖片碎片化加載功能的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久人人97超碰com| 欧美一区午夜视频在线观看| 91麻豆精品国产91久久久| 成人av在线播放网站| 免费成人在线播放| 激情图片小说一区| 国产伦精品一区二区三区视频青涩 | 欧美精品一区二区三区一线天视频| av一区二区三区| 欧美视频完全免费看| 国产麻豆视频一区| 国产午夜精品美女毛片视频| 亚洲色图视频网站| 蜜桃av噜噜一区| 91无套直看片红桃| 1024成人网色www| 亚洲一级电影视频| 一本久久精品一区二区| 亚洲素人一区二区| 99久久精品一区| 玉足女爽爽91| 欧美少妇xxx| 亚洲精品国产a| 国产视频亚洲色图| 亚洲国产精品二十页| 色综合久久久久久久久| 日韩国产欧美三级| 国产一区二区美女诱惑| 精品视频999| 国产女人18毛片水真多成人如厕| 亚洲图片你懂的| 精品一区二区三区日韩| 欧美人成免费网站| 久久五月婷婷丁香社区| 中文字幕制服丝袜成人av| 不卡的av电影在线观看| 国产一区视频导航| 黄色精品一二区| 99久久99久久精品免费看蜜桃| 7777精品伊人久久久大香线蕉的 | 欧美一区二区三区播放老司机| 久久久午夜精品| 国产激情91久久精品导航| 国产精品一卡二卡| 美国三级日本三级久久99| 国产精品国产三级国产aⅴ入口 | 91精品国产一区二区三区| 日韩欧美中文字幕一区| 国产精品久久久久永久免费观看 | 欧美大片一区二区| 天天影视涩香欲综合网 | 国产高清亚洲一区| 中文字幕va一区二区三区| 激情综合色综合久久| 日韩欧美亚洲另类制服综合在线| 日韩国产高清在线| 91精品国产91久久久久久一区二区| 亚洲成av人片在线| 91麻豆精品91久久久久久清纯 | 午夜久久久影院| 欧美影院一区二区| 国产在线视视频有精品| 国产精品久久久一本精品| 91小宝寻花一区二区三区| 亚洲另类在线制服丝袜| 91精品国产一区二区三区| 国产毛片一区二区| 一区二区三区日韩在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 国产在线播放一区三区四| 中文欧美字幕免费| 欧洲亚洲国产日韩| 中文字幕不卡的av| 91精品国产麻豆| 欧美性受xxxx黑人xyx| 国产99精品国产| 午夜亚洲福利老司机| 国产精品女主播av| 精品日韩一区二区三区免费视频| 国产一区二区精品久久99| 亚洲国产成人91porn| 亚洲素人一区二区| 亚洲欧洲日韩女同| 久久综合色综合88| 欧美一级爆毛片| 欧美色欧美亚洲另类二区| 色综合久久综合网97色综合| 成人精品gif动图一区| 成人毛片在线观看| 色综合久久99| 欧美视频一区二区三区在线观看| 成人国产精品免费| 本田岬高潮一区二区三区| 国产.欧美.日韩| 91碰在线视频| 欧美日韩在线不卡| 久久久久亚洲蜜桃| 《视频一区视频二区| 一区二区三区欧美视频| 日韩va欧美va亚洲va久久| 蜜臀91精品一区二区三区| 精品在线你懂的| 波波电影院一区二区三区| 欧美日韩电影一区| 欧美—级在线免费片| 亚洲欧美国产三级| 久久国产精品无码网站| 白白色 亚洲乱淫| 欧美欧美午夜aⅴ在线观看| 2020日本不卡一区二区视频| 亚洲免费av网站| 国产成人精品一区二区三区四区| 岛国精品一区二区| 91传媒视频在线播放| 久久精品免视看| 日韩精品一区第一页| 色婷婷狠狠综合| 久久久91精品国产一区二区精品 | 884aa四虎影成人精品一区| 久久久久国产精品厨房| 香蕉影视欧美成人| 91麻豆精品在线观看| 精品99久久久久久| 日产国产欧美视频一区精品| 日本国产一区二区| 亚洲激情自拍视频| 欧美在线免费观看亚洲| 亚洲桃色在线一区| 欧美在线视频不卡| 韩国v欧美v日本v亚洲v| 久久不见久久见中文字幕免费| 欧美一级在线免费| 狠狠色丁香九九婷婷综合五月| 精品sm捆绑视频| 一本大道综合伊人精品热热| 蜜臀精品久久久久久蜜臀 | 理论电影国产精品| 国产精品色一区二区三区| 欧美中文字幕一区二区三区| 久色婷婷小香蕉久久| 亚洲天天做日日做天天谢日日欢| 欧美无砖砖区免费| 一本一道综合狠狠老| 国产精品1区二区.| 另类人妖一区二区av| 一区二区三区四区亚洲| 久久精品日韩一区二区三区| 欧美日韩不卡在线| 99久久精品国产观看| 国产精品91一区二区| 久久99深爱久久99精品| 亚洲v精品v日韩v欧美v专区| 久久精品亚洲国产奇米99| 91精品国产综合久久久久久| av高清久久久| 色视频成人在线观看免| 成人一区在线观看| 国产aⅴ精品一区二区三区色成熟| 亚洲一区精品在线| 日韩精品一级二级| 精品一区二区免费| 国产乱妇无码大片在线观看| 久久国产综合精品| 国产精品亚洲一区二区三区在线 | 欧美日韩成人综合在线一区二区| 91在线云播放| 欧美精品第1页| 欧美一区二区三区免费大片| 91精品国产黑色紧身裤美女| 欧美精品一区二| 国产精品成人在线观看| 性做久久久久久免费观看欧美| 加勒比av一区二区| 91色|porny| 久久蜜桃av一区精品变态类天堂| 亚洲欧洲精品一区二区精品久久久| 亚洲图片欧美综合| 激情av综合网| 色综合久久66| 欧美国产丝袜视频| 午夜激情一区二区| 99精品欧美一区二区三区小说 | 国产精品888| 日韩欧美一级特黄在线播放| 亚洲日本在线看| 丁香激情综合国产| 久久久国产精品麻豆| 精品一区二区免费在线观看| 91.xcao| 美腿丝袜在线亚洲一区| 91精品婷婷国产综合久久| 亚洲成人手机在线| 91久久人澡人人添人人爽欧美| 亚洲欧美在线aaa| gogo大胆日本视频一区| 国产欧美精品一区二区三区四区| 蜜桃视频一区二区三区| 欧美一区二区三级| 九九精品视频在线看| 久久这里都是精品|