面向对象实现拖拽

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <style type="text/css">
        #box{position:absolute; left:100px; top:100px; padding:5px; background:#f0f3f9; font-size:12px; -moz-box-shadow:2px 2px 4px #666666; -webkit-box-shadow:2px 2px 4px #666666;}
        #main{border:1px solid #dae5be; background:white;}
        #bar{line-height:24px; background: #99c1f9; border-bottom:1px solid #dae5be; padding-left:5px; cursor:move;}
        #content{width:420px; height:250px; padding:10px 5px;}
    </style>

</head>
<body>
<div id="box">
    <div id="main">
        <div id="bar">点蓝色部分拖拽</div>
        <div id="content">
           以下是内容部分。。。。。
        </div>
    </div>
</div>
<script type="text/javascript">
    var oBox = document.getElementById("box");
    var oBar = document.getElementById("bar");
    startDrag(oBar, oBox);

// 元素的拖拽简单实现
var params = {
 left: 0,
 top: 0,
 currentX: 0,
 currentY: 0,
 flag: false
};
//获取相关CSS属性
var getCss = function(o,key){
 return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,null)[key];
};

//拖拽的实现
var startDrag = function(bar, target){
 if(getCss(target, "left") !== "auto"){
  params.left = getCss(target, "left");
 }
 if(getCss(target, "top") !== "auto"){
  params.top = getCss(target, "top");
 }
 //o是移动对象
 bar.onmousedown = function(event){
  params.flag = true;
  if(!event){
   event = window.event;
   bar.onselectstart = function(){
    return false;
   } 
  }
  var e = event;
  params.currentX = e.clientX;
  params.currentY = e.clientY;
 };
 document.onmouseup = function(){
  params.flag = false; 
  if(getCss(target, "left") !== "auto"){
   params.left = getCss(target, "left");
  }
  if(getCss(target, "top") !== "auto"){
   params.top = getCss(target, "top");
  }
 };
 document.onmousemove = function(event){
  var e = event ? event: window.event;
  if(params.flag){
   var nowX = e.clientX, nowY = e.clientY;
   var disX = nowX - params.currentX, disY = nowY - params.currentY;
   target.style.left = parseInt(params.left) + disX + "px";
   target.style.top = parseInt(params.top) + disY + "px";
  }
 } 
};
</script>
</body>
</html>

时间: 2024-12-09 10:00:00

面向对象实现拖拽的相关文章

面向对象的拖拽

1.创建一个div,并简单设置样式 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type=&qu

面向对象继承拖拽 写法

JavaScript 面向对象的拖拽

一.body <div id="box"></div> 二.css <style> #box { position: abaolute; top: 0; left: 0; width: 100px; height: 100px; } </style> 三.JavaScript <script> class Drag{ constructor(el) { this.el = el; el.startOffset = null;

拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到这里突然想起一句话“没有任何一个题目是彻底完成的.总还会有很多事情可做......” 我想这句话程序开发大概也适用吧,前端开发人员总是可以结合自己之前学到“拖拽”相关知识,不断扩展.完善.无穷无尽.......     利用匿名函数自执行实现封装 ;(function(){ //do somethi

图片拖拽面向对象写法-1

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽之面向对象</title> <style> #box1{width: 100px;height: 100px;background-color: #0A246A; position: absolute;} </style> <s

Javascript面向对象拖拽

function Drag(id) { var _this=this; this.disX=0; this.disY=0; this.oDiv=document.getElementById(id); this.oDiv.onmousedown=function(e) { _this.fnDown(e); } } Drag.prototype.fnDown=function(e) { var _this=this; var e=e||event; this.disX=e.pageX-this.o

用面向对象写一个拖拽,并实现继承

思路:先用面过过程的方法将要实现的效果实现出来,然后按照以下步骤将拆分成面向对象 //面向过程的程序改写成面向对象程序不能有函数嵌套 //将window.onload初始化整个程序改为构造函数初始化整个对象 //将面向过程中的变量改为属性 //将面向过程中的函数改为方法 index.html代码: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">

面向对象写选项卡、拖拽

js: 面向对象说白了就是一个黑匣子,所谓黑匣子就是知道具体怎么弄但不了解里面运转流程. 面向对象的组成:属性.方法. 属性其实也就是js里面常用的对象,只不过换了一只叫法. 至于方法则是js里面常用的函数. 唯一两者的区别,属性和方法是被定义的,也就是它们是被束缚的,反之,函数.对象异然. 例子: var a=12; alert(a);               //对象是自由的 var arr=[1,2,3,4]; arr.a=14; alert(arr.a);         //属性被

面向对象拖拽练习题

首先来了解一下,面向对象练习的基本规则和问题: 先写出普通的写法,然后改成面向对象写法项 普通方法变形 ·尽量不要出现函数嵌套函数 ·可以有全局变量 ·把onload函数中不是赋值的语句放到单独函数中 改成面向对象 ·全局变量就是属性 ·函数就是方法 ·onload中创建对象 ·改this指针问题 先把拖拽效果的布局完善好: HTML 结构: <div id="box"></div> csc 样式: #box{position: absolute;width: