html

<div id="box">
</div>

css

*{margin:;padding:;}
#box{width:200px;height:200px;background:cyan;position:absolute;}

js

<script type="text/javascript">
/******
拖拽原理:
拖拽状态=0
鼠标在元素上按下的时候{
拖拽状态=1
记录下鼠标的x和y坐标
记录下元素的x和y坐标
}
鼠标在元素上移动的时候{
如果拖拽状态是0就什么也不做
如果拖拽状态是1,那么
元素y = 现在鼠标y-原来鼠标y+原来元素y
元素x = 现在鼠标x-原来鼠标x+原来元素X
}
鼠标在任何放开的时候{
拖拽状态=0
}
******/ var isDown=false;
var objLeft,objTop,posX,posY,obj;
window.onload=function(){
obj=document.getElementById('box');
obj.onmousedown=down;
obj.onmousemove=move;
obj.onmouseup=up;
}
function down(event){
obj.style.cursor="move";
isDown=true;
objLeft=obj.offsetLeft;
objTop=obj.offsetTop;
posX=parseInt(mousePosition(event).x);
posY=parseInt(mousePosition(event).y);
}
function move(event){
if(isDown==true){
var x=parseInt(mousePosition(event).x-posX+objLeft);
var y=parseInt(mousePosition(event).y-posY+objTop);
var w=document.body.clientWidth-obj.offsetWidth;
var h=document.body.clientHeight-obj.offsetHeight;
console.log(x+","+y);
if(x<0){
x=0
}else if(x>w){
x=w
};
if(y<0){
y=0
}
obj.style.left=x+"px";
obj.style.top=y+"px";
}
}
function up(){
isDown=false;
}
function mousePosition(evt){
var xPos,yPos;
evt=evt||window.event;
if(evt.pageX){
xPos=evt.pageX;
yPos=evt.pageY;
}else{
xPos=evt.clientX+document.body.scrollLeft-document.body.clientLeft;
yPos=evt.clientY+document.body.scrollTop-document.body.clientTop;
}
return{
x:xPos,
y:yPos
}
}
</script>

js鼠标拖拽的更多相关文章

  1. js 鼠标拖拽元素

    基础知识 event.clientX.event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条.IE事件和标准事件都定义了这2个属性 event. ...

  2. js 鼠标拖拽效果实现

    效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  3. js 鼠标拖拽元素移动

    <!DOCTYPE html><html> <head> <title> </title> <style media="sc ...

  4. JS Event 鼠标拖拽事件

    <!DOCTYPE html><html> <head>        <meta charset="UTF-8">         ...

  5. js - 面向对象 - 小案例:轮播图、随机点名、选项卡、鼠标拖拽

    面向对象 对象 : (黑盒子)不了解内部结构, 知道表面的各种操作. 面向对象 : 不了解原理的情况下 会使用功能 . 面向对象是一种通用思想,并非编程中能用,任何事情都能用. 编程语言的面向对象的特 ...

  6. 一款基于jQuery的支持鼠标拖拽滑动焦点图

    记得之前我们分享过一款jQuery全屏广告图片焦点图,图片切换效果还不错.今天我们要分享另外一款jQuery焦点图插件,它的特点是支持鼠标拖拽滑动,所以在移动设备上使用更加方便,你只要用手指滑动屏幕即 ...

  7. Js元素拖拽功能实现

    Js元素拖拽功能实现 需要解决的问题 最近项目遇到了一个问题,就是用户某个操作需要弹出一个自定义的内容输入框,但是有个缺点,当浏览太大的时候没办法点击确认和取消按钮,应为这个弹出框是采用绝对定位的,取 ...

  8. 完美实现鼠标拖拽事件,解决各种小bug,基于jquery

    鼠标拖拽事件是web中使用频率极高的事件,之前写过的代码包括网上的代码,总存在各种各样的问题,包括拖拽体验差,松开鼠标后拖拽效果仍存在以及代码冗余过大等 本次我才用jQuery实现一个尽可能高效的拖拽 ...

  9. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

随机推荐

  1. 友情提醒:欲开发android5.0以上应用,请全部更新开发工具至最新

    周末帮人完成一个项目,android5.0以上版本,谁知道被开发工具折腾的死去活来.我的开发环境是adt-bundle-windows-x86-20140702.zip版本,也是目前能找到的adt-b ...

  2. sql server 向oracle导入表

    选择相应的数据库,右键,任务,选择导出数据 点击下一步 选择Microsoft OLE DB Provider for Sql Server 选择下一步 目标选择.net Framework data ...

  3. Mysql 导入 MSSQL

    .安装mysql数据库的ODBC驱动,mysql-connector-odbc--win32.msi .打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC .51数据源 ...

  4. Upgrade R (升级R语言)

    R R version 3.1.1 (2014-07-10) -- "Sock it to Me" yum list installed | grep R R-core.x86_6 ...

  5. CentOS系统下各文件夹的作用

    linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...

  6. 使用Jmeter进行简单的http接口测试

    1.添加线程组:在“测试计划”上点击鼠标右键-->添加-->threads(Users)-->线程组,添加测试场景设置组件,接口测试中一般设置为1个“线程数”,根据测试数据的个数设定 ...

  7. TAROT.

    /* * * */ #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int t ...

  8. Git与Repo入门(转载)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAADuCAIAAACyDd+sAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...

  9. (一)MII/MDIO接口详解

    本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法. ...

  10. Poco C++——JSON解析

    #include <iostream> #include "Poco/Dynamic/Var.h" #include "Poco/Dynamic/Pair.h ...