模拟电子签章盖章效果的jQuery插件jquery.zsign
来源:互联网 发布:知乎 什么是爱 编辑:程序博客网 时间:2024/04/29 15:29
2013-01-28更新:打包最新版本源码到csdn下载频道了,包括demo。下载地址:
上传中,稍候发布。。
CSDN审核还没通过,郁闷,直接贴代码吧:
/* desc:jQuery模拟签章插件 author:hyf date:2012-12-24 blog:http://blog.csdn.net/sweetsuzyhyf*/$.fn.zSign = function (options) { var _s = $.extend({ img: '', //图片地址 width: 150, //签章图片大小 height: 150, btnPanel: true, //是否开启按钮面板,若按钮面板不满足需求可以关闭后通过返回的handle对象直接调用方法 callBack: null, //保存按钮回调函数 list: null, //初始化签章,参数格式参照callBack回调函数返回的数据格式 isPercentage: false //返回结果中的left、top是否以百分比显示,若夫容器是自适应布局推荐 }, options || {}); var _parent = $(this).addClass('zsign'), _pw = _parent.width(), _ph = _parent.height(); var range = { minX: 0, minY: 0, maxX: _pw - _s.width - 2, //扣去2个边框1px maxY: _ph - _s.height - 2 }; //按钮面板 var _btnPanel = $("<div class='panel'><button class='btn add' >盖 章</button><button class='btn save'>保 存</button></div>").appendTo(_parent); _btnPanel.css('display', _s.btnPanel ? 'block' : 'none'); //添加 var _add = $('.add', _btnPanel).click(function (e) { handle.add(); }); //保存 $('.save', _btnPanel).click(function () { handle.save(); }); if (_s.list) { handle.init(_s.list); } var handle = { list: [], //初始化签章 init: function (list) { handle.list = []; $('.sign', _parent).remove(); for (var i = 0; i < list.length; i++) { var item = list[i]; _parent.append("<div class='sign ok' style='height:" + _s.height + "px;width:" + _s.width + "px;background-image:" + item.img + ";top:" + item.top + ";left:" + item.left + "'></div>"); } }, //添加签章 add: function () { handle.btnAddToggle(); var sign = $("<div class='sign' style='height:" + _s.height + "px;width:" + _s.width + "px;background-image:url(" + _s.img + ");'><button class='btn ok' >确定</button><button class='btn del' >删除</button></div>").appendTo(_parent); $('.ok', sign).click(function () { //确定签章 handle.sign(sign); }); $('.del', sign).click(function () { //删除签章 handle.del(sign); }); handle.move(sign); }, //确定签章 sign: function (obj) { obj.addClass('ok').off('mousedown').find('.btn').css('display', 'none'); handle.btnAddToggle(); handle.list.push({ img: obj.css('background-image') + "", top: obj.css('top'), left: obj.css('left') }); }, //删除 del: function (obj) { obj.remove(); handle.btnAddToggle(); }, //移动 move: function (obj) { //绑定移动事件 obj.on('mousedown', function (e) { obj.data('x', e.clientX); obj.data('y', e.clientY); var position = obj.position(); $(document).on('mousemove', function (e1) { var x = e1.clientX - obj.data('x') + position.left; var y = e1.clientY - obj.data('y') + position.top; x = x < range.minX ? range.minX : x; x = x > range.maxX ? range.maxX : x; y = y < range.minY ? range.minY : y; y = y > range.maxY ? range.maxY : y; obj.css({ left: x, top: y }); }).on('mouseup', function () { $(this).off('mousemove').off('mouseup'); }); }); }, //保存 save: function () { var r = true; if ($('.sign:not(.ok)', _parent).length != 0) { if (!confirm("未点击确认的签章将被移除,确定保存吗?")) { r = false; } } if (r) { //删除未确定位置的签章 $('.sign:not(.ok)', _parent).remove(); _btnPanel.remove(); if (_s.callBack) { if (_s.isPercentage) { for (var i = 0; i < handle.list.length; i++) { var item = handle.list[i]; item.top = parseInt(item.top) / _ph * 100 + '%'; item.left = parseInt(item.left) / _pw * 100 + '%'; } } else { tmp = handle.list; } _s.callBack.call(this, handle.list); } } }, //盖章按钮的状态切换 btnAddToggle: function () { var disabled = _add.attr('disabled'); if (disabled) { //判断是否有未确定的签章,若有则不切换 if ($('.sign:not(.ok)', _parent).length == 0) { _add.removeAttr('disabled'); } } else { _add.attr('disabled', 'disabled'); } }, //返回参数列表,可以在外部直接修改 s: _s, //签章移动范围 range: range } return handle;}
.zsign .panel{ position: absolute; top:8px; left:8px;}.zsign .btn{ display: inline-block; padding: 4px 10px 4px; margin-bottom: 0; font-size: 13px; line-height: 18px; color: #333; text-align: center; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; background-color: whiteSmoke; background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#E6E6E6)); background-repeat: repeat-x; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border: 1px solid #CCC; border-bottom-color: #B3B3B3; -webkit-border-radius: 4px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); cursor: pointer; -webkit-user-select: none;}.zsign .btn:hover{ color: #333; text-decoration: none; background-color: #E6E6E6; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear;}.zsign .btn[disabled]{ cursor: default; background-image: none; background-color: #E6E6E6; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none;}.zsign .btn.add{ margin-right:8px;}.zsign .cursor{ cursor: none;}.zsign .show{ display: block;}.zsign .hide{ display: none;}.zsign .sign{ position: absolute; cursor: move; border: 1px dashed #ccc; background-size: contain; background-position: center; background-repeat: no-repeat;}.zsign .sign.ok{ cursor: default; border-color:transparent;}.zsign .sign .btn{ padding: 2px 6px; font-size: 11px; line-height: 14px; position: absolute;}.zsign .sign .btn.del{ bottom: 4px; right: 4px;}.zsign .sign .btn.ok{ bottom: 4px; right: 50px;}
<!DOCTYPE html><html><head> <title>测试</title> <link href="jquery.zsign.css" rel="stylesheet" type="text/css" /> <script src="../../jquery-1.7.1.min.js" type="text/javascript"></script> <script src="jquery.zsign.js" type="text/javascript"></script></head><body> <div id="test" style="position: relative; width: 80%; height: 400px; border: 1px solid red; margin: 100px auto"> <div style="text-align: center; font-size: 30px; font-weight: bold"> jQuery模拟签章插件</div> <p> 可以内嵌在各种容器中,已包装成jQuery插件,调用方便。点击“盖章”按钮添加一个新章,可以自由拖动位置,点击确定后保存并触发回调函数方便处理保存,有需要的下载试试。</p> <p> 可以内嵌在各种容器中,已包装成jQuery插件,调用方便。点击“盖章”按钮添加一个新章,可以自由拖动位置,点击确定后保存并触发回调函数方便处理保存,有需要的下载试试。</p> <p> 可以内嵌在各种容器中,已包装成jQuery插件,调用方便。点击“盖章”按钮添加一个新章,可以自由拖动位置,点击确定后保存并触发回调函数方便处理保存,有需要的下载试试。</p> <div style="margin-left: 60%;"> 盖章:</div> </div> <ul id="msg"> </ul> <script> var a = $("#test").zSign({ img: '1.png', isPercentage:true,callBack: function (obj) { var html = []; for (var i = 0; i < obj.length; i++) { html.push('<li>img:"' + obj[i].img + '", top:"' + obj[i].top + '", left:"' + obj[i].left + '"</li>'); } $('#msg').html(html.join('')); } }); a.init([{ img: "url(http://localhost:4872/Scripts/plugin/sign/1.png)", top: "136px", left: "522px" }, { img: "url(http://localhost:4872/Scripts/plugin/sign/1.png)", top: "34.25%", left: "72.3170731707317%"}]); </script></body></html>
请多多支持谢谢!
可以内嵌在各种容器中,已包装成jQuery插件,调用方便。点击“盖章”按钮添加一个新章,可以自由拖动位置,点击确定后保存并触发回调函数方便处理保存,有需要的下载试试。
- 模拟电子签章盖章效果的jQuery插件jquery.zsign
- 电子签章盖章之jQuery插件jquery.zsign
- 模拟电子签章盖章效果的jQuery插件源码
- jquery签章
- 通达OA 工作流电子签章 盖章Or手写
- 电子签章的实施方案
- 使用jQuery插件实现 模拟dialog的遮罩效果
- jQuery模拟WinForm MDI效果插件
- Jquery插件--实现面板模拟效果
- 模拟jquery插件的格式
- jquery插件手风琴的效果
- Jquery 插件的图片效果
- jQuery 插件的放大镜效果
- jQuery 插件的放大镜效果
- WORD2003电子签名插件(支持手写、签章)
- 电子签章
- 电子签章
- jQuery插件实现模拟dialogs效果实例(图片)
- 织梦过滤规则
- [技术讨论]关于低耦合开发的讨论
- 判断activity 是横屏还是竖屏
- IIS中的网站"最大并发连接数"和应用程序池的"队列长度"是什么意思
- Asp.Net构建安全网站
- 模拟电子签章盖章效果的jQuery插件jquery.zsign
- session原理总结
- Hough变换-理解篇
- mysql变量之系统静态变量、状态变量
- 程序那些事:日志记录的作用和方法
- oracle中的单引号和双引号介绍
- 类的继承 和 父类中构造方法的调用
- 浅谈 js中parseInt函数的解析
- objective-c基础教程——学习小结