dom结构拖动排序
来源:互联网 发布:蛟龙号发现了什么知乎 编辑:程序博客网 时间:2024/05/01 12:06
//通过class获取元素function getClass(cls) { var ret = []; var els = document.getElementsByTagName("*"); for(var i = 0; i < els.length; i++) { //判断els[i]中是否存在cls这个className;.indexOf("cls")判断cls存在的下标,如果下标>=0则存在; if(els[i].className === cls || els[i].className.indexOf("cls") >= 0 || els[i].className.indexOf(" cls") >= 0 || els[i].className.indexOf(" cls ") > 0) { ret.push(els[i]); } } return ret;}//获取属性function getStyle(obj, attr) { return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr];}function startMove(obj, json, fun) { clearInterval(obj.timer); obj.timer = setInterval(function() { var isStop = true; for(var attr in json) { var iCur = 0; //判断运动的是不是透明度值 if(attr == "opacity") { iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100); } else { iCur = parseInt(getStyle(obj, attr)); } var ispeed = (json[attr] - iCur) / 6; //运动速度如果大于0则向下取整,如果小于0想上取整; ispeed = ispeed > 0 ? Math.ceil(ispeed) : Math.floor(ispeed); //判断所有运动是否全部完成 if(iCur != json[attr]) { isStop = false; } //运动开始 if(attr == "opacity") { obj.style.filter = "alpha:(opacity:" + (json[attr] + ispeed) + ")"; obj.style.opacity = (json[attr] + ispeed) / 100; } else { obj.style[attr] = iCur + ispeed + "px"; } } //判断是否全部完成 if(isStop) { clearInterval(obj.timer); if(fun) { fun(); } } }, 30);}window.onload = function() { var oUl = document.getElementById("box"); var aLi = $(".item"); var afLi = $(".items"); var disX = 0; var disY = 0; var minZindex = 1; var aPos = [];// var container1W = $(".items").eq(1).width();// var container1H = $(".items").eq(1).height(); for(var i = 0; i < afLi.length; i++) { var t = afLi[i].offsetTop; var l = afLi[i].offsetLeft;// aLi[i].style.width = container1W + "px";// aLi[i].style.height = container1H + "px"; 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]); } window.addEventListener("resize", function() { for(var i = 0; i < afLi.length; i++) { var t = afLi[i].offsetTop; var l = afLi[i].offsetLeft; aLi[i].style.top = t + "px"; aLi[i].style.left = l + "px"; aPos[i] = { left: l, top: t }; aLi[i].index = i; } }) //拖拽 function setDrag(obj) { obj.onmouseover = function() { obj.style.cursor = "move"; } obj.onmousedown = function(event) { obj.className = "item draging"; obj.style.zIndex = minZindex++; 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 = "item"; } obj.className = "item draging"; var oNear = findMin(obj); if(oNear) { oNear.className = "item active"; } } document.onmouseup = function() { document.onmousemove = null; //当鼠标弹起时移出移动事件 document.onmouseup = null; //移出up事件,清空内存 obj.className = "item"; //检测是否普碰上,在交换位置 var oNear = findMin(obj); if(oNear) { oNear.className = "item"; oNear.style.zIndex = minZindex++; obj.style.zIndex = minZindex++; startMove(oNear, aPos[obj.index]); startMove(obj, aPos[oNear.index]); //交换index oNear.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]; } }};
<div id="box"> <div class="items"> <div class="item"> <div>1212</div> </div> </div> <div class="items"> <div class="item"> <div>23232</div> </div> </div> <div class="items"> <div class="item"> <div>343434</div> </div> </div> <div class="items"> <div class="item"> </div> </div> <div class="items"> <div class="item"> </div> </div> <div class="items"> <div class="item"> </div> </div> <div class="items"> <div class="item"> </div> </div> <div class="items"> <div class="item"> </div> </div> <div class="items"> <div class="item"> </div> </div> </div>
@charset "utf-8";/****************轮播图 拖拽 start*******************/#box { height: auto; position: relative;}#box .items { width: 100%; height: 377px; margin-bottom: 0.12rem; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: 1px solid #ccc;}#box .item { width: 100%; height: 377px; z-index: 1; overflow: hidden;}#box .item.active { -webkit-transition: -webkit-transform 0.3s; -moz-transition: -moz-transform 0.3s; -ms-transition: -ms-transform 0.3s; -o-transition: -o-transform 0.3s; transition: transform 0.3s; -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1);}#box .item.draging { width: 100%; height: 377px; position: absolute; z-index: 500; -webkit-box-shadow: 0 0 8px #0095CD; -moz-box-shadow: 0 0 8px #0095CD; box-shadow: 0 0 8px #0095CD;}#box .itemBot.draging { width: 100%; height: 377px;}/****************轮播图 拖拽 end*******************/
阅读全文
0 0
- dom结构拖动排序
- 如何拖动DOM元素
- Dom 可拖动div
- DOM结构
- js对dom的拖动
- 简单的Dom拖动Dome
- 简单的Dom拖动Dome
- 简单的Dom拖动Dome
- DOM排序
- div拖动并且排序
- js表格拖动排序
- Jtable 拖动排序
- TreeView 拖动排序
- 拖动table,li排序
- jquery 拖动排序|拖拽
- sortabl拖动排序
- jquery实现拖动排序
- 可拖动排序DIV
- PDF 跟 Base64 相互转换
- 欢迎使用CSDN-markdown编辑器
- LeetCode(8) String to Integer (atoi)解题报告
- Spring Boot 微信-网页授权获取用户信息
- libc.so.6 not found版本太低问题
- dom结构拖动排序
- 如何成为一名异构并行计算工程师
- mysql基础命令
- CMUX协议学习总结
- C++借助opencv和Eigen实现人脸识别
- 树莓派3b安装Apache2+PHP+MySQL+phpyadmin
- poi读取模板并修改模板内容
- idea 快捷键 小结
- 约束优化方法之拉格朗日乘子法与KKT条件