[javascript]一种兼容性比较好的简单拖拽

作为一个马上要找工作、非计算机专业、热爱前端的大四狗,最近开始疯狂写demo、看书,准备九、十月份的校招。

晚上用js实现了一个比较简单(low)的拖拽效果,初步测试兼容性还是不错的,于是写一段小博文记录下~大神求轻喷

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #box {
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;
        }
    </style>
</head>
<body>
    <div id="box"></div>
    <script>
        window.onload = function (){
            var disX = 0;
            var disY = 0;
            var oBox = document.getElementById("box");
            oBox.onmousedown = function (ev){
                var oEvent = ev || event;

                oBox.style.cursor = "move";
                disX = oEvent.clientX - oBox.offsetLeft;
                disY = oEvent.clientY - oBox.offsetTop;

                document.onmousemove = function (ev){
                    var oEvent = ev || event;
                    var theLeft = oEvent.clientX - disX;
                    var theTop = oEvent.clientY - disY;

                    // 禁止用户从浏览器左框拖出
                    if (theLeft < 0) {
                        theLeft = 0;
                    } else if (theLeft > document.documentElement.clientWidth-
                        oBox.offsetWidth) {
                        theLeft = document.documentElement.clientWidth-
                        oBox.offsetWidth;
                    } else if (theTop < 0) {
                        theTop = 0;
                    } else if (theTop > document.documentElement.clientHeight-
                        oBox.offsetHeight) {
                        theTop = document.documentElement.clientHeight-
                        oBox.offsetHeight;
                    }
                    oBox.style.left = theLeft + ‘px‘;
                    oBox.style.top = theTop + ‘px‘;
                }

            }

            document.onmouseup = function (){
                document.onmousemove =null;
            }
         // 窗口重设大小时的处理方法
            window.onresize = function (){
                oBox.style.left = document.documentElement.clientWidth/2-oBox.offsetWidth/2 + ‘px‘;
                oBox.style.top = document.documentElement.clientHeight/2-oBox.offsetHeight/2 + ‘px‘;
            }
            // 兼容firefox 3.6.19
            return false;
        }
    </script>
</body>
</html>
时间: 2024-10-11 05:37:41

[javascript]一种兼容性比较好的简单拖拽的相关文章

学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcElement(触发事件的事件源对象)和attachEvent("onclick",function(){...}); 2. a. 实现拖放(Drag and Drop): 目前支支持IE, 若定制某对象为可拖放对象, 则必须覆盖目标对象的dragenter和dragover事件, 可以用e

javascript加CSS3做不一样的3D拖拽照片墙

知识点:CSS33D效果,CSS3过度,原生JavaScript拖拽模块开发,动态style样式,力学模拟算法,event对象详解,js逻辑思维与编程思想. html代码: <div class='perspective'> <div class='wrap'> <img src='images/1.jpg' width='133' height='200' alt='#'> <img src='images/2.jpg' width='133' height='

javascript小实例,PC网页里的拖拽(转)

这是现在的效果,可能改了一些,原来的效果是,里面的这张图是可以上下左右拖动的,然后房子上面的显示的楼栋号,也跟着图片一起移动,当时js能力还不行,未能实现项目经理的要求,不过后来项目经理又把这个效果推掉了,换了另外的一个效果 尽管项目经理不想要这个效果了,但是当时就在我心里留下了一个节,到今天都忘不了这个梗. 好了,这就是我今天想写这篇博客的初衷,希望能给想实现这类拖拽效果,但是不知道该怎么去实现的同学,提供一种思路,不给青春留遗憾,当然实现拖拽的方法有很多,这里就只介绍JavaScript中的

Unity UGUI 实现简单拖拽功能

说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一种就是 UI 在Canvas内的坐标(暂时叫做ugui坐标),这两个坐标是不一样的,所以拖拽就需要转换. 因为鼠标的移动是屏幕坐标,而 UI 的移动是ugui坐标.转换的方法: RectTransformUtility.ScreenPointToLocalPointInRectangle ( - ); 这个方法可以把屏幕坐标转换成 ugui 坐标.这里我们只需要知道 UI 的坐标和鼠标的坐标是不一样的,他

简单拖拽实现

拖拽的元素必须绝对定位. var Drag = { // 拖拽元素 obj: null, //el: 拖拽元素 //minX: X轴最小边界 //minY: Y轴最小边界 //maxX: X轴最大边界 //maxY: X轴最大边界 init: function(el,minX,maxX,minY,maxY){ this.obj = el; if(isNaN(this.getLocation().x)) this.obj.style.left = '0px'; if(isNaN(this.getL

Javascript:简单拖拽效果的实现

核心代码: /* *完成一个拖拽事件由三大事件组成: *1:onmousedown:选择元素 *2:onmousemove:移动元素 *3:onmouseup:释放元素 */ function drag(obj){ obj.onmousedown=function(ev){ var ev=ev || event; var disX=ev.clientX-this.offsetLeft; var disY=ev.clientY-this.offsetTop; //IE下选中文字后移动时,文字跟着移

原生js通过prottype写的一个简单拖拽

<!DOCTYPE html> <head> <meta charset="utf-8"/> <title></title> <style> .box{ position:absolute;width:100px;height:100px;background-color:#FF6E3D;left:0px;top:0px;left:20px; /*修饰*/ border-radius:50%;box-shadow:

JS 简单拖拽

var login = document.getElementById('box'); login.onmousedown = function(e) { var e = getEvent(e);//获取event对象 var _this = this; var diffX = e.clientX - _this.offsetLeft;//鼠标点击的坐标点x减去box元素距离左边的距离,得到的差为鼠标垫距离box元素左边的距离 var diffY = e.clientY - _this.offs

js插件-简单拖拽

前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/  是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话不多说. first: html和css <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title&g