javascript实现画板功能


Posted in Javascript onApril 12, 2020

本文实例为大家分享了javascript实现画板功能的具体代码,供大家参考,具体内容如下

画板功能的实现

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 <style type="text/css">
 *{
 margin: 0;
 padding: 0;
 list-style: none;
 }
 
 body{
 background:url(11.jpg) 0 0 no-repeat;
 }
 
 .wrapper{
 margin: 10px;
 }
 
 .wrapper canvas{
 border: 1px solid blue;
 border-radius:25px;
 box-shadow: 10px 10px 5px brown;
 margin-bottom: 16px;
 background-color: #fff;
 
 }
 .wrapper .btn-list{
 width: 1000px;
 text-align: center;
 }
 
 .wrapper .btn-list li{
 display: inline-block;
 margin-left: 40px;
 
 }
 .wrapper .btn-list li input{
 background-color: darkgreen;
 color: blanchedalmond
 border: none;
 padding: 6px 13px;
 cursor: pointer;
 border-radius:25px;
 font-size: 18px;
 display: block;
 transition-duration: 0.2s;
 }
 
 .wrapper .btn-list li input:hover{
 border: 1px solid chocolate;
 box-shadow: 0 12px 15px 0 rgba(0,0,0,0.5);
 }
 </style>
 </head>
 <body>
 <!-- div.wrapper>canvas+ul.btn-list>li*5>input -->
 
 <div class="wrapper"> 
 <canvas class="cavs" width="1000" height="500"></canvas>
 <ul class="btn-list">
 <li><input type="color" id="colorBoard" value="colorBoard"></li>
 <li><input type="button" id="cleanBoard" value="清屏"></li>
 <li><input type="button" id="eraser" value="橡皮"></li>
 <li><input type="button" id="rescind" value="撤销"></li>
 <li><input type="range" id="lineRuler" value="线条" min="1" max="30"></li>
 </ul>
 </div>
 </body>
 
 <script src="jquery-3.4.1.min.js"></script>
 <script>
 var drawingLineObj = {
 cavs:$('.cavs'),
 context:$('.cavs').get(0).getContext('2d'),
 colorBoard:$('#colorBoard'),
 cleanBoard:$('#cleanBoard'),
 arrImg:[],
 eraser:$("#eraser"),
 rescind:$('#rescind'),
 lineRuler:$('#lineRuler'), 
 bool:false,
 init:function(){ 
 this.context.lineCap = 'round'; //线条起始与结尾样式
 this.context.lineJoin = 'round'; //转弯
 this.draw(); //画笔函数
 this.btnFn(); //按钮函数
 },  
 
 draw:function(){ 
 var cavs = this.cavs,
 self = this;
 var c_x = cavs.offset().left, //canvas离左边的距离
 c_y = cavs.offset().top; //canvas离上边的距离
 
 cavs.mousedown(function(e){
 e = e||window.event;
 self.bool = true;
 var m_x = e.pageX - c_x, //鼠标点距离减去canvas离左边的距离等于画布点
  m_y = e.pageY - c_y; //鼠标点距离减去canvas离上边的距离等于画布点
 self.context.beginPath();
  self.context.moveTo(m_x,m_y);//鼠标在画布上的点
 var imgData = self.context.getImageData(0,0,self.cavs[0].width,self.cavs[0].height);
 self.arrImg.push(imgData);
 //console.log(self.arrImg);
 
 })
 cavs.mousemove(function(e){
 if(self.bool){ //定义一把锁,防止鼠标移开滑动
 self.context.lineTo(e.pageX-c_x,e.pageY-c_y);
 self.context.stroke(); //绘制出路径
 }
 
 })
 cavs.mouseup(function(){
  self.context.closePath(); //结束自动闭合
 self.bool = false; //鼠标不移动时画笔断开
 
 })
 cavs.mouseleave(function(){
 self.context.closePath(); //结束自动闭合
 self.bool = false; //鼠标不移动时画笔断开
  
 
 }) 
 
 
 },   
 btnFn:function(){ 
 var self = this;
 $('.btn-list').on('click',function(e){ 
 e = e||window.event;
 switch(e.target.id){ //target
 case 'cleanBoard':
 self.context.clearRect(0,0,self.cavs[0].width,self.cavs[0].height) //[0]
 break
 case 'eraser':
 self.context.strokeStyle = '#fff'
 break
 case 'rescind':
 if(self.arrImg.length>0){
 self.context.putImageData(self.arrImg.pop(),0,0);
 break
 } 
 
 }
 })      
 this.colorBoard.change(function(e){ //当颜色变化时改变字体的颜色
 self.context.strokeStyle = $(this).val();
 })
 
 this.lineRuler.change(function(e){ //线条的变化值
 self.context.lineWidth = $(this).val();
 })
 
 }
 
 }   
 drawingLineObj.init();
 
 </script>
</html>

javascript实现画板功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript下判断是否为闰年的Datetime包
Oct 26 Javascript
jquery 单击li防止重复加载的实现代码
Dec 24 Javascript
JS中字符串trim()使用示例
May 26 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
Oct 28 Javascript
基于React.js实现原生js拖拽效果引发的思考
Mar 30 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
Feb 20 Javascript
tab栏切换原理
Mar 22 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
JavaScript中将值转换为字符串的五种方法总结
Jun 06 Javascript
微信小程序修改checkbox的样式代码实例
Jan 21 Javascript
JavaScript 监听组合按键思路及代码实现
Jul 28 Javascript
原生js中运算符及流程控制示例详解
Jan 05 Javascript
JS实现随机点名器
Apr 12 #Javascript
微信小程序实现抖音播放效果的实例代码
Apr 11 #Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 #Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 #Javascript
js函数柯里化的方法和作用实例分析
Apr 11 #Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 #Javascript
JavaScript运行机制实例分析
Apr 11 #Javascript
You might like
php while循环控制的简单实例
2016/05/30 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python基础教程之while循环
2019/08/14 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
安全资料员岗位职责
2013/12/14 职场文书
简单英文演讲稿
2014/01/01 职场文书
大学生校园创业计划书
2014/02/08 职场文书
小学语文教学反思
2014/02/10 职场文书
财务部总监岗位职责
2014/03/12 职场文书
cf收人广告词大全
2014/03/14 职场文书
导师工作推荐信
2015/03/27 职场文书
给校长的建议书作文500字
2015/09/14 职场文书