Fabric.js v4.4.0 实现画笔、文本、直线及椭圆等绘制的示例代码。
index.html
HTML
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="UTF-8">
5 <title>FabricJS</title>
6 <style>
7 .fabric-toolbar {
8 width: 720px;
9 position: absolute;
10 left: 0;
11 right: 0;
12 margin: auto;
13 z-index: 1;
14
15 display: grid;
16 grid-template-rows: 1fr 1fr;
17 grid-template-columns: repeat(7, 1fr);
18 border: 1px solid black;
19 grid-gap: 10px;
20 background-color: black;
21 }
22
23 .fabric-toolbar > div {
24 background-color: white;
25 padding: 15px;
26 text-align: center;
27 }
28
29 .fabric-toolbar__tool {
30 cursor: pointer;
31 }
32
33 </style>
34 </head>
35 <body>
36 <div class="fabric-toolbar">
37 <div class="fabric-toolbar__tool js-mode" data-mode="draw">
38 画笔
39 </div>
40 <div class="fabric-toolbar__tool js-mode" data-mode="text">
41 文本
42 </div>
43 <div class="fabric-toolbar__tool js-mode" data-mode="line">
44 直线
45 </div>
46 <div class="fabric-toolbar__tool js-mode" data-mode="ellipse">
47 椭圆
48 </div>
49 <div class="fabric-toolbar__tool js-mode" data-mode="rect">
50 矩形
51 </div>
52 <div class="fabric-toolbar__tool js-mode" data-mode="eraser">
53 像皮擦
54 </div>
55 <div id="js-undo" class="fabric-toolbar__tool">上一步</div>
56
57 <div>
58 <input type="radio" name="width" data-value="6" checked>6px
59 </div>
60 <div><input type="radio" name="width" data-value="10">10px</div>
61 <div><input type="radio" name="width" data-value="14">14px</div>
62
63 <div style="background-color: #e74c3c;">
64 <input type="radio" name="color" data-value="#e74c3c" checked>
65 </div>
66 <div style="background-color: #2ecc71;">
67 <input type="radio" name="color" data-value="#2ecc71">
68 </div>
69 <div style="background-color: #3498db;">
70 <input type="radio" name="color" data-value="#3498db">
71 </div>
72 <div style="background-color: #e67e22;">
73 <input type="radio" name="color" data-value="#e67e22">
74 </div>
75 </div>
76
77 <canvas id="js-canvas"></canvas>
78
79 <script src="fabric.min.js"></script>
80 <script src="index.js" type="module"></script>
81 </body>
82</html>