成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

產品經理:你能不能用Div給我畫條龍?

開發 前端
本例里使用div繪制大量的dom,僅為闡述思路,沒考慮性能。利用一些js游戲引擎,比如pixi等,可以很方便的全部交由canvas去繪制并添加交互。

 [[400136]]

本文轉載自微信公眾號「大帥老猿」,作者大帥搞全棧。轉載本文請聯系大帥老猿公眾號。

事情是這樣的,前天上午產品經理說想要做一個心愿墻,問我能不能行

 
我心想,這太容易了,但為了多摸一天魚,我說還是有點挑戰的
 
結果下午,產品經理和設計師就給我發來了設計參考

image.png
 
他們說,心愿墻的設計大致是這樣的,每個用戶的心愿都是一個氣泡,而客戶的品牌是”龍“,我們希望在前端頁面里用氣泡呈現一個龍形的設計,每個氣泡都會浮動,鼠標移上去變大,點擊后展示心愿詳情。
 
當時我的內心是這樣的

[[400137]]

 
image.png
 

我摸魚的一天要泡湯了嗎?

誰都不能阻止我摸魚

但首先要解決最核心的問題

龍從哪里來?

設計師說了,他可以給我一條由氣泡組成的龍的設計稿,我說那等你設計稿給我,我再研究把。結果他說,已經有了,你就用這個吧

image.png

我的刀呢?

互動問題

請在評論區留下你遇到過的最奇葩的需求

拆解需求

遇到不靠譜的產品經理和設計師,前端工程師真是慘。我們頂著最后交付成品的巨鍋,所有deadline感覺都只是用來壓榨前端工程師的。

我們只能靠自己,因為

誰都不能阻止我摸魚

  • 需求1:有鼠標交互效果(太簡單)
  • 需求2:氣泡要浮動(css動畫,easy)
  • 需求3:氣泡組成一條龍

此時我腦海里響起這首爛大街的歌

左邊跟我一起畫個龍,在你右邊畫一道彩虹~

誒,畫個龍

用什么畫,canvas

canvas能獲得指定區域的像素點陣

臥槽,有招兒了

代碼時間

先用圖片搜索找一張龍的剪影

image.png

image.png

將圖片繪制到canvas中

  1. var canvas = document.getElementById("canvas"); 
  2. var ctx = canvas.getContext("2d"); 
  3.  
  4. var image = new Image(); 
  5. image.src = "dragon.jpg"
  6. image.onload = function(){ 
  7.         canvas.width = image.width; 
  8.         canvas.height = image.height; 
  9.  
  10.         ctx.drawImage(image,0,0); 

獲取并裁剪畫布的點陣信息

  1. var imageData = ctx.getImageData(0,0,image.width,image.height).data; 
  2. ctx.fillStyle = "#ffffff"
  3. ctx.fillRect(0,0,image.width,image.height); 
  4.  
  5. var gap = 6; 
  6.  
  7. for (var h = 0; h < image.height; h+=gap) { 
  8.     for(var w = 0; w < image.width; w+=gap){ 
  9.             var position = (image.width * h + w) * 4; 
  10.             var r = imageData[position], g = imageData[position + 1], b = imageData[position + 2]; 
  11.  
  12.             if(r+g+b==0){ 
  13.                     ctx.fillStyle = "#000"
  14.                     ctx.fillRect(w,h,4,4); 
  15.                 } 
  16.     } 

現在我們獲得了這樣一條龍的點陣信息

image.png

通過點陣信息生成氣泡dom

  1. var dragonContainer = document.getElementById("container"); 
  2. var dragonScale = 2; 
  3.  
  4. for (var h = 0; h < image.height; h+=gap) { 
  5.     for(var w = 0; w < image.width; w+=gap){ 
  6.             var position = (image.width * h + w) * 4; 
  7.             var r = imageData[position], g = imageData[position + 1], b = imageData[position + 2]; 
  8.  
  9.             if(r+g+b==0){ 
  10.                     var bubble = document.createElement("img"); 
  11.                     bubble.src = "bubble.png"
  12.                     bubble.setAttribute("class","bubble"); 
  13.  
  14.                     var bubbleSize = Math.random()*10+20; 
  15.                     bubble.style.left = (w*dragonScale-bubbleSize/2) + "px"
  16.                     bubble.style.top = (h*dragonScale-bubbleSize/2) + "px"
  17.                     bubble.style.width = bubble.style.height = bubbleSize+"px"
  18.                     bubble.style.animationDuration = Math.random()*6+4 + "s"
  19.  
  20.                     dragonContainer.appendChild(bubble); 
  21.                 } 
  22.     } 

image.png

開心摸魚吧

本例里使用div繪制大量的dom,僅為闡述思路,沒考慮性能。利用一些js游戲引擎,比如pixi等,可以很方便的全部交由canvas去繪制并添加交互。

 原文鏈接:https://mp.weixin.qq.com/s/iE1vK6hA4IUYsNPpreTKew

 

責任編輯:武曉燕 來源: 大帥老猿
相關推薦

2013-04-19 10:42:02

打車軟件大數據

2012-05-09 09:55:17

LINQ

2022-12-09 08:22:26

Gradle編譯運行

2020-12-03 07:39:50

HashMap底層數據

2019-11-21 09:25:23

AI 數據人工智能

2016-05-19 17:10:27

銀行

2021-02-26 21:25:08

比特幣投資貨幣

2022-10-20 08:00:37

機器人ZadigChatOps

2020-10-16 18:33:18

Rust語言前端開發

2025-04-22 08:00:00

2014-06-20 10:00:20

產品經理

2012-05-09 10:08:43

LINQ

2023-04-06 06:55:24

ChatGPTGPT算力

2022-04-24 11:52:04

元宇宙Web3去中心化

2012-06-13 11:01:59

英特爾

2025-01-26 16:01:13

C++靜態成員函數

2023-12-27 08:03:53

Go優化代碼

2020-12-21 15:09:23

人工智能安全人臉識別

2010-04-13 10:02:16

索引

2024-04-26 09:37:43

國產數據庫開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品一区二三区在线观看 | 麻豆成人在线视频 | 亚洲精彩视频在线观看 | 91精品国产91久久久久久最新 | 亚洲图片一区二区三区 | 亚洲欧美成人在线 | 国产精品久久久久久久久久久免费看 | 黄色国产大片 | 亚洲www| 欧美性久久久 | 欧美激情精品久久久久久 | 久久久国产精品 | 伊人精品在线 | 黄色日本视频 | 99精品电影 | 国产日日操| 亚洲欧美精品在线 | 精品国产一区二区国模嫣然 | 91成人在线视频 | 日一区二区 | 久久婷婷麻豆国产91天堂 | 天天干天天草 | 日韩一区二区三区在线看 | 在线播放第一页 | 国产激情视频在线观看 | 黄色国产在线视频 | 色婷婷一区 | 欧美激情精品久久久久久变态 | 国产精品欧美精品日韩精品 | 在线看91| 久久精品一 | 国产一区二区三区在线 | 日韩中文字幕在线视频 | 视频1区2区| 日韩一级 | 欧美精品在欧美一区二区少妇 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 国产乱码精品一区二区三区五月婷 | 亚洲精品久久久一区二区三区 | 亚洲视频在线观看一区二区三区 | 免费黄色大片 |