zoukankan      html  css  js  c++  java
  • 纯javascript实现可拖住/大小的div

    好久没写了,不得不说人懒了好多..

    也不打算实现什么太厉害的功能,因为不喜欢网上那些一大堆代码的,看的头晕,于是自己写了一个

    旨在越简单越好(当然也走点形式- -其实是自己菜),所以一些宽度和高度都写死了,相信程序猿都知道怎么改的.- -

    (function () {
        DragSize.prototype = {//为DriagSize方法添加其他属性以便调用
            getMove: function(obj) {
                var self = this;
                obj.onmousedown = function(ev) {//为绑定的div绑定鼠标按下事件
                    var oBox = self.dom;
                    var oEvent = ev || event;
                    var disX = oEvent.clientX - this.offsetLeft;
                    var disY = oEvent.clientY - this.offsetTop;
                    oEvent.cancelBubble = true;//阻止默认
                    document.onmousemove = function(ev) {  //给页面绑定一个mousemove事件,用于拖动或者拖拽大小时用
                        var oEvent = ev || event;
                        var oRrsizeX = oEvent.clientX - disX;
                        var oRrsizeY = oEvent.clientY - disY;
                        obj.style.left = oRrsizeX + "px";
                        obj.style.top = oRrsizeY + "px";
                        if (obj == self.dragDiv) {
                            if (oRrsizeX < 10) {//这里的10写死了,因为用于拖拽的点我写死了10px
                                oRrsizeX = 10;
                            }
                            if (oRrsizeY < 10) {//这里的10写死了,因为用于拖拽的点我写死了10px
                                oRrsizeY = 10;
                            }
                            oBox.style.width = oRrsizeX + obj.offsetWidth + "px";
                            oBox.style.height = oRrsizeY + obj.offsetHeight + "px";
                            obj.style.left = oRrsizeX + "px";
                            obj.style.top = oRrsizeY + "px";
                        }
    
                        return false;
                    }
                    document.onmouseup = function() {//鼠标弹起时别忘了把其他事件给取消了哈
                        document.onmousemove = null;
                        document.onnouseup = null;
                    }
                    return false;
                }
            }
        };
    })();
    
    
    function DragSize(dom) {
        var self = this;
        self.dom = dom;
        self.dragDiv = createDragDiv();
        
        if (self.dom && self.dom.tagName == "DIV") {
            self.dom.appendChild(self.dragDiv);
            self.getMove(self.dom);
            self.getMove(self.dragDiv);
        } else {
            throw "Wrong dom for binding.";
        }
        return self;
    }
    
    //生成一个显示在右下角的点
    function createDragDiv() {
        var div = document.createElement("DIV");
        div.style.width = div.style.height = "10px";
        div.style.background = "#6D71EF";
        div.style.position = "absolute";
        div.style.right= "0px";
        div.style.bottom= "0px";
        div.style.cursor = "se-resize";
        return div;
    }

    以上保存成DragSize.js文件.
    然后页面上只需要实例化一下就可以了

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>可拖拽div大小呵呵呵呵呵</title>
    <style type="text/css">
        *{ padding:0; margin:0;}
        #box,#Div1{ width:100px; height:100px; background:#CCCCCC; border:1px solid #990033; position:absolute;}
    </style>
        <script src="DragSize.js" type="text/javascript"></script>
    <script type="text/javascript">
        window.onload = function() {
            var oBox = document.getElementById('box');
            var aa = new DragSize(oBox);
        };
    </script>
    </head>
     
    <body>
        <div id="box">
        </div>
    </body>
    </html>

    这样就可以了,看下效果

    当然,如果你想实现图片这样的效果的话,只需要把一个<img>图片加到div中,宽和高设置为100%就可以了

    好了,结束了.

    好像还没有....不得不说,如果是处理图片拖大小的话,有个比较简单的办法,使用ondrag事件...

    <html>
    <head>
    </head>
    <body >
    
    <script language="javascript">
        function resizeImage(evt, name) {
            newX = evt.x;
            newY = evt.y;
            eval("document." + name + ".width=newX");
            eval("document." + name + ".height=newY");
        }
    </script>
    <img src="MiniMap.jpg" width="150" height="60" name="image" ondrag="resizeImage(event,'image')">
    </body></html>

    不过....会有一个图标在那里...我暂时还不知道怎么去掉...有知道的告诉我哈.

     
  • 相关阅读:
    (转)基于C#的socket编程的TCP异步实现
    socket
    (转)抽象类、抽象属性、抽象方法
    (转)c# 互斥锁
    (转)C#连接OleDBConnection数据库的操作
    c# DLL封装并调用
    网络cmd命令
    (转)UCOSII在任务切换与出入中断时堆栈指针的使用
    app和bootloader跳转 MSP与PSP
    (转)stm32启动文件详解
  • 原文地址:https://www.cnblogs.com/cskk/p/jsdrag.html
Copyright © 2011-2022 走看看