js实现图片拖动改变顺序附图


Posted in Javascript onMay 13, 2014

在web页面中,需要改变多个元素的位置,可以通过元素拖动来实现。HTML5中加入了一个全局属性draggable,通过设置true/false来控制元素是否可拖动。

下面以图片拖动为例,用jQuery来实现:页面上有多个图片,把一个图片拖动到其他两个图片中间,就可以将这个图片的位置插入到两图之间。

<!DOCTYPE html> 
<html> 
<head> 
<style> 
.img-div img { 
width:200px; 
height:200px; 
float: left; 
} 
.img-div { 
float: left; 
} 
.drop-left,.drop-right { 
width: 50px; 
height: 200px; 
float: left; 
} 
</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 
<script> 
$(document).ready(function() { // 正在拖动的图片的父级DIV 
var $srcImgDiv = null; 
// 开始拖动 
$(".img-div img").bind("dragstart", function() { 
$srcImgDiv = $(this).parent(); 
}); 
// 拖动到.drop-left,.drop-right上方时触发的事件 
$(".drop-left,.drop-right").bind("dragover", function(event) { 
// 必须通过event.preventDefault()来设置允许拖放 
event.preventDefault(); 
}); 
// 结束拖动放开鼠标的事件 
$(".drop-left").bind("drop", function(event) { 
event.preventDefault(); 
if($srcImgDiv[0] != $(this).parent()[0]) { 
$(this).parent().before($srcImgDiv); 
} 
}); 
$(".drop-right").bind("drop", function(event) { 
event.preventDefault(); 
if($srcImgDiv[0] != $(this).parent()[0]) { 
$(this).parent().after($srcImgDiv); 
} 
}); 
}); 
</script> 
</head> 
<body> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/38538/f/6864556.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/349669/f/6695960.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/349669/f/6683901.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/349669/f/5121337.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
</body> 
</html>

dragstart是开始拖动元素的事件,dragover是拖动到元素上方的事件,drop是拖动结束松开鼠标的事件。

draggable="true"表示img元素是可以拖动的,不过实际上img默认就是可拖动的,所以这个属性也可以去掉,如果要拖动div元素那么就需要设置draggable="true"。

class为drop-left和drop-right的div元素放在图片的左右侧,用于接收其他图片拖动到这个位置。

js实现图片拖动改变顺序附图

Javascript 相关文章推荐
jQuery自动切换/点击切换选项卡效果的小例子
Aug 12 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
Nov 19 Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
Jan 05 Javascript
Javascript中的arguments对象
Jun 20 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
javaScript中indexOf用法技巧
Nov 26 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
javascript判断是否按回车键并解决浏览器之间的差异
May 13 #Javascript
js加密解密字符串可自定义密码因子
May 13 #Javascript
JavaScript用Number方法实现string转int
May 13 #Javascript
javascript中expression的用法整理
May 13 #Javascript
JS函数重载的解决方案
May 13 #Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 #Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 #Javascript
You might like
基于mysql的论坛(7)
2006/10/09 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
PHP5.3新特性小结
2016/02/14 PHP
php四种定界符详解
2017/02/16 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
event.srcElement+表格应用
2006/08/29 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
webpack入门必知必会
2017/01/16 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
极简的Python入门指引
2015/04/01 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
餐饮管理自我介绍信
2014/01/15 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
群众路线表态发言材料
2014/10/17 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
入学证明
2015/06/23 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS