之前做的一个拖动图片,对图片进行排序的功能。类似于网易相册的自定义排序,页面初始化效果:

把第一张图片拖动到红框标注的绿条处(绿条拖动的时候才会出来)

实现规则:拖动一张图片到某张图片的位置时,该位置后面的图片向后移动。

js代码:

$(document).ready(function(){var that={imgaes:{},box:"",aveWidth:86,aveHeight:86,moveObj:'',status:false}var spacingHtml = '<div node-type="spacing"> </div>';var C = {initState:function(){that.images = $('[node-type="imgW"]');that.box= $('[node-type="box"]');}}var bindDOMFuncs = {'imgMouseDown':function(e){//var evt=fixEvent(e);//阻止浏览器默认行为var evt=e;//if(evt.which && evt.button==0){that.follow=true;$(that.images).bind('dragstart',bindDOMFuncs['unDrag']);//}else{//    $(that.images).unbind('dragstart',bindDOMFuncs['unDrag']);//}
$(that.images).removeClass('selected');$(this).addClass('selected');$(that.box).append(spacingHtml);//获得要移动的节点that.moveObj = this;$(that.images).bind('mousemove',bindDOMFuncs['imgMouseMove']);},'imgMouseMove':function(e){    if(that.follow){                var disX = e.pageX-$(that.box).offset().left;//鼠标位置距离父节点左边的距离var disY = e.pageY-$(that.box).offset().top;//鼠标位置距离父节点上边的距离//判断第一张图片且向左移的情况var posLeft = $(that.moveObj).position().left+that.aveWidth/2;var posTop = $(that.moveObj).position().top;if(that.moveObj){if((that.moveObj == $('[node-type="imgW"]')[0]) && disX<=posLeft && disY<=posTop+that.aveHeight){                              that.status = false;                  return;}if((that.moveObj == $('[node-type="imgW"]')[that.images.length-1]) && disX>=posLeft && disY>=posTop){               that.status = false;                   return;}}//确定移动目标位置    var colNum = Math.round(disX/that.aveWidth);var rowNum = parseInt(disY/that.aveHeight);                                var left = colNum*that.aveWidth;var top =  rowNum*that.aveHeight;$('[node-type="spacing"]').css({'left':left+'px','top':top+'px'});$('[node-type="spacing"]').addClass('spacing');                        that.status = true;}            },'imgMouseUp':function(e){that.follow=false;if(!that.status){return;}that.status = false;$(that.images).unbind('dragstart',bindDOMFuncs['unDrag']);var sLeft = $('[node-type="spacing"]').position().left;var sTop = $('[node-type="spacing"]').position().top;var xNum = sLeft/that.aveWidth;var yNum = sTop/that.aveHeight;            var index = yNum*8+xNum;if(index == 0){var clickObj = $('[node-type="imgW"]')[index];                that.moveObj && $(clickObj).before(that.moveObj);}else{var clickObj = $('[node-type="imgW"]')[index-1];                that.moveObj && $(clickObj).after(that.moveObj);}$('[node-type="spacing"]').remove();$(that.images).unbind('mousemove',bindDOMFuncs['imgMouseMove']);that.moveObj = null;},'unDrag':function(e){if(e.stopPropagation){e.preventDefault();e.stopPropagation();}else{e.cancelBubble = true;e.returnValue = false;}return false;},'imgMouseLeave':function(e){        $('[node-type="spacing"]') && $('[node-type="spacing"]').hide();},'imgMouseEnter':function(e){$('[node-type="spacing"]') && $('[node-type="spacing"]').show();},'docMouseUp':function(e){$('[node-type="spacing"]') && $('[node-type="spacing"]').remove();},'imgClick':function(e){if(e.ctrlKey){$(this).addClass('selected');that.moveObj.push(this);}else{//that.moveObj = null;$(that.images).removeClass('selected');$(this).addClass('selected');//that.moveObj = this;
            }}}var bindDom=function(){$(that.images).bind('mousedown',bindDOMFuncs['imgMouseDown']);$(that.box).bind('mouseup',bindDOMFuncs['imgMouseUp']);$(that.box).bind('mouseenter',bindDOMFuncs['imgMouseEnter']);$(that.box).bind('mouseleave',bindDOMFuncs['imgMouseLeave']);$(document).bind('mouseup',bindDOMFuncs['docMouseUp']);//$(that.images).bind('click',bindDOMFuncs['imgClick']);
        }var init = function(){C.initState();bindDom();}init();
});

html代码:

<div class="dragPic"><div class="dragPicBox clearfix" node-type="box"><div class="item" node-type="imgW" num="1"><span><img src="temp/1.gif" /></span></div><div class="item" node-type="imgW" num="2"><span><img src="temp/2.gif" /></span></div><div class="item" node-type="imgW" num="3"><span><img src="temp/3.jpg" /></span></div><div class="item" node-type="imgW" num="4"><span><img src="temp/4.jpg" /></span></div><div class="item" node-type="imgW" num="5"><span><img src="temp/5.jpg" /></span></div><div class="item" node-type="imgW" num="6"><span><img src="temp/6.jpg" /></span></div><div class="item" node-type="imgW" num="7"><span><img src="temp/7.jpg" /></span></div><div class="item" node-type="imgW" num="8"><span><img src="temp/8.jpg" /></span></div><div class="item" node-type="imgW" num="9"><span><img src="temp/9.jpg" /></span></div><div class="item" node-type="imgW" num="10"><span><img src="temp/10.jpg" /></span></div><div class="item" node-type="imgW" num="11"><span><img src="temp/11.jpg" /></span></div><div class="item" node-type="imgW" num="12"><span><img src="temp/12.jpg" /></span></div><!--<div class="spacing"> </div>--></div></div>

CSS代码:

.dragPic{width:704px;margin:50px auto;
}
.dragPicBox{width:704px;background-color:#c0ebd7;position:relative;
}
.dragPic .item{display: inline;float: left;height: 86px;width: 86px;cursor: move;}
.dragPic .item span{width:80px;height:80px;display:block;margin:3px;border: 1px solid #CDCDCB;
}
.dragPic .item:hover span,.dragPic .selected span{border-color:#FF0000;
}
.dragPic .item.selected{border-color:#FF0000;
}
.dragPic span img{display: block;height: 80px;width: 80px;
}
.dragPic .spacing{position:absolute;width:6px;height:82px;background-color:#1ABC9C;margin-top:3px;
}

目前只支持单张图片的拖动,如果要支持多张图片的拖动的话,可以在此基础上修改即可。至于图片拖动后把图片位置如何让传给后端,那就是你们自己商量的事了,哈哈!!

我真是全盘分享了,满满都是血泪啊!!

转载于:https://www.cnblogs.com/redangel/p/3560028.html

页面上拖动图片进行排序相关推荐

  1. 使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小

    查看本章节 查看作业目录 需求说明: 使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理.距离远时图片放大,距离近 ...

  2. html5使鼠标移动上去页面上的图片向左移动

    在这里插入代码片<!DOCTYPE html> <html><head><meta charset="utf-8"><titl ...

  3. java 图片上传非jsp_java问题用java代码在后台如何将jsp页面上的图片上传(是 爱问知识人...

    先到apache官方下载common-upload组件 上传 // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始化 iti ...

  4. 页面上实现表格数据排序

    源码: <!DOCTYPE html> <html> <head> <style> .table{ width: 400px; height: 180p ...

  5. 去除页面上的图片和视频

    因为上班的时候看一些网站,那些图片或视频就会很碍眼,所以用油猴写了个shift+Q主动屏蔽图片和视频的快捷方式,具体实现代码如下: (function() {window.addEventListen ...

  6. js实现页面上的图片跟着鼠标箭头移动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. php网页怎么插图片,如何在HTML上插入图片

    在HTML中插入图片的方法有:直接在html代码上插入.在CSS样式中插入.在JavaScript中通过给img设置src值来插入图片.innerHTML插入img属性来插入图片 如果一个页面中仅有文 ...

  8. jquery的sortable拖拽排序问题,在页面上多次拖拽保存顺序之后,刷新页面,排序出现紊乱

    一.前言 这篇博客是因为我在做完拖拽保存之后,测试多次拖拽,然后刷新页面,发现保存的顺序出来紊乱.这就很无奈了啊,打印各项数据才发现,因为保存用的是ajax的方式,所以页面上的列表序号是固定的,比如列 ...

  9. 页面上水平飞舞的图片

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  10. 基于js鼠标拖动图片排序

    分享一款基于js的图片排序效果.鼠标拖动图片,重新排列图片的排列顺序.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线 ...

最新文章

  1. c语言找出比n小的最大质数,C++ 实现求小于n的最大素数的实例
  2. 文本文件变身电子表格
  3. git查看一个文件的历史记录
  4. 区分docker stack/service/task
  5. [LUOGU]P1451 求细胞数量
  6. 机器学习降维-深度AI科普团队
  7. rocketmq常用命令
  8. 资源放送丨《 Kubernetes Operator 开发范式》PPT视频
  9. 计算机无法播放asf格式,ASF文件怎么打开播放出来?
  10. 学python看什么书-python有什么好的书籍
  11. 存储控制器和SDRAM 实验
  12. ActiveX控件开发流程
  13. win10没有android驱动安装,win10系统安装adb驱动的详细步骤
  14. 时钟同步显示屏(NTP时间显示屏)子母钟系统介绍
  15. vue3.0+ts+element-plus多页签应用模板:侧边导航菜单(下)
  16. elasticsearch+filebeat+kibana实现系统日志收集
  17. Python开发-面向对象编程-王大鹏-专题视频课程
  18. 如何取消Idea里面的中文语法检查
  19. QClub:Ruby网站架构案例分享──财帮子FreeWheel(10.19 北京)
  20. dell服务器新bois系统设置u盘启动,跟大家讲讲dell新版biosU盘启动顺序

热门文章

  1. 日常笔记(持续更新)
  2. js 自定义 $ 选择器
  3. 洛谷P1238 走迷宫
  4. 普通用户使用docker命令
  5. Maven项目添加ojdbc8
  6. 浏览器渲染原理 记录备份
  7. 【JAVA】虚拟机指令集
  8. LeetCode 127. Word Ladder
  9. 2013年值得我们学习的网页设计作品【系列二】
  10. C++的三种交换数值的方式(值传递、地址传递、引用传递)