js面向对象练习(一):拖曳效果

简介:

html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
< html >
< head >
< meta  charset= "utf-8">
< title ></ title >
<!--<script src="jquery-1.9.1.min.js"></script>-->
 
 
< style >
 
#drag{
     background: red;
     width: 200px;
     height: 200px;
     cursor: move;
     position: fixed;
     top: 0;
     left: 0;
}
</ style >
</ head >
< body >
     < div  id = "drag" ></ div >
< script  src = "scripts/test.js" ></ script >
</ body >
</ html >

js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
window.onload = function(){
    var drag = new Drag("drag");
    drag.init();
}
//获取浏览器窗口宽度
function getInner(){
    var pageWidth = window.innerWidth;
    var pageHeight = window.innerHeight;
    if(typeof pageWidth != "number"){
        if(document.compatMode == "CSS1Compat"){
            pageWidth = document.documentElement.clientWidth;
            pageHeight = document.documentElement.clientHeight;
        }else {
            pageWidth = document.body.clientWidth;
            pageHeight = document.body.clientHeight;
        }
    }
    return {width:pageWidth,height:pageHeight};
}
//构造函数
function Drag(id){
    this.obj = document.getElementById("drag");
    this.disx = 0;
    this.disy = 0;
}
 
Drag.prototype.init = function(){
    //this 指针
    var me = this;
    this.obj.||event;
        me.onmouseDown(e);
        //阻止默认事件
        return false;
    }
}
 
Drag.prototype.onmouseDown = function(e){
    //this指针
    var me = this;
    this.disx = e.clientX - this.obj.offsetLeft;
    this.disy = e.clientY - this.obj.offsetTop;
    document.||event;
        me.onmouseMove(e);
    }
    document.onmouseup = function(){
        me.mouseUp();
    }
}
 
 
Drag.prototype.onmouseMove = function (e){
    //this指针
    var lf = e.clientX - this.disx;
    var tp = e.clientY - this.disy;
     
    if(lf < 0){ //防止拖曳层超出左边界
        lf = 0;
    }else if(lf > getInner().width - this.obj.offsetWidth){
        lf = getInner().width - this.obj.offsetWidth;//防止拖曳层超出右边界
    }
    if(tp < 0){
        tp = 0;//防止拖曳层超出上边界
    }else if(tp > getInner().height - this.obj.offsetHeight){
        tp = getInner().height - this.obj.offsetHeight;//防止拖曳层超出下边界
    }
    this.obj.style.left = lf + 'px';
    this.obj.style.top = tp + 'px';
};
 
Drag.prototype.mouseUp = function (){
 document.onmousemove = null;
 document.onmouseup = null;
};

本文转自  小旭依然  51CTO博客,原文链接:http://blog.51cto.com/xuyran/1886642
相关文章
|
4月前
|
JavaScript 前端开发 Java
深入JS面向对象(原型-继承)(三)
深入JS面向对象(原型-继承)
46 0
|
3月前
|
设计模式 JavaScript 前端开发
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
JavaScript的继承机制基于原型链,它定义了对象属性和方法的查找规则。每个对象都有一个原型,通过原型链,对象能访问到构造函数原型上的方法。例如`Animal.prototype`上的`speak`方法可被`Animal`实例访问。原型链的尽头是`Object.prototype`,其`[[Prototype]]`为`null`。继承方式包括原型链继承(通过`Object.create`)、构造函数继承(使用`call`或`apply`)和组合继承(结合两者)。ES6的`class`语法是语法糖,但底层仍基于原型。继承选择应根据需求,理解原型链原理对JavaScript面向对象编程至关重要
70 7
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
|
3月前
|
JavaScript 前端开发
记录Javascript数组类练习
记录Javascript数组类练习
19 1
|
3月前
|
JavaScript 前端开发
JS循环语句以及一些小练习
JS循环语句以及一些小练习
20 1
|
3月前
|
前端开发 JavaScript 搜索推荐
[初学者必看]JavaScript 15题简单小例子练习,锻炼代码逻辑思维
【6月更文挑战第3天】这是一个JavaScript编程练习集,包含15个题目及答案:计算两数之和、判断偶数、找数组最大值、字符串反转、回文检测、斐波那契数列、数组去重、冒泡排序、阶乘计算、数组元素检查、数组求和、字符计数、数组最值和质数判断以及数组扁平化。每个题目都有相应的代码实现示例。
122 1
|
3月前
|
存储 前端开发 JavaScript
[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维
【6月更文挑战第2天】这是一个前端小项目合集,包括图片轮播器、动态列表、模态框、表单验证等14个项目,旨在帮助初学者提升编码技能和实战经验。每个项目提供关键提示,如使用HTML、CSS和JavaScript实现不同功能,如事件监听、动画效果和数据处理。通过这些项目,学习者可以锻炼前端基础并增强实际操作能力。
54 2
|
3月前
|
前端开发 JavaScript 容器
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
48 0
|
3月前
|
JavaScript 前端开发
记录JavaScript练习
记录JavaScript练习
15 0
|
4月前
|
前端开发 JavaScript
前端 JS 经典:Class 面向对象
前端 JS 经典:Class 面向对象
22 1
|
4月前
|
JavaScript 前端开发 C语言
JavaScript编程语法练习
本篇文章是对于javaScript中if ,switch,while ,do-while,,for语法的作业练习.对于我来说也是对自己知识掌握的一种检验.是对js的基础语法进行的一次练习,通过有趣的示例进行练习,使得对于代码能够增加印象,对于知识的掌握更加透彻.