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 相关文章推荐
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
基于jquery打造的百分比动态色彩条插件
Sep 19 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
Oct 11 Javascript
JQuery拖拽元素改变大小尺寸实现代码
Dec 10 Javascript
浅谈jQuery中的事件
Mar 23 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
JS块级作用域和私有变量实例分析
May 11 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 Javascript
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
输出控制类
2006/10/09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
canvas时钟效果
2017/02/16 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
python字符类型的一些方法小结
2016/05/16 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
python hough变换检测直线的实现方法
2019/07/12 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
当当网软件测试笔试题
2015/11/24 面试题
学生安全责任书
2014/04/15 职场文书
企业宣传策划方案
2014/05/29 职场文书
政府个人对照检查材料
2014/08/28 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
新党章的学习心得体会
2014/11/07 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
办公室主任个人总结
2015/02/28 职场文书