1
1
<!DOCTYPE html>
2
2
< html lang ="en ">
3
+
3
4
< head >
4
5
< meta charset ="UTF-8 ">
5
6
< title > HTML5 Canvas</ title >
6
7
</ head >
8
+
7
9
< body >
8
- < canvas id ="draw " width ="800 " height ="800 "> </ canvas >
9
- < script >
10
- </ script >
10
+ < canvas id ="draw " width ="800 " height ="800 "> </ canvas >
11
+ < script >
12
+ const canvas = document . querySelector ( '#draw' ) ;
13
+ const ctx = canvas . getContext ( '2d' ) ;
14
+
15
+ canvas . width = window . innerWidth ;
16
+ canvas . height = window . innerHeight ;
17
+
18
+ ctx . strokeStyle = '#BADA55' ;
19
+ ctx . lineJoin = 'round' ;
20
+ ctx . lineCap = 'round' ;
21
+ ctx . lineWidth = 100 ;
22
+ ctx . globalCompositeOperation = 'multiply' ;
23
+
24
+ let isDrawing = false ;
25
+ let lastX = 0 ;
26
+ let lastY = 0 ;
27
+
28
+ let hue = 0 ;
29
+ let direction = true ;
30
+
31
+ function draw ( e ) {
32
+ if ( ! isDrawing ) return ;
33
+
34
+ ctx . strokeStyle = `hsl(${ hue } , 100%, 50%)` ;
35
+ ctx . beginPath ( ) ;
36
+ // start from
37
+ ctx . moveTo ( lastX , lastY ) ;
38
+ // go to
39
+ ctx . lineTo ( e . offsetX , e . offsetY ) ;
40
+ ctx . stroke ( ) ;
41
+ [ lastX , lastY ] = [ e . offsetX , e . offsetY ] ;
42
+ hue ++ ;
11
43
12
- < style >
13
- html , body {
14
- margin : 0 ;
15
- }
16
- </ style >
44
+ if ( hue >= 360 ) {
45
+ hue = 0 ;
46
+ }
47
+
48
+ if ( ctx . lineWidth >= 100 || ctx . lineWidth <= 1 ) {
49
+ direction = ! direction ;
50
+ }
51
+
52
+ if ( direction ) {
53
+ ctx . lineWidth ++ ;
54
+ } else {
55
+ ctx . lineWidth -- ;
56
+ }
57
+ }
58
+
59
+ canvas . addEventListener ( 'mousedown' , ( e ) => {
60
+ isDrawing = true ;
61
+ [ lastX , lastY ] = [ e . offsetX , e . offsetY ]
62
+
63
+ } ) ;
64
+ canvas . addEventListener ( 'mousemove' , draw ) ;
65
+ canvas . addEventListener ( 'mouseup' , ( ) => isDrawing = false ) ;
66
+ canvas . addEventListener ( 'mouseout' , ( ) => isDrawing = false ) ;
67
+
68
+ </ script >
69
+
70
+ < style >
71
+ html ,
72
+ body {
73
+ margin : 0 ;
74
+ }
75
+ </ style >
17
76
18
77
</ body >
19
- </ html >
78
+
79
+ </ html >
0 commit comments