博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单机版你画我猜--摘自前端网
阅读量:5147 次
发布时间:2019-06-13

本文共 2650 字,大约阅读时间需要 8 分钟。

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title>你画我猜</title>
<style>
#box{

width: 600px;

height: 500px;
margin: 100px auto;
background-color: orange;
border: 3px solid #cccccc;
}

#box nav{

width: 100%;
height: 100px;
}

#box nav div{

height: 50px;

line-height: 50px;
}

#box nav .changeColor{

padding-left: 15px;

}

.changeColor input{

width: 30px;

height: 30px;
margin: 0 15px;
vertical-align: middle;
}

.clear input:first-of-type{

margin-left: 15px;
width: 100px;
height: 30px;
background-color: #ffffff;
}

.clear input:last-of-type{

margin-left: 15px;
width: 30px;
height: 30px;
background-color: #ffffff;
}

canvas{

background-color: #fff;

}

</style>
</head>
<body>
<div id="box">
<nav>
<div class="changeColor">
<input type="button" style="background-color:pink">
<input type="button" style="background-color:purple">
<input type="button" style="background-color:red">
<input type="button" style="background-color:green">
<input type="button" style="background-color:deepskyblue">
</div>
<div class="clear">
<input type="button" value="清空画布" οnclick=clearLayer()>
橡皮擦 <input type="button" class="eraser">
</div>
</nav>
<canvas width="600" height="400"></canvas>
</div>

<script>
var cvs =document.querySelector('canvas');
var ctx =cvs.getContext('2d');

var eraser = document.querySelector(".eraser");

console.log(eraser);
cvs.addEventListener('mousedown',function (e) {//addEventListener() 方法用于向指定元素添加事件句柄。
var x = e.clientX-this.offsetLeft;
var y = e.clientY-this.offsetTop;

cvs.oldPoint = {

x:x-1,
y:y-1,
}
drawLine(x.y)

this.addEventListener('mousemove',move);

this.addEventListener('mouseup',up);

});

function move(e) {
var x = e.clientX - this.offsetLeft;
var y = e.clientY - this.offsetTop;
drawLine(x,y);

cvs.oldPoint = {

x: x,
y: y,
}

}

function up(e) {

this.removeEventListener("mousemove",move);
this.removeEventListener("mouseup",up);
}
function drawLine(x,y) {

ctx.beginPath();

ctx.lineWidth = 5;

ctx.lineJoin = "round";

ctx.lineCap = "round";

ctx.moveTo(cvs.oldPoint.x,cvs.oldPoint.y);

ctx.lineTo(x,y);

ctx.stroke();

ctx.closePath();

}
function clearLayer() {
ctx.clearRect(0,0,cvs.width,cvs.height);
}
var colorBtn = document.querySelectorAll(".changeColor input");

var colorBtnArr = [].slice.call(colorBtn);

// var colorBtnArr = Array.prototype.slice.call(colorBtn);

colorBtnArr.forEach(function (item,index) {

item.onclick = function () {

changeColor(this);

}

})

function changeColor(btn) {

ctx.strokeStyle = getComputedStyle(btn).backgroundColor;

}

eraser.onclick = function () {

ctx.strokeStyle = getComputedStyle(cvs).backgroundColor;
};
</script>
</body>
</html>

转载于:https://www.cnblogs.com/Webyangbowen/p/6597966.html

你可能感兴趣的文章
thinkphp5省市区三级联动例子
查看>>
让HttpClient不要打印巨多的日志
查看>>
洛谷 [P1024]一元三次方程求解
查看>>
MVC MODEL Attribute 操纵速记
查看>>
wcf服务端代码方式及客户端代码方式
查看>>
电商测试环境Jenkins multibranch pipeline实践
查看>>
Android--sos闪光灯
查看>>
关于Google App Engine
查看>>
场和帧的 关系(转)
查看>>
verilog 有符号数(2转)
查看>>
JS命名空间、对象封装
查看>>
自定义HttpFilter模块完善
查看>>
编码上的小改进
查看>>
Conda常见命令
查看>>
【动态规划】Codeforces 706C Hard problem
查看>>
1.4.1 Arithmetic Progressions
查看>>
React Native安装步骤
查看>>
数据转换服务-文本抽出技术
查看>>
GPS导航仪常见术语解释
查看>>
实验七
查看>>