html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例
本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能。分享给大家供大家参考,具体如下:
先来看运行效果:
具体代码如下:
www.jb51.net JS写字板
body,html {
padding: 0;
margin: 0;
}
a,div,span {
font-family: "Arial","Microsoft YaHei","黑体","宋体",sans-serif;
}
.canvas-box {
display: block;
margin: 40px auto;
background: #f5f5f5;
}
.color-box {
width: 1080px;
display: block;
margin: 20px auto;
text-align: center;
}
.color-item {
display: inline-block;
vertical-align: middle;
width: 48px;
height: 24px;
margin: 10px;
background: #989898;
cursor: pointer;
}
.red {
background: #e01d5b;
}
.blue {
background: #1d6ae0;
}
.green {
background: #1de087;
}
.yellow {
background: #f3e41d;
}
.orange {
background: #f9850b;
}
.black {
background: #333;
}
.color-item.active {
border: solid 3px #565656;
}
.btn {
display: block;
width: 120px;
height: 40px;
line-height: 40px;
margin: 10px auto;
text-align: center;
font-size: 18px;
border: solid 1px #999;
border-radius: 5px;
cursor: pointer;
}
var canvas = document.getElementById('canvas');
var context = canvas.getContext("2d");
var isDraw = false; //定义变量控制画笔是否可用
var movePos; //定义变量存放初始画笔开始位置
var linWidth = 10;
var linColor = '#333';
window.onload = function(){
draw();
}
function draw(){
canvas.width = 500;
canvas.height = 500;
context.strokeStyle = "red";
context.lineWidth = 10;
context.beginPath();
context.strokeRect(0,0,500,500);
//设置画笔颜色,宽度
context.strokeStyle = "red";
context.lineWidth = 1;
//使线段连续,圆滑
context.lineCap = "round";
context.lineJoin = "round";
drawDashedLine(context,0,0,500,500);
drawDashedLine(context,0,500,500,0);
drawLine(context,0,250,500,250);
drawLine(context,250,0,250,500);
}
//画虚线(参照网上大神)
function drawDashedLine(context, x1, y1, x2, y2, dashLength) {
dashLength = dashLength === undefined ? 5 : dashLength;
var deltaX = x2 - x1;
var deltaY = y2 - y1;
var numDashes = Math.floor(
Math.sqrt(deltaX * deltaX + deltaY * deltaY) / dashLength);
for (var i=0; i < numDashes; ++i) {
context[ i % 2 === 0 ? 'moveTo' : 'lineTo' ] (x1 + (deltaX / numDashes) * i, y1 + (deltaY / numDashes) * i);
}
context.stroke();
};
//画直线
function drawLine(context,x1,y1,x2,y2){
context.moveTo(x1,y1);
context.lineTo(x2,y2);
context.stroke();
};
//获取鼠标相对与canvas位置
function getPos(x,y){
var box = canvas.getBoundingClientRect();
return {x: x-box.left,y: y-box.top};
};
//画笔
function drawing(e){
if(isDraw){
var position = getPos(e.clientX,e.clientY);
context.strokeStyle = linColor;
context.lineWidth = linWidth;
context.save();
context.beginPath();
context.moveTo(movePos.x,movePos.y);
context.lineTo(position.x,position.y);
context.stroke();
movePos = position;
context.restore();
}
}
//鼠标点下
canvas.onmousedown = function(e){
isDraw = true;
movePos = getPos(e.clientX,e.clientY);
drawing(e);
}
//鼠标移动
canvas.onmousemove = function(e){
drawing(e);
}
//鼠标松开
canvas.onmouseup = function(e){
isDraw = false;
}
//鼠标离开
canvas.onmouseout =function(e){
isDraw = false;
}
//选择画笔颜色
$('.color-item').on('click',function(){
$(this).addClass('active').siblings().removeClass('active');
linColor = $(this).css('background-color');
});
//清除
function clearDraw(){
context.clearRect(0,0,500,500);
draw();
}
感兴趣的朋友还可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,亲身体验一下运行效果。
希望本文所述对大家JavaScript程序设计有所帮助。
html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例相关推荐
- 写字板能用html语言吗,JS+HTML5 Canvas实现简单的写字板功能示例
本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能.分享给大家供大家参考,具体如下: 先来看运行效果: 具体代码如下: www.jb51.net JS写字板 body,html { pa ...
- php写字板代码,JS+HTML5 Canvas实现简单的写字板功能示例
本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能.分享给大家供大家参考,具体如下: 先来看运行效果: 具体代码如下: www.jb51.net JS写字板 body,html { pa ...
- html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例
本文实例讲述了js+HTML5 canvas 实现简单的加载条(进度条)功能.分享给大家供大家参考,具体如下: www.jb51.net canvas实现加载条动画 /* * 获取canvas, ca ...
- html 写字版插件,原生JS+HTML5实现的可调节写字板功能示例
本文实例讲述了原生JS+HTML5实现的可调节写字板功能.分享给大家供大家参考,具体如下: 本文实例讲述了原生JS+HTML5实现的可调节写字板功能.分享给大家供大家参考,具体如下: 前面一篇介绍了& ...
- 原生js输出html5,原生JS+HTML5实现的可调节写字板功能示例
本文实例讲述了原生JS+HTML5实现的可调节写字板功能.分享给大家供大家参考,具体如下: 前面一篇介绍了<JS+HTML5 Canvas实现简单的写字板功能>,这里再介绍另一种实现方法. ...
- html5 自动扣图,js+html5 canvas实现ps钢笔抠图
html5 canvas+js实现ps钢笔抠图 1. 项目要求需要用js实现photoshop中钢笔抠图功能,就用了近三四天的时间去解决它,最终还是基本上把他实现了. 做的过程中走了不少弯路,最终一同 ...
- 图片怎么转为html5,将图片转化为矢量并canvas化的容易工具(基于Node.js + HTML5 canvas)...
将图片转化为矢量并canvas化的简单工具(基于Node.js + HTML5 canvas) 一.前言 最近需要做一个图标的矢量化,但是没有数据,因此采用了node.js作为数据处理工具,canva ...
- js+html5 canvas全屏彩色条状海浪动画js特效
下载地址 基于js+html5 canvas制作的一款好看的全屏彩色条状海浪动画特效. dd:
- java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能
一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...
最新文章
- 实验5,利用三层交换机实现VLAN间路由
- 九维 Addon for SBO 功能说明及新版软件下载
- Java线程简单总结
- 1109 Group Photo (25 分)【难度: 一般 / 知识点: 模拟 排序】
- 在vs2005中使用Com连接SAP系统(二)
- win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解
- Android通过XML来定义Menu
- 各种光源(灯)的光谱
- 以下是ECMAScript 2016、2017和2018中所有新增功能的示例
- 【Codeforces Round #291 (Div. 2) C】Watto and Mechanism【Trie树、Hash】
- eda多功能数字钟课程设计_EDA电子钟多功能数字时钟课程设计(含代码)[优秀]...
- C++游戏服务器框架笔记(二)_封装Socket类
- 地铁工程安全生产预警系统价格
- 开源软件之lftp的使用
- 采用MPI_Send 和MPI_Recv 编写代码来实现包括MPI_Bcast、MPI_Alltoall、MPI_Gather、MPI_Scatter 等MPI 群集通信函数的功能
- Java程序员的春天!java第三方线程池
- 在web上面显示地图并定位
- C/C++的灵魂—指针实现冒泡排序、选择排序和插入排序
- JAVA删除pdf空白页_【教程】Spire.PDF 教程:在C# 删除 PDF 中的空白页
- R语言辅导高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
热门文章
- jsp中post提交和get提交乱码解决_统一请求编码
- Java线程池实现音频播放
- python绘图颜色深浅代表数值_画图理解Python的深浅拷贝
- linux查看火狐进程,Firefox 终于用上多进程技术了
- 如何控制表格的宽度_利用Word制作表格,这些实用技巧一定要知道!制作表格更加快捷...
- linux centos7上安装sql developer
- 学python要有多少英语词汇量测试_非常适合新手的一个Python爬虫项目: 打造一个英文词汇量测试脚本!...
- 创造与魔法最新服务器怎么进,创造与魔法进不了服务器 | 手游网游页游攻略大全...
- oracle还原脚本,oracle自动恢复脚本
- Python学习笔记:利用sorted()函数对序列排序