1.画点:
<div id="canvas"></div>
<script>
canvas.onclick = (e) => { //获取e
let div = document.createElement('div') //document是api
div.style.position = 'absolute'
div.style.left = e.clientX + 'px'
div.style.top = e.clientY + 'px'
// div.style.border = '1px solid red'
div.style.width = '6px' //偶数像素易于对称
div.style.height = '6px' //偶数像素易于对称
//生成的div默认在内存里面
canvas.appendChild(div)
//给div添加一个可显示的canvas孩子
div.style.marginLeft = '-3px'
div.style.marginTop = '-3px'
//将鼠标在画板创建的元素内居中
div.style.borderRadius = '50%' //创建圆形而非方形
div.style.backgroundColor = 'black' //黑色实心
} //clientX是x坐标,Y是y坐标
</script>
- 链接外围的css软件:
<link rel="stylesheet" href="style.css">
- 外部css
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
#canvas{
height: 100vh; /*跟屏幕一样高*/
border: 1px solid red;
/*第一部分*/
display: block;
width: 100vw; /*跟屏幕一样宽*/
}
- 画线: (1)
<canvas id="canvas" width="" height=""></canvas>
<!-- canvas默认出现左右/上下滚动条,因为canvas是inline元素,所以设置的宽高没有什么用处 -->
<script></script>
(2)
<canvas id="canvas" width="" height=""></canvas>
<script>
let canvas = document.getElementById("canvas");
canvas.width = document.documentElement.clientWidth;
canvas.height = document.cocumentElement.clientheight;
let ctx = canvas.getContext("2d");
ctx.fillStyle = "rgb(200,0,0)";
ctx.strokeStyle = 'none';
var isTouchDevice = 'ontouchstart' in
document.documentElement;
console.log(isTouchDevice);
ctx.lineWidth = 10;
ctx.lineCap = "round";
if(istoucDevice){
canvas.ontouchstart = (e) => {
let x = e.touches[0].clientX
let y = e.touches[0].clientY
last = [x, y]
}
canvas.ontouchmove = (e) => {
let x = e.touches[0].clientX
let y = e.touches[0].clientY
drawLine(last[0], last[1], x, y)
last = [x, y]
}
}else{
canvas.onmousemove = (e) => {
if(painting === true){
drawLine(last[0], last[1], e.clientX, e.clientY)
last = [e.clientX, e.clientY]
}else{
console.log('什么都不做')
}
}
canvas.onmousedown = () => {
painting === true
last = [e.clientX, e.clientY]
}
canvas.onmouseup = () => {
painting = false
}
}
}
function drawLine(x1,y1,x2,y2) {
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.stroke();
}
</script>
(1)图:
【注】
canvas.width表示html的属性canvas.style.width表示css的属性,vm与vh都是css的属性,不能直接用在html标签中如<canvas width="100vw">是错的而<canvas style="width:100vm">是对的- 检测是否支持触屏:
var isTouchDevice = 'ontouchstart' in
document.documentElement;
console.log(isTouchDevice)
- 触屏