国产黄色免费网站_久久天天做天天爱综合色_精品国产一区久久久_成人黄色激情网站_久久成人在线视频_美女一区二区在线观看_亚洲精品免费一区亚洲精品免费精品一区 _91精品国产综合久久精品麻豆

有趣的Canvas,你值得擁有!

2020-5-3    seo達(dá)人

Canvas 是 HTML5 提供的一個用于展示繪圖效果的標(biāo)簽. Canvas 原意為畫布, 在 HTML 頁面中用于展示繪圖效果. 最早 Canvas 是蘋果提出的一個方案, 今天已經(jīng)在大多數(shù)瀏覽器中實現(xiàn)。


canvas 的使用領(lǐng)域


游戲

大數(shù)據(jù)可視化數(shù)據(jù)

banner 廣告

多媒體

模擬仿真

遠(yuǎn)程操作

圖形編輯

判斷瀏覽器是否支持 canvas 標(biāo)簽


var canvas = document.getElementById('canvas')

if (canvas.getContext) {

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

} else {

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

}

canvas 的基本用法

1、使用 canvas 標(biāo)簽, 即可在頁面中開辟一格區(qū)域,可以設(shè)置其寬高,寬高為 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 開始畫畫(設(shè)置起點 設(shè)置終點 連線-描邊 )


ctx.moveTo(10, 10)

ctx.lineTo(100, 100)

ctx.stroke()

繪制線條

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

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

描邊繪制: context.stroke()

填充繪制: context.fill()

閉合路徑: context.closePath()

canvas 還可以設(shè)置線條的相關(guān)屬性,如下:


CanvasRenderingContext2D.lineWidth 設(shè)置線寬.

CanvasRenderingContext2D.strokeStyle 設(shè)置線條顏色.

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

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

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

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

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 的矩形 默認(rèn)為黑色

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

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

繪制圓弧

繪制圓弧的方法有


CanvasRenderingContext2D.arc()

CanvasRenderingContext2D.arcTo()

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


var cas = document.querySelector('canvas')

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


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

ctx.stroke()


// 角度轉(zhuǎn)弧度

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

}

制作畫筆

聲明一個變量作為標(biāo)識

鼠標(biāo)按下的時候,記錄起點位置

鼠標(biāo)移動的時候,開始描繪并連線

鼠標(biāo)抬起的時候,關(guān)閉開關(guān)

點擊查看效果圖


var cas = document.querySelector('canvas')

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


var isDraw = false

// 鼠標(biāo)按下事件

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

isDraw = true

ctx.beginPath()

})


// 鼠標(biāo)移動事件

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

if (!isDraw) {

// 沒有按下

return

}

// 獲取相對于容器內(nèi)的坐標(biāo)

var x = e.offsetX

var y = e.offsetY

ctx.lineTo(x, y)

ctx.stroke()

})


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

// 關(guān)閉開關(guān)了!

isDraw = false

})

手動涂擦

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


點擊查看效果圖


var cas = document.querySelector('canvas')

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


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


// 開關(guān)

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

})

刮刮樂

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

隨機設(shè)置生成獎品。

當(dāng)手觸摸移動的時候,可以擦除部分畫布,露出獎品區(qū)。

點擊查看效果圖


<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()

// 開關(guān)

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…


日歷

鏈接

個人資料

藍(lán)藍(lán)設(shè)計的小編 http://www.newchinaweekly.com

存檔

日韩视频免费播放| 天天综合久久| 红桃视频欧美| 国产一区二区三区久久久| 久久伊99综合婷婷久久伊| 亚洲免费观看高清完整版在线观看熊 | 超碰caoprom| 久久网一区二区| 蜜桃久久一区二区三区| 黄页在线免费观看| 色鬼7777久久| 国模一区二区| 亚洲女同一区| 91香蕉视频黄| 欧美午夜电影在线播放| 亚洲欧美一区二区三区在线| 国产精品久久久久久久久久新婚| 日韩精品一区二区三区四区五区 | 欧美性狂猛xxxxxbbbbb| 偷偷要色偷偷| 亚洲成人激情社区| 国产精品a级| 欧美激情一区二区三区| 欧美变态tickle挠乳网站| 2018日韩中文字幕| 亚洲欧洲免费无码| 99久久免费看精品国产一区| 中文字幕在线视频免费| 青青操在线观看| www在线观看播放免费视频日本| 成人乱码手机视频| 日韩av网站免费在线| 伊人夜夜躁av伊人久久| 中文欧美日本在线资源| 久久精品aaaaaa毛片| 古装做爰无遮挡三级聊斋艳谭| 东京热一区二区三区四区| 91视频播放| xxx.xxx欧美| 亚洲视频一区| 亚洲国产色一区| 欧美大胆a视频| 亚洲成人自拍| 女女互磨互喷水高潮les呻吟| 人人妻人人澡人人爽精品日本| 探花国产精品| 国产精品xxxav免费视频| 久久综合导航| 欧美喷水一区二区| 91视频国产精品| 亚洲热在线视频| 国产成人精品无码高潮| 免费看成年人视频在线观看| 亚洲国产高清在线观看| 成人18视频在线播放| 日韩av网站在线| 日本一区二区在线视频观看| 四季av中文字幕| 国产在亚洲线视频观看| xxx在线免费观看| 老司机亚洲精品| 欧美日韩电影一区| 99国精产品一二二线| www激情五月| 中文娱乐网av| 韩日毛片在线观看| 狠狠久久亚洲欧美| 日韩精品有码在线观看| 亚洲一区二区三区涩| 久久99久久久| 日本福利视频| 欧美色图国产精品| 五月天中文字幕一区二区| 国产国语刺激对白av不卡| 白丝校花扒腿让我c| 日韩一区二区三区四区区区| 欧美日韩免费看片| 白白色 亚洲乱淫| 久久久国产91| www.亚洲高清| 亚洲日本伊人| 99欧美精品| 国产欧美在线观看一区| 欧美亚洲另类在线| 久久一区二区电影| 一个人看免费www视频有多爽| 国产精品视频一区二区三区综合| 久久久久久免费| 992tv成人免费视频| 亚洲色图欧美日韩| sese在线播放| 日本a级不卡| 欧美日韩国产精品成人| 香蕉久久夜色| 91久久久久国产一区二区| 福利视频在线| 国产成人精品三级| 欧美国产极速在线| 中文字幕天堂av| 2023av视频| 色一区二区三区四区| 欧美综合在线视频| 一区二区三区偷拍| 精品免费久久久| 中文字幕日本一区二区| 国产精品国产自产拍在线| 91精品免费久久久久久久久| 九九这里只有精品视频| 天天夜夜亚洲| 日韩高清一区在线| 久热在线中文字幕色999舞| 亚洲少妇一区二区| 成人狠狠色综合| 亚洲精品护士| 日韩网站免费观看高清| 国产高潮视频在线观看| 开心丁香婷婷深爱五月| 国产精品色网| 欧美人交a欧美精品| 白白色免费视频| 一个人免费视频www在线观看| 日本亚洲三级在线| 97高清免费视频| 日韩黄色免费观看| 97超碰资源站在线观看| 国产亚洲精久久久久久| 97操在线视频| 在线观看亚洲国产| 久久精品xxxxx| 欧美中文字幕亚洲一区二区va在线| 一二三四中文字幕| 国产视频2区| 欧美在线三级| 欧美成人精品在线| 国产喷水在线观看| a级大胆欧美人体大胆666| 亚洲欧美日韩久久| 一级全黄肉体裸体全过程| 欧美疯狂爱爱xxxxbbbb| 欧美成熟视频| 高清欧美电影在线| 日韩精品人妻中文字幕| 一二区成人影院电影网| 在线观看欧美黄色| 日本免费一级视频| 黑粗硬长欧美在线视频免费的| 国产一级精品在线| 国产精品二区在线| 亚洲成年人视频| 日韩熟女一区二区| 在线毛片观看| 91国偷自产一区二区使用方法| 777777av| 福利在线免费| 成人不卡免费av| 久久影视中文粉嫩av| 影音先锋中文字幕第一页| 一区二区三区网站| 韩国福利视频一区| 国产主播第一页| 美女呻吟一区| 一区二区三区高清国产| 男人的天堂久久久| 日韩电影精品| 亚洲精品www久久久| 欧美a在线播放| 手机看片久久| 亚洲第一男人av| 一级黄色片日本| 成人做爰视频www| 亚洲国产成人久久综合一区| 九九九视频在线观看| 刘亦菲一区二区三区免费看| 欧美日韩亚洲综合在线| 三级黄色片网站| 第一福利在线视频| 91精品国产综合久久久久久久久久 | 国产美女久久精品| 香蕉人妻av久久久久天天| 午夜国产精品视频免费体验区| 欧美诱惑福利视频| 天堂在线视频观看| 久久久久久穴| 欧美日韩大片一区二区三区| 免费看的黄网站| 91丨九色丨尤物| 国产亚洲天堂网| 在线视频二区| 欧美色综合天天久久综合精品| 狠狠人妻久久久久久综合蜜桃| 影视一区二区三区| 中日韩美女免费视频网站在线观看 | 日本中文字幕观看| 免费在线看电影| 欧美精品一区二区三区蜜臀| 国产一级片免费| 成人亚洲一区二区| 亚洲a∨日韩av高清在线观看| 99久久免费国产精品| 26uuu国产电影一区二区|