用来实现Web页面图片移动托拽的代码段

2016-02-19 15:40 42 1 收藏

下面是个简单易学的用来实现Web页面图片移动托拽的代码段教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

以下这段JS是主要解决在画面生成Image项目,并通过鼠标事件进行脱拽、移动等操作的代码。
script language="javascript" type="text/javascript"
var top,left;
var src,drag,dir,ope,refer,halfwidth;
var unit=30;

var aryItems,itemNum=10,index,isInit,id,max=23;

function PageLoad()
{
    document.form1.onsubmit=OnSubmit;

    aryItems=new Array(itemNum);
    top=document.getElementById("TABLE").getClientRects()[0].top;
    left=document.getElementById("TABLE").getClientRects()[0].left;
   
    if(document.getElementById("__Gantt").value!=null&&document.getElementById("__Gantt").value!="")
    {
        var gantt=document.getElementById("__Gantt").value;
        var array=gantt.split(";");
        var length=array.length-1;
        var start,width,item;
       
        for(index=0;indexlength;index++)
        {
            item=array[index].split(",");
            start=item[0];
            width=item[1];
           
            id="Item"+index;
            aryItems[index]=id;
           
            var track = document.createElement("IMG");
            track.setAttribute("id",id);
            track.setAttribute("src","blue.gif");

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

            document.body.appendChild(track);
            document.getElementById(id).style.position="absolute";
            document.getElementById(id).style.top=top+unit*index;
            document.getElementById(id).style.left=left+unit*start;
            document.getElementById(id).width=unit*width;
            document.getElementById(id).style.zIndex=9;
        }
    }
    else
    {
        for(index=0;indexitemNum;index++)
        {
            id="Item"+index;
            aryItems[index]=id;
           
            var track = document.createElement("IMG");
            track.setAttribute("id",id);
            track.setAttribute("src","blue.gif");

            document.body.appendChild(track);
            document.getElementById(id).style.position="absolute";
            document.getElementById(id).style.top=top+unit*index;
            document.getElementById(id).style.left=left+unit*index;
            document.getElementById(id).width=unit;
            document.getElementById(id).style.zIndex=9;
        }
    }

    drag=false;
    left=document.getElementById(aryItems[0]).getClientRects()[0].left;
}

function OnDrag()
{
    if(event.srcElement.tagName!="IMG"&&!drag)
    {
        if(event.srcElement.id=="btnTrim")
        {
//            OnTrim();
        }
    }
    else
    {
        if(!drag)
        {
            src=event.srcElement;
            halfwidth=src.width/2;
            drag=true;
           
            //  方向の判断
            if(event.clientXsrc.getClientRects()[0].left+halfwidth)
            {
                dir="Backward";
                refer=src.getClientRects()[0].left+src.width;
            }
            else
            {
                dir="Forward";
                refer=src.getClientRects()[0].left;
            }
           
            //  操作の判断:1.移動・2.縮小/拡大
            if(event.shiftLeft)
            {
                ope="Move";
                refer=event.clientX-src.getClientRects()[0].left;
            }
            else
            {
                ope="Scale";
            }
        }
        else
        {
            if(ope=="Scale")
            {
                var sleft=Math.ceil((src.getClientRects()[0].left-left)/unit-1)*unit+left;
                var header=src.getClientRects()[0].left-src.getClientRects()[0].left;
                var tail=src.width-header-Math.ceil((src.width-header)/unit)*unit;
                var swidth=Math.ceil((src.width-header)/unit)*unit;
                if(header0)
                {
                    swidth=swidth+unit;
                }
                if(tail0)
                {
                    swidth=swidth+unit;
                }
                src.style.left=sleft;
                src.width=swidth;
            }

            if(ope=="Move")
            {
                src.style.left=Math.ceil((src.getClientRects()[0].left-left)/unit-1)*unit+left;
            }
           
            drag=false;
            OnTrim()
        }
    }
}

function OnScale()
{
    if(src!=null&&drag)
    {
        if(ope=="Scale")
        {
        //  縮小/拡大の場合
            if(dir=="Forward")
            {
                if(event.clientX-refer=unit)
                {
                    src.width=event.clientX-refer;
                }
            }
            else
            {
                if(refer-event.clientXunit)
                {
                    src.style.left=event.clientX;
                    src.width=refer-src.getClientRects()[0].left;
                }
            }
        }
        else
        {
        //  移動の場合 http://www.devdao.com/
            src.style.left=event.clientX-refer;
        }
    }
   
    if(event.srcElement!=null)
    {
        if(event.srcElement.tagName=="IMG")
        {
            if(event.clientXevent.srcElement.getClientRects()[0].left+unit/2)
            {
                event.srcElement.style.cursor="w-resize";
            }
            else
            {
                event.srcElement.style.cursor="e-resize";
            }
        }
    }
}

function OnTrim()
{
    var pre,post;
    for(index=0;indexitemNum-1;index++)
    {
        pre=document.getElementById(aryItems[index]);
        post=document.getElementById(aryItems[index+1]);
        if(pre.getClientRects()[0].left+pre.width!=post.getClientRects()[0].left)
        {
            post.style.left=pre.getClientRects()[0].left+pre.width-2;
        }
    }

    for(index=0;indexitemNum;index++)
    {
        pre=document.getElementById(aryItems[index]);
        if(pre.getClientRects()[0].left=left+unit*max)
        {
            pre.style.left=left+unit*max-2;
            pre.width=unit;
        }
       
        if((pre.getClientRects()[0].leftleft+unit*max)&&(pre.getClientRects()[0].left+pre.widthleft+unit*max))
        {
            pre.width=left+unit*max-pre.getClientRects()[0].left;
        }
    }
}

function OnSubmit()
{
    var t="";
    for(index=0;indexitemNum;index++)
    {
        t=t+((document.getElementById(aryItems[index]).getClientRects()[0].left-left)/unit).toString();
        t=t+",";
        t=t+(document.getElementById(aryItems[index]).width/unit).toString();
        t=t+";";
    }
    document.getElementById("__Gantt").value=t;
}

document.onmousedown=OnDrag;
document.onmousemove=OnScale;
/script
当有一个Button做表单提交的时候,会先执行OnSubmit代码段。而在服务器端的操作就是把从客户端发送过来的东西原封不动地发挥去,其中可以加入对数据的修改过程,也可以是通过一进入页面就倒入数据而达到生成画面的目的。
    Protected Sub Button1_Click()Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Write(Request.Params.Item("__Gantt") & "BR")
        Dim strGantt As String = Request.Params.Item("__Gantt")
        ClientScript.RegisterHiddenField("__Gantt", strGantt) 

    End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

    Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            ClientScript.RegisterHiddenField("__Gantt", String.Empty)
        End If
    End Sub希望对大家有用。

来源:http://www.tulaoshi.com/n/20160219/1610163.html

延伸阅读
标签: Web开发
JS代码(随便放哪里): script language="JavaScript" !-- var flag=false; function DrawImage(ImgD){ var image=new Image(); image.src=ImgD.src; if(image.width0 && image.height0){   flag=true;   if(image.width/image.height= 180/110){    if(image.width180){     ImgD.width=18...
这学期实训的时候用MFC做过一个飞机大战,很无聊的东西,一直想用Qt做一个,但是在学校的时候比较颓,回来看了一下。 首先需要解决的问题是图片的移动,怎么说飞机啊子弹啊都是动着的,图片当然要跑起来。 闲话休絮,首先用QtCreator新建一个QtGui程序,命名为PaintWidget,随便起的名字,实验么这不是。 会生成这三个文件,其中呢ui不用...
标签: Web开发
关键字密度查询工具我在网上找了很久,还是没找到一个合适的关键字密度查询工具,为什么呢?因为我的站是utf-8编码的,而网上提供的大部分是GB2312的。还是继续找关键字密度查询工具,结果找到一个,不过不是通过输入网址的,而是自己要把代码拷过去的。这样的关键字密度查询工具虽然用起来不是很方面,但我一时也没找到比较好的关键字密度查询...
Java图片压缩代码 代码如下: package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder;...
标签: 电脑入门
如需查找您在几天前、几周前甚至几个月前访问过、但又不曾添加到Favorites(收藏夹)内的Web页面,则请在Windows XP中借助Internet Explorer 6所提供的History(历史记录)列表进行追溯。单击工具栏上的History(历史)按钮,浏览器便会显示出历史记录,并提供与您今天、昨天、前天和此前三周所访问过的每个页面相对应的快捷方式。这些链接将按...

经验教程

264

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部