HTML5拖动

  <style>
        #a{
            height: 100px;
            width: 100px;
            border: 1px solid black;
            float: left;
            margin-left: 200px;
            text-align: center;
            line-height: 100px;
        }
        #b{
            height: 100px;
            width: 100px;
            line-height: 100px;
            border: 1px solid black;
            float: right;
            margin-right: 200px;
            text-align: center;
        }
    </style>
</head>
<body>
<div id="a"><img src="img/w3school_logo_black.gif" draggable="true"></div>
<div id="b"></div>

</body>
<script>
    (function(){

    })();
    function $() {
        var elements = new Array();

        for (var i = arguments.length - 1; i >= 0; i--) {
            var element = arguments[i];

            if (typeof element == "string") {
                element = document.getElementById(element);
            }

            if (arguments.length == 1) {
                return element;
            } else {
                elements.push(element);
            }

            return elements;
        };
    };

    //封装事件处理
    function addEvent(node, type, listener) {
        if (!(node = $(node))) return false;
        if (node.addEventListener) {
            //W3C
            node.addEventListener(type, listener, false);
            return true;
        } else if (node.attachEvent) {
            node[‘e‘ + type + listener] = listener;
            node[type + listener] = function() {
                node[‘e‘ + type + listener](window.event);
            };
            node.attachEvent(‘on‘ + type, node[type + listener]);
            return true;
        }

        return false;

    };

    //移出事件
    function removeEvent(node,type,listener){
        if (!(node = $(node))) return false;
        if(node.removeEventListener){
            node.removeEventListener(type,listener,false);
            return true;
        }else if(node.removeEvent){
            node.detachEvent(‘on‘+type,node[type+listener]);
            node[type+listener] = null;
            return true;
        }
        return false;
    };
    //获取事件对象
    function getEventObject(e){
        return e || window.event;

    }
    //阻止事件冒泡
    function stopPropagation(eventObject){
        var eventObject = eventObject || getEventObject();
        if(eventObject.stopPropagation){
            eventObject.stopPropagation();
        }else{
            eventObject.cancelBubble = true;
        }
    };
    //阻止浏览器默认 事件
    function stopDefault(eventObject){
        var eventObject = eventObject || getEventObject();
        if(eventObject.preventDefault){
            eventObject.preventDefault();
        }else{
            eventObject.returnValue = false;
        }
    };
    //获取鼠标点击时的x和y坐标
    function getPointerPositionInDocument(eventObject) {
        eventObject = eventObject || getEventObject(eventObject);
        var x = eventObject.pageX || (eventObject.clientX +
                (document.documentElement.scrollLeft || document.body.scrollLeft));
        var y = eventObject.pageY || (eventObject.clientY +
                (document.documentElement.scrollTop || document.body.scrollTop));
        return {
            ‘x‘: x,
            ‘y‘: y
        };
    };

    //获取文档的宽和高
    function getWindowSize(){
        var width = height = 0;
        if(this.innerWidth){
            width = this.innerWidth;
            height = this.innerHeight;
        }else if(document.documentElement && document.documentElement.clientHeight){
            width = document.documentElement.clientWidth;
            height = document.documentElement.clientHeight;
        }else if(document.body && document.body.clientHeight){
            width = document.body.clientWidth;
            height = document.body.clientHeight;
        }

        return {‘width‘:width,‘height‘:height};
    };

    //获取标签的宽、高和left、top
    function getDimensions(element){
        if (!(element = $(element))) return false;

        return {
            ‘left‘:element.offsetLeft,
            ‘top‘:element.offsetTop,
            ‘width‘:element.offsetWidth,
            ‘height‘:element.offsetHeight
        };
    }

    //设置标签样式
    function setStyle(element, styles) {
        if (!(element = $(element))) return false;
        for (property in styles) {
            if (!styles.hasOwnProperty(property)) continue;

            if (element.style.setProperty) {
                element.style.setProperty(
                        uncamelize(property, ‘-‘), styles[property], null);
            } else {
                element.style[camelize(property)] = styles[property];
            }
        }
        return true;
    };
    //将-形式的字符串转换为驼峰命名法的字符串
    function camelize(s) {
        return s.replace(/-(\w)/g, function(strMatch, p1) {
            return p1.toUpperCase();
        });
    };

</script>
时间: 2024-12-28 05:30:05

HTML5拖动的相关文章

HTML5 拖动

触发的事件有:dragstart事件.drag事件和dragend事件. 按下鼠标键并开始移动鼠标的时候,会在被拖拽的元素上触发dragstart事件.这时候光标变成”不能放”符号(圆环中有一条反斜线),表示不能把元素放在自己上门.拖拽开始时,可以通过ondragstart事件处理程序运行JavaScript代码. 触发dragstart事件后,随即会触发drag事件,而在元素被拖动期间会持续触发drag事件.这个事件与mousemove和touchmove事件类似.当拖动停止时(无论把元素放到

html5拖动滑块

html5中input有增加type=range.这为拖动滑块提供了很大的便利.下面是他的属性: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .main{ position: relative;width: 500px;} #range { -w

HTML5拖动画布/拖放

<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function allowDrop(ev){ ev.preventDeafault(); } function drag(ev){ ev.dataTranster.setData("Text",ev.target.id); } function drop(ev){ var data=ev.dat

文件拖动上传jsp

在大型企业的开发过程中,很多比较有趣而实际的功能往往都是让大家望而却步,我给大家带来一个百度云盘和360云盘的HTML5多文件拖动上传技术: 1:记得导入:common-fileupload.jar包. 上传upload.jsp页面 <%@page import="org.apache.struts2.json.JSONUtil"%> <%@page import="java.io.File"%> <%@page import=&quo

HTML实现文件拖动上传

在大型企业的开发过程中,很多比较有趣而实际的功能往往都是让大家望而却步,我给大家带来一个百度云盘和360云盘的HTML5多文件拖动上传技术: 1:记得导入:common-fileupload.jar包. 上传upload.jsp页面 <%@page import="org.apache.struts2.json.JSONUtil"%> <%@page import="java.io.File"%> <%@page import=&quo

怎样创建一个MVC Telerik Reporting项目(一)

为了大家能够很直观地按步骤来学习,我尽量把操作过程用gif格式录下来. step1:新建一个MVC解决方案 step2 在此目录下C:\Program Files (x86)\Telerik\Reporting Q2 2015\Html5 拖动文件夹ReportViewer到解决方案下: step3:添加命名空间:Telerik.Reporting 和Telerik.ReportViewer.Mvc 记得在Views下的Web.config里也添加命名空间的引用 <add namespace=&qu

html5+php实现文件拖动上传功能

界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,以及上传时的样式也进行了改动,之所以选这个的原因就是,我很容易做扩展,它支持3种方式添加图片,一种拖拽上传,一种常规的选择文件上传,另外的就是添加网络图片.它很巧妙的把三种上传模式整合到了一起,而且你可以用IE浏览器浏览下,如果不支持HTML5,是没有拖拽上传图片的提示的,如图: 拖拽上传最重要的就是js部分的代码,它实现了70%的功能,另外30%仅仅是把图片信息提交到后台,然后做对应的处理,比如压缩啊,裁剪啊云云.所以先来看

运用HTML5原生拖动事件(drag)实现拖动效果

拖动效果相信很多朋友都自己写过,不管你用原生JS还是Jquery要实现起来也很简单,但是今天我想介绍的是运用HTML5标准中定义的原生拖动事件实现拖动效果. 一.背景: 其实说是HTML5标准定义,其实最早在IE4中就有拖放功能的API,只是在IE4中,网页中只有两种对象可以拖放:图像和某些文本.并且在IE4中唯一有效的放置目标是文本框.到了IE5.5,拖放功能得到了扩展,让网页中的任何元素都可以拖放.最终HTML5以IE的实力为基础制定了拖放规范.FF3.5+,Safari3+和Chrome根

HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)

可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像是可以拖动的,不用再写代码即可拖动.如果想让其他元素标签也可以拖动,那么只有HTML5能实现了.HTML5为所有HTML元素规定了dragable属性,表示元素是否可以拖动.链接和图像的标签中自动将dragable属性自动被设置成true,其他元素的dragable属性的默认值是false. 支持d