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 相关文章推荐
javascript背投广告代码的完善
Apr 08 Javascript
javascript之可拖动的iframe效果代码
Aug 01 Javascript
javascript针对DOM的应用实例(一)
Apr 15 Javascript
javascript HTML+CSS实现经典橙色导航菜单
Feb 16 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
使用百度地图实现地图网格的示例
Feb 06 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
vue mounted 调用两次的完美解决办法
Oct 29 Javascript
详解jenkins自动化部署vue
May 14 Javascript
Typescript的三种运行方式(小结)
Sep 18 Javascript
如何在postman测试用例中实现断言过程解析
Jul 09 Javascript
Vue3中toRef与toRefs的区别
Mar 24 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
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
numpy数组拼接简单示例
2017/12/15 Python
Python中的Django基本命令实例详解
2018/07/15 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
季度思想汇报
2014/01/01 职场文书
2014的自我评价
2014/01/13 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
妇产科护理心得体会
2016/01/22 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
一行Python命令实现批量加水印
2022/04/07 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫