92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

有趣的Canvas,你值得擁有!

2020-5-3    seo達人

Canvas 是 HTML5 提供的一個用于展示繪圖效果的標簽. Canvas 原意為畫布, 在 HTML 頁面中用于展示繪圖效果. 最早 Canvas 是蘋果提出的一個方案, 今天已經在大多數瀏覽器中實現。


canvas 的使用領域


游戲

大數據可視化數據

banner 廣告

多媒體

模擬仿真

遠程操作

圖形編輯

判斷瀏覽器是否支持 canvas 標簽


var canvas = document.getElementById('canvas')

if (canvas.getContext) {

console.log('你的瀏覽器支持Canvas!')

} else {

console.log('你的瀏覽器不支持Canvas!')

}

canvas 的基本用法

1、使用 canvas 標簽, 即可在頁面中開辟一格區域,可以設置其寬高,寬高為 300 和 150


<canvas></canvas>

2、獲取 dom 元素 canvas


canvas 本身不能繪圖. 是使用 JavaScript 來完成繪圖. canvas 對象提供了各種繪圖用的 api。


var cas = document.querySelector('canvas')

3、通過 cas 獲取上下文對象(畫布對象!)


var ctx = cas.getContext('2d')

4、通過 ctx 開始畫畫(設置起點 設置終點 連線-描邊 )


ctx.moveTo(10, 10)

ctx.lineTo(100, 100)

ctx.stroke()

繪制線條

設置開始位置: context.moveTo( x, y )

設置終點位置: context.lineTo( x, y )

描邊繪制: context.stroke()

填充繪制: context.fill()

閉合路徑: context.closePath()

canvas 還可以設置線條的相關屬性,如下:


CanvasRenderingContext2D.lineWidth 設置線寬.

CanvasRenderingContext2D.strokeStyle 設置線條顏色.

CanvasRenderingContext2D.lineCap 設置線末端類型,'butt'( 默認 ), 'round', 'square'.

CanvasRenderingContext2D.lineJoin 設置相交線的拐點, 'miter'(默認),'round', 'bevel',

CanvasRenderingContext2D.getLineDash() 獲得線段樣式數組.

CanvasRenderingContext2D.setLineDash() 設置線段樣式.

CanvasRenderingContext2D.lineDashOffset 繪制線段偏移量.

封裝一個畫矩形的方法


function myRect(ctxTmp, x, y, w, h) {

ctxTmp.moveTo(x, y)

ctxTmp.lineTo(x + w, y)

ctxTmp.lineTo(x + w, y + h)

ctxTmp.lineTo(x, y + h)

ctxTmp.lineTo(x, y)

ctxTmp.stroke()

}


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')

myRect(ctx, 50, 50, 200, 200)

繪制矩形

fillRect( x , y , width , height) 填充以(x,y)為起點寬高分別為 width、height 的矩形 默認為黑色

stokeRect( x , y , width , height) 繪制一個空心以(x,y)為起點寬高分別為 width、height 的矩形

clearRect( x, y , width , height ) 清除以(x,y)為起點寬高分別為 width、height 的矩形 為透明

繪制圓弧

繪制圓弧的方法有


CanvasRenderingContext2D.arc()

CanvasRenderingContext2D.arcTo()

6 個參數: x,y(圓心的坐標),半徑,起始的弧度(不是角度 deg),結束的弧度,(bool 設置方向 ! )


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


ctx.arc(100, 100, 100, 0, degToArc(360))

ctx.stroke()


// 角度轉弧度

function degToArc(num) {

return (Math.PI / 180) * num

}

繪制扇形


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


ctx.arc(300, 300, 200, degToArc(125), degToArc(300))


// 自動連回原點

ctx.closePath()

ctx.stroke()


function degToArc(num) {

return (Math.PI / 180) * num

}

制作畫筆

聲明一個變量作為標識

鼠標按下的時候,記錄起點位置

鼠標移動的時候,開始描繪并連線

鼠標抬起的時候,關閉開關

點擊查看效果圖


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


var isDraw = false

// 鼠標按下事件

cas.addEventListener('mousedown', function () {

isDraw = true

ctx.beginPath()

})


// 鼠標移動事件

cas.addEventListener('mousemove', function (e) {

if (!isDraw) {

// 沒有按下

return

}

// 獲取相對于容器內的坐標

var x = e.offsetX

var y = e.offsetY

ctx.lineTo(x, y)

ctx.stroke()

})


cas.addEventListener('mouseup', function () {

// 關閉開關了!

isDraw = false

})

手動涂擦

原理和畫布相似,只不過用的是clearRect()方法。


點擊查看效果圖


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


ctx.fillRect(0, 0, 600, 600)


// 開關

var isClear = false


cas.addEventListener('mousedown', function () {

isClear = true

})


cas.addEventListener('mousemove', function (e) {

if (!isClear) {

return

}

var x = e.offsetX

var y = e.offsetY

var w = 20

var h = 20

ctx.clearRect(x, y, w, h)

})


cas.addEventListener('mouseup', function () {

isClear = false

})

刮刮樂

首先需要設置獎品和畫布,將畫布置于圖片上方蓋住,

隨機設置生成獎品。

當手觸摸移動的時候,可以擦除部分畫布,露出獎品區。

點擊查看效果圖


<div>

<img src="./images/2.jpg" alt="" />

<canvas width="600" height="600"></canvas>

</div>

css


img {

width: 600px;

height: 600px;

position: absolute;

top: 10%;

left: 30%;

}


canvas {

width: 600px;

height: 600px;

position: absolute;

top: 10%;

left: 30%;

border: 1px solid #000;

}

js


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')

var img = document.querySelector('img')

// 加一個遮罩層

ctx.fillStyle = '#ccc'

ctx.fillRect(0, 0, cas.width, cas.height)

setImgUrl()

// 開關

var isClear = false

cas.addEventListener('mousedown', function () {

isClear = true

})

cas.addEventListener('mousemove', function (e) {

if (!isClear) {

return

}

var x = e.offsetX

var y = e.offsetY

ctx.clearRect(x, y, 30, 30)

})

cas.addEventListener('mouseup', function () {

isClear = false

})


function setImgUrl() {

var arr = ['./images/1.jpg', './images/2.jpg', './images/3.jpg', './images/4.jpg']

// 0-3

var random = Math.round(Math.random() * 3)

img.src = arr[random]

}

更多demo,請查看 github.com/Michael-lzg…


日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
中文字幕一区二区三区蜜月| 免费人成精品欧美精品| 最近2019好看的中文字幕免费| 天涯成人国产亚洲精品一区av| 国产精品99久久久久久久vr| 在线播放日本| 成人激情视频小说免费下载| 日韩亚洲欧美中文高清在线| 日韩精品三区| 国产亚洲精久久久久久| 日产欧产美韩系列久久99| 久久影院午夜片一区| 久久久www| 国产情人综合久久777777| 丝袜亚洲精品中文字幕一区| 亚洲欧美国产高清va在线播| 91日韩在线视频| 中文字幕一区久| 激情欧美丁香| 精品久久久久久无| 精品福利在线视频| 午夜在线观看视频| 色老头一区二区三区在线观看| 日韩小视频在线观看专区| 亚洲麻豆一区| 最新热久久免费视频| 成功精品影院| av日韩中文字幕| 男人最爱成人网| 麻豆蜜桃在线| 欧美精品在线看| 国产精品盗摄一区二区三区| www.日韩.com| 国产午夜精品理论片a级大结局| 亚洲第一页中文字幕| 大桥未久在线视频| 色天天综合狠狠色| 欧美大胆一级视频| 国产一级精品在线| 国产精品69久久久久水密桃| 国产精品日日做人人爱| 欧美在线亚洲综合一区| 亚洲成人免费电影| 亚洲香蕉伊在人在线观| av免费观看一区二区| 久久久久久免费毛片精品| 欧美一区二区视频网站| 超碰在线亚洲| 国产亚洲欧美一区二区| 久久久久综合| 欧美黄色三级| 欧洲在线/亚洲| 欧美在线视频播放| 亚洲精品亚洲人成人网| 91亚洲精选| 日本精品在线| 天天做夜夜做人人爱精品| 91精品国产综合久久福利软件| 欧美在线视频免费观看| av在线中出| 一区二区欧美精品| 亚洲国产精品91| 亚洲精蜜桃久在线| 久久久欧美精品sm网站| 欧美日韩麻豆| 成人aa视频在线观看| 免费在线观看一区二区三区| youjizz国产精品| 欧美主播一区二区三区美女 久久精品人| 成人午夜两性视频| 四虎国产精品成人免费影视| 国产日韩精品综合网站| 国产亚洲成人一区| 亚洲成a人片在线观看中文| 小嫩嫩精品导航| 91超碰在线播放| 久久蜜桃精品| 欧美国产视频| 国产欧美精品va在线观看| 欧美一区三区三区高中清蜜桃| 91网在线看| 91精品婷婷色在线观看| 国产亚洲一区二区手机在线观看| 亚洲xxxxx性| 韩国女主播一区二区| 欧美精品久久99久久在免费线| 热久久免费视频| 日韩片之四级片| 日韩电影不卡一区| 欧美区高清在线| 欧美国产综合色视频| 欧美日本国产| 福利二区91精品bt7086| 91超碰免费在线| 久久精品72免费观看| 国产主播性色av福利精品一区| 欧美日韩综合精品| 日韩在线看片| 亚洲一区av在线| 亚洲欧美成人影院| 国产精品美女主播在线观看纯欲| 欧美日韩日日骚| 欧美人体一区二区三区| 牛牛精品成人免费视频| 国产美女精品写真福利视频| 精品制服美女丁香| 超碰免费在线观看| 国产精品一区二区电影| 欧美成人bangbros| 亚洲精品91美女久久久久久久| 日本日本精品二区免费| 日韩欧美亚洲日产国产| 久久一本综合| 日本天码aⅴ片在线电影网站| 色婷婷久久久综合中文字幕| 国产成人无遮挡在线视频| 7777精品视频| 国产成人免费视频精品含羞草妖精| 欧美呦呦网站| 一区二区久久久久久| 91国内免费在线视频| 美女网站一区二区| 天堂精品一区二区三区| 欧美精品日韩综合在线| 国产欧美日韩伦理| 亚洲人成网站在线| 555夜色666亚洲国产免| 国产一区二区三区四区大秀| 欧美日韩成人免费| 国产免费一区视频观看免费| 亚洲人成网站在线播| a视频在线观看免费| 涩涩涩视频在线观看| 精品婷婷色一区二区三区蜜桃| 中文字幕亚洲天堂| 国产精品国内视频| 97se亚洲国产一区二区三区| 国产日韩欧美不卡| 麻豆精品在线播放| 国产盗摄精品一区二区三区在线| 一本一道久久a久久精品综合蜜臀| 亚洲一区中文字幕在线观看| www.日韩精品| 亚洲欧洲成人精品av97| 好看不卡的中文字幕| 911国产精品| 精品国产一区二区三区小蝌蚪| 欧美极品少妇xxxxx| 精品国产乱子伦一区二区| 欧美午夜精品一区二区三区电影| 激情欧美一区二区三区黑长吊| 日韩成人高清在线| 97国产精品久久| 国产成人精品综合在线观看| 成人影院在线免费观看| 亚洲欧美另类中文字幕| 国内伊人久久久久久网站视频| 国产在线视频2019最新视频| 久久只精品国产| 成人黄色片在线| 亚洲一区二区精品视频| 国产高清精品二区| 亚洲妇熟xxxx妇色黄| 欧美成人精精品一区二区频|