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

在线预览   源码下载

实现的代码。

html代码:

  <ul id="ul1"><li><img src="data:images/1.jpg" width="200" height="150" /></li><li><img src="data:images/2.jpg" width="200" height="150" /></li><li><img src="data:images/3.jpg" width="200" height="150" /></li><li><img src="data:images/4.jpg" width="200" height="150" /></li><li><img src="data:images/5.jpg" width="200" height="150" /></li><li><img src="data:images/6.jpg" width="200" height="150" /></li></ul>

css代码:

  *{margin: 0;padding: 0;list-style: none;}#ul1{width: 660px;position: relative;margin: 10px auto;}#ul1 li{width: 200px;height: 150px;float: left;list-style: none;margin: 10px;}#ul1 li:hover{border-color: #9a9fa4;box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.85);}#ul1 .active{border: 1px dashed red;}

js代码:

  window.onload = function () {var oUl = document.getElementById("ul1");var aLi = oUl.getElementsByTagName("li");var disX = 0;var disY = 0;var minZindex = 1;var aPos = [];for (var i = 0; i < aLi.length; i++) {var t = aLi[i].offsetTop;var l = aLi[i].offsetLeft;aLi[i].style.top = t + "px";aLi[i].style.left = l + "px";aPos[i] = { left: l, top: t };aLi[i].index = i;}for (var i = 0; i < aLi.length; i++) {aLi[i].style.position = "absolute";aLi[i].style.margin = 0;setDrag(aLi[i]);}//拖拽function setDrag(obj) {obj.onmouseover = function () {obj.style.cursor = "move";}obj.onmousedown = function (event) {var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;obj.style.zIndex = minZindex++;//当鼠标按下时计算鼠标与拖拽对象的距离disX = event.clientX + scrollLeft - obj.offsetLeft;disY = event.clientY + scrollTop - obj.offsetTop;document.onmousemove = function (event) {//当鼠标拖动时计算div的位置var l = event.clientX - disX + scrollLeft;var t = event.clientY - disY + scrollTop;obj.style.left = l + "px";obj.style.top = t + "px";/*for(var i=0;i<aLi.length;i++){aLi[i].className = "";if(obj==aLi[i])continue;//如果是自己则跳过自己不加红色虚线if(colTest(obj,aLi[i])){aLi[i].className = "active";}}*/for (var i = 0; i < aLi.length; i++) {aLi[i].className = "";}var oNear = findMin(obj);if (oNear) {oNear.className = "active";}}document.onmouseup = function () {document.onmousemove = null; //当鼠标弹起时移出移动事件document.onmouseup = null; //移出up事件,清空内存//检测是否普碰上,在交换位置var oNear = findMin(obj);if (oNear) {oNear.className = "";oNear.style.zIndex = minZindex++;obj.style.zIndex = minZindex++;startMove(oNear, aPos[obj.index]);startMove(obj, aPos[oNear.index]);//交换indexoNear.index += obj.index;obj.index = oNear.index - obj.index;oNear.index = oNear.index - obj.index;} else {startMove(obj, aPos[obj.index]);}}clearInterval(obj.timer);return false; //低版本出现禁止符号
                }}//碰撞检测function colTest(obj1, obj2) {var t1 = obj1.offsetTop;var r1 = obj1.offsetWidth + obj1.offsetLeft;var b1 = obj1.offsetHeight + obj1.offsetTop;var l1 = obj1.offsetLeft;var t2 = obj2.offsetTop;var r2 = obj2.offsetWidth + obj2.offsetLeft;var b2 = obj2.offsetHeight + obj2.offsetTop;var l2 = obj2.offsetLeft;if (t1 > b2 || r1 < l2 || b1 < t2 || l1 > r2) {return false;} else {return true;}}//勾股定理求距离function getDis(obj1, obj2) {var a = obj1.offsetLeft - obj2.offsetLeft;var b = obj1.offsetTop - obj2.offsetTop;return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));}//找到距离最近的function findMin(obj) {var minDis = 999999999;var minIndex = -1;for (var i = 0; i < aLi.length; i++) {if (obj == aLi[i]) continue;if (colTest(obj, aLi[i])) {var dis = getDis(obj, aLi[i]);if (dis < minDis) {minDis = dis;minIndex = i;}}}if (minIndex == -1) {return null;} else {return aLi[minIndex];}}}

via:http://***/Article/23686

转载于:https://www.cnblogs.com/liaohuolin/p/4291493.html

基于js鼠标拖动图片排序相关推荐

  1. 用鼠标拖动图片的JS代码

    代码简介: 用鼠标拖动一个图片移动,就像拖动一个层一样,这是一个JS拖动类代码,你可以无限制的增加图片,代码复用率比较高. 代码内容: View Code <html><HEAD&g ...

  2. 基于html5鼠标悬停图片动画展示效果

    分享一款基于html5鼠标悬停图片动画展示效果.里面包含两款不同效果的html5图片展示效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=" ...

  3. Unity3D 鼠标拖动和旋转物体以及鼠标拖动图片

    1.鼠标拖动物体Cube using System.Collections; using System.Collections.Generic; using UnityEngine; using Un ...

  4. Unity UGUI实现鼠标拖动图片

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  5. html js 鼠标移动图片跟着移动

    <html><head><meta charset="utf-8" /><title>实现在指定区域内图片随着鼠标的移动移动< ...

  6. 基于JS实现购物车图片局部放大预览效果

    在电商网站中,商品图片是非常重要的展示元素.为了让用户更好地了解商品细节,一些网站会提供图片局部放大预览效果.这篇文章将介绍如何使用JavaScript实现购物车图片局部放大预览效果. 第一步:HTM ...

  7. 基于js实现页面图片消除

    前两天测试的时候发现自己对js还不是太熟悉,所以今天上传的了这篇文章,重新写了一下js模块里面的东西. 核心还是这一部分: i = 0 last = null function clickDisapp ...

  8. js鼠标拖动元素移动

    拖动元素移动 var odiv = document.getElementsByTagName('div')[0];//给需要移动的元素添加onmousedown事件odiv.onmousedown ...

  9. html 禁止拖动图片,禁止鼠标拖动图片在新窗口打开

    JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name,parameters) 其中: pageU ...

最新文章

  1. flexi-streams用法简介
  2. python乘法口诀代码-浅析一句python代码成生九九乘法表
  3. 容斥原理(二进制枚举)
  4. 第13/24周 统计信息
  5. java annotation应用_Java Annotation高级应用
  6. linux编译警告 will be initialized after
  7. 从 SQL Server 到 MySQL (三):愚公移山 - 开源力量
  8. 操作系统 第四章 文件管理
  9. 使用jquery做一个动态简历
  10. 10 Linux之yum源码安装
  11. 微信小程序防止恶意点击、多次点击
  12. N款在线图片处理工具,让你的效率翻倍
  13. HTML5 video autoplay=“autoplay“ 无法自动播放的问题
  14. 【渝粤教育】电大中专计算机网络基础作业 题库
  15. 乐园管理系统| 乐园小程序 | 数字化门店会员管理
  16. 计算机图形学直线算法程序,计算机图形学直线生成算法实现.doc
  17. 第一章 PHP基础知识考察点
  18. 0xC0000005: 读取位置 0x6C6C6568 时发生访问冲突的原因及解决方法
  19. 智微智能深交所上市:市值60亿 袁微微夫妇身价超40亿
  20. 机器学习——共享单车数据集单项分析

热门文章

  1. 使用PHPExcel判别和格式化Excel中的日期格式
  2. 如何理解 Web API
  3. 一个程序猿试用有道云笔记VIP功能体验
  4. 编程微刊第五期文章汇总(2018.5)
  5. ORM 关系对象映射 基础知识点
  6. 【作业】组合数据类型练习,英文词频统计实例
  7. Head first java chapter 6 认识java API
  8. 批处理(定时器) ssm spring-task
  9. IOS7开发~API变化
  10. stl set求交集 并集 差集