Dojo之路:如何利用Dojo实现Drag and Drop效果_dojo

如今各种使用AJAX技术的站点都实现了Drag and Drop(拖动)效果,利用Dojo框架也可以很方便的实现,相比较其它框架,代码更少,且对浏览器的兼容性支持比较好。

  先看一下效果,以下是51AJAX.com站点首页的效果,其中各个模块是可以任意拖动的:
  screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

  如何来实现呢?以下是具体步骤。为简单起见,做了一个Drag and Drop的Demo页面:

  screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>
  以下是具体步骤:
  1.html部分
  要实现拖动,首先要有容器,其次要有可拖动的元素。在这里我们设置了三个Div作为容器,ID分别是container1,container2,container3,每个容器中各放置了一个Div作为可拖动元素,它们的class是divdrag。
  2.javascript代码  
  首先在头部加入对dojo.js的引用,然后根据获取class为divdrag的元素,把它们注册为dojo.dnd.HtmlDragSource对象,再将container1,container2,container3注册为三个容器,且指定容器中的可拖动元素可以被拖动到的容器,以上事件封装成一个函数,增加至window.onload事件中。

    要下载完整的Dojo框架,请点击这里下载:http://download.dojotoolkit.org/release-0.3.1/dojo-0.3.1-ajax.zip。

复制代码 代码如下:

//引用以下两个dojo包 
dojo.require("dojo.style");
dojo.require("dojo.dnd.*");

function init(){
  //利用classname取到元素列表,将其注册为dojo.dnd.HtmlDragSour
  var arr=dojo.html.getElementsByClass('divdrag')
  for(var i=0;i<arr.length;i++){
   var parentDiv=arr[i].parentNode.id
   new dojo.dnd.HtmlDragSource(arr[i],parentDiv);   
  }
  //定义容器 
     new dojo.dnd.HtmlDropTarget("container1", ["container1","container2","container3"]);   
     new dojo.dnd.HtmlDropTarget("container2", ["container1","container2","container3"]);   
     new dojo.dnd.HtmlDropTarget("container3", ["container1","container2","container3"]);       
}

//增加到window.onload事件中
window.onload=function(){init();}

时间: 2024-09-14 23:07:21

Dojo之路:如何利用Dojo实现Drag and Drop效果_dojo的相关文章

利用Dojo和JSON建立无限级AJAX动态加载的功能模块树_dojo

 看了"使用hibernate实现树形结构无限级分类"这篇文章后,我也想将自己在所有开发的项目中使用的功能模块树的实现方法以及完整DEMO(含源码)贴出来和大家分享.其实在我的博客里是老早贴出来的,由于时间关系没好好整理.        功能模块树是几乎在每个项目里都要用到的东西,利用Dojo的好处就是可以实现树的子节点的动态加载,这在树节点很多的情况下是很有用的.         下载附件二dojotree.rar,解压后将dist\dojotree.war部署到应用服务器即可浏览D

利用Dojo Data开发统一的数据访问模型

目前,企业内部的数据量正快速膨胀,客户端和服务器端之间交换的数据格式也是多种多样.由于 Web2.0.RIA 的快速发展,在客户端处理数据逐渐成为一种趋势,但是基于 XMLHTTPRequest 的一般 Ajax 客户端程序必须由 Web 开发人员自己编写处理各种数据格式的代码.这样,不仅加重了客户端逻辑的复杂性,而且降低了程序的可维护性和可扩展性.而 Dojo Data 库旨在为不同的数据格式提供一种统一的数据访问模型,使得数据的读写都采用统一的接口,从而有利于程序的移植和维护.通过阅读本文读

利用Dojo EnhancedGrid控件进行数据异步传输和保存

客户需要做一个公司http://www.aliyun.com/zixun/aggregation/13617.html">信息管理界面,管理员进入后只要点击查询按钮就能查出所需要的信息,在查询的过程中页面不需要刷新,减少用户的等待时间. 前台框架设计:struts 2.0+Dojo 1.7.1 业务逻辑:Spring 3.1 持久层:mybatis 3.0.6 + DB2 9.7 展现层:介绍示例应用程序的展现层的设计 Dojo EnhancedGrid 简介 顾名思义,EnhancedG

双路录像利用静态变量做多对象之间简单写互斥

双路录像利用静态变量做多对象之间简单写互斥        笔者目前在研的项目是基于android6.0的智能后视镜产品,目前存在前视录像跟后视录像的功能,存储的文件路径都是保持到外部的同一张SD卡上的.我们都有一个这样的经验:比如往SD卡拷文件,比如2个文件都是50M,先拷贝第一个50M文件完成后,再拷贝另外一个50M的文件,这样拷贝这2个总共100M文件花费的时间比会先拷贝一个50M文件,在还没有完成拷贝第一个文件的时候就复制拷贝第二个50M的文件到SD卡上等它完成拷贝花费的总时间要少.: /

[DevExpress]利用LookUpEdit实现类似自动提示效果

原文:[DevExpress]利用LookUpEdit实现类似自动提示效果 关键代码: public static void BindWithAutoCompletion(this LookUpEdit lue, object source, string value, string displayName, string prompttext) { lue.Properties.DataSource = source; lue.Properties.DisplayMember = displa

利用 :placeholder-shown 选择器实现 label 浮动效果

本文讲的是利用 :placeholder-shown 选择器实现 label 浮动效果, 设计师似乎喜欢用 浮动 label 模式 来设计华丽的效果,虽然我不确定我是否百分百喜欢这种方式,但我忍不住快速实现了一个这样的 demo.这个版本用上了一些我最近才看见的现代 CSS 表单样式技巧,特别是 :placeholder-shown 选择器. 先说重点:不管从形状或者形式上,这都不是一种最佳实践.这个 demo 的实现适用于某些浏览器的较新版本 - 尤其是 Chrome/Opera 和 Safa

HTML5 拖放(Drag和drop)

在工作当中,我们会常常见到像UC浏览器的新选项卡一样的可以自定义拖拽摆放效果.大的像淘宝的装修,QQ空间装扮等,小到一些游戏等等随处可见拖放的使用场景. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 目前浏览器支持情况:Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5 支持拖放.注释:在 Safari 5.1.2 中不支持拖放. 下面看看一个具体的字母拖放demo:

拖动-android drag and drop

问题描述 android drag and drop 使用drag and drop框架,给视图A.B.C绑定onDrag()方法,调用了A的onDrag方法后,调用B的onDrag方法会触发A的ondrag方法,求解

Android利用ViewPager实现用户引导界面效果的方法_Android

本文实例讲述了Android利用ViewPager实现用户引导界面效果.分享给大家供大家参考,具体如下: 我相信有很多朋友在装完软件首次打开时,有很多软件都有一个软件功能介绍, 例如刚装完微信打开它,有很多介绍微信功能的图片,并且在屏幕下方有很多小圆点提示你当前图片的位置. 今天我就来实现这么个功能 所实现的功能: 1.可以左右滑动功能图片. 2.图片的索引 看出当前图片所在的位置. 3.可循环滑动. 4.图片的索引带有动画效果. 本次学习主要是利用ViewPager实现用户引导界面 在这里,我