没有合适的资源?快使用搜索试试~ 我知道了~
一、利用构造函数模式进行开发的优势 1、业务逻辑思路更清晰; 2、避免了大量全局变量的产生,只有一个全局变量,相当于就是这一功能模块向外暴露的唯一接口; 3、如果结合模块化开发,很方便就可以把自定义的模块加到统一modules中,只要自定义的模块名不冲突,使用起来也不会互相干扰; 4、代码可维护性好,利人利己; 二、下面就利用这一模式,以拖拽为实例,进行讲解。 1、html,如下: <body> <div class=box id=box1><div class=main><div class=bar>拖拽区</div><div clas
资源详情
资源评论
资源推荐
js实现拖拽效果(构造函数)实现拖拽效果(构造函数)
一、利用构造函数模式进行开发的优势一、利用构造函数模式进行开发的优势
1、业务逻辑思路更清晰;
2、避免了大量全局变量的产生,只有一个全局变量,相当于就是这一功能模块向外暴露的唯一接口;
3、如果结合模块化开发,很方便就可以把自定义的模块加到统一modules中,只要自定义的模块名不冲突,使用起来也不
会互相干扰;
4、代码可维护性好,利人利己;
二、下面就利用这一模式,以拖拽为实例,进行讲解。二、下面就利用这一模式,以拖拽为实例,进行讲解。
1、、html,如下:
<body>
<div class="box" id="box1"><div class="main"><div class="bar">拖拽区</div><div class="content">内容区块</div></div></div>
<div class="box" id="box2"><div class="main"><div class="bar">拖拽区</div><div class="content">内容区块</div></div></div>
<div class="box" id="box3"><div class="main"><div class="bar">拖拽区</div><div class="content">内容区块</div></div></div>
</body>
2、、css
<style type="text/css">
.box{position:absolute;left:100px;top:100px;padding: 5px;box-shadow:2px 2px 4px #666666; font-size:12px;}
#box2{left:500px;}
#box3{left:900px; }
.main{border:1px solid #a0b3d6;background-color: #fff; }
.bar{line-height:24px;padding-left:5px;border-bottom:1px solid #a0b3d6;background-color:#beceeb;cursor:move;}
.content{padding: 10px 5px;height:200px;width:250px;}
</style>
3、、js
// 定义Drag构造函数,并设置每个实例的特权属性(也就是将来要创建的每个实例对象私有的属性);
function Drag(bar, target) {
// 此处的bar是指触发拖拽事件的对象;
this.bar = bar;
// 此处的target是值实际上被拖动的对象;
this.target = target;
// 这个flag相当于是一个开关,用于判断事件是否能够执行;
this.flag = false;
}
// 构造函数原型上添加方法,也是为其实例添加公用方法公用方法;
Drag.prototype = {
// 重新声明原型的constructor属性,也就是为实例指定正真的创建者;这里不重新指定也没问题,就是为了。。。
constructor : Drag,
// 初始化每个实例的属性,为绑定事件做好准备;
init : function(){
// 这边的this其实是指调用这个init函数方法的那个对象,也就是我们所创建的实例;
// 这么写有好处,代码执行到绑定事件那一块再详细的讲;
var temp = this;
// 获取实例对象上最先设定的样式值,这边就是left和top属性;
temp.left = temp.getCss(temp.target, "left");
temp.top = temp.getCss(temp.target, "top");
// 预先声明下面要用的到值,这边是指储存鼠标点下去的瞬间鼠标相对于屏幕的位置(clientX、clientY)
temp.mousePosX = null;
temp.mousePosY = null;
// 发出为实例对象绑定事件的命令;
temp.bindEvent();
},
//
getCss : function(o , prop){
weixin_38667207
- 粉丝: 3
- 资源: 965
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0