js实现照片墙功能实例_javascript技巧
本文实例讲述了js实现照片墙功能的方法。分享给大家供大家参考。具体实现方法如下:
<script><br /> /*<br /> var arr=['a','b','c','d','e','d','f'];<br /> var pos = arr.lastIndexOf('d');<br /> alert(pos);<br /> */<br /> window.onload=function(){<br /> var aLi = document.querySelectorAll('li');<br /> var oInput = document.querySelector('#btn');<br /> var pos = [];<br /> var len= aLi.length;<br /> var izIndex= 2;<br /> //布局转换 <p> for(var i=0;i<len;i++){<br /> pos.push([aLi[i].offsetLeft,aLi[i].offsetTop]);<br /> }<br /> for(var i=0;i<len;i++){<br /> aLi[i].style.left=pos[i][0]+'px';<br /> aLi[i].style.top=pos[i][1]+'px';<br /> aLi[i].style.position = 'absolute';<br /> aLi[i].style.margin = '0px';<br /> }<br /> for(var i=0;i<len;i++){<br /> aLi[i].index = i;<br /> setDrag(aLi[i]);<br /> } <br /> oInput.onclick=function(){<br /> var randomArr = [0,1,2,3,4,5,6,7,8];<br /> randomArr.sort(function(num1,num2){<br /> return Math.random()-0.5;<br /> })<br /> for(var i=0;i<len;i++){<br /> //增加随机位置的情况<br /> startMove(aLi[i],{left:pos[randomArr[i]][0],top:pos[randomArr[i]][1]});<br /> //修正索引<br /> aLi[i].index = randomArr[i];<br /> } <br /> }<br /> //拖拽<br /> function setDrag(obj){<br /> obj.onmousedown =function(ev){<br /> izIndex++;<br /> obj.style.zIndex= izIndex;<br /> var ev = ev || event;<br /> var disX = ev.clientX - obj.offsetLeft;<br /> var disY = ev.clientY - obj.offsetTop;<br /> document.onmousemove=function(ev){<br /> var ev = ev || event;<br /> obj.style.left = ev.clientX- disX +'px';<br /> obj.style.top = ev.clientY - disY +'px';<br /> for(var i=0; i<len; i++){<br /> aLi[i].style.border='none';<br /> } <br /> var nL = nearLi(obj); <br /> if(nL){<br /> nL.style.border='2px solid red';<br /> } <br /> }<br /> document.onmouseup= function(){<br /> document.onmousemove = null;<br /> document.onmouseup = null;<br /> var nL = nearLi(obj); <br /> if(nL){<br /> nL.style.border='2px solid red';<br /> startMove(obj,{left:pos[nL.index][0],top:pos[nL.index][1]});<br /> startMove(nL,{left:pos[obj.index][0],top:pos[obj.index][1]});<br /> var tmp =nL.index;<br /> nL.index = obj.index;<br /> obj.index = tmp;<br /> nL.style.border='';<br /> }else{<br /> startMove(obj,{left:pos[obj.index][0],top:pos[obj.index][1]});<br /> } <br /> }<br /> return false;<br /> }<br /> }<br /> //检测是否有碰撞<br /> function isDump(obj1,obj2){<br /> var l1= obj1.offsetLeft;<br /> var r1= l1+obj1.offsetWidth;<br /> var t1= obj1.offsetTop;<br /> var b1 =obj1.offsetHeight +t1; <p> var l2= obj2.offsetLeft;<br /> var r2= l2+obj2.offsetWidth;<br /> var t2= obj2.offsetTop;<br /> var b2 =obj2.offsetHeight +t2;<br /> if(b2<t1 || l2>r1 || r2<l1 || t2>b1){<br /> return false;<br /> }else{<br /> return true;<br /> }<br /> }<br /> //寻找最近的节点<br /> function nearLi(obj){<br /> var index= -1;<br /> var value =9999;<br /> for(var i=0; i<len; i++){<br /> if(isDump(obj,aLi[i]) && obj !=aLi[i]){<br /> var c = getDis(obj,aLi[i]);<br /> if(c <value){<br /> value = c;<br /> index = i;<br /> }<br /> }<br /> } <br /> if(index !=-1){<br /> return aLi[index];<br /> }else{<br /> return false;<br /> }<br /> }<br /> function getDis(obj1,obj2){<br /> var x = obj1.offsetLeft - obj2.offsetLeft;<br /> var y = obj1.offsetTop - obj2.offsetTop;<br /> return Math.sqrt(Math.pow(x,2)+Math.pow(y,2));<br /> }<br /> }<br /> </script>
希望本文所述对大家的javascript程序设计有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

豆包app里会有很多ai创作的功能,那么豆包app有什么功能呢?用户们可以通过这个软件来创作绘画,和ai进行聊天,还能够为用户生成文章,帮助大家搜索歌曲等。这篇豆包app功能介绍就能够告诉大家具体的操作方法,下面就是具体内容,赶紧看看吧!豆包app有什么功能答:可以绘画、聊天、写文、找歌。功能介绍:1、问题查询:可以通过ai来更快的找到问题的答案,什么样的问题都是可以询问。2、图片生成:可以有ai来为大家创建不同的图片,只需要告诉大家大概的要求。3、ai聊天:能够为用户们创建一个可以聊天的ai,

vivox100s和x100手机都是vivo手机产品线中的代表机型,它们分别代表了vivo在不同时间段内的高端技术水平,因此这两款手机在设计、性能和功能上均有一定区别。本文将从性能对比和功能解析两个方面对这两款手机进行详细比较,帮助消费者更好地选择适合自己的手机。首先,我们来看vivox100s和x100在性能方面的对比。vivox100s搭载了最新的

人脸检测识别技术已经是一个比较成熟且应用广泛的技术。而目前最为广泛的互联网应用语言非JS莫属,在Web前端实现人脸检测识别相比后端的人脸识别有优势也有弱势。优势包括减少网络交互、实时识别,大大缩短了用户等待时间,提高了用户体验;弱势是:受到模型大小限制,其中准确率也有限。如何在web端使用js实现人脸检测呢?为了实现Web端人脸识别,需要熟悉相关的编程语言和技术,如JavaScript、HTML、CSS、WebRTC等。同时还需要掌握相关的计算机视觉和人工智能技术。值得注意的是,由于Web端的计

随着互联网的快速发展,自媒体这个概念已经深入人心。那么,自媒体到底是什么?它有哪些主要特点和功能呢?接下来,我们将一一探讨这些问题。一、自媒体到底是什么?自媒体,顾名思义,就是自己就是媒体。它是指通过互联网平台,个人或者团队可以自主创建、编辑、发布和传播内容的信息载体。不同于传统媒体,如报纸、电视、电台等,自媒体具有更强的互动性和个性化,让每个人都能成为信息的生产者和传播者。二、自媒体的主要特点和功能有哪些?1.低门槛:自媒体的崛起降低了进入媒体行业的门槛,不再需要繁琐的设备和专业的团队,一部手

《探索Discuz:定义、功能及代码示例》随着互联网的迅猛发展,社区论坛已经成为人们获取信息、交流观点的重要平台。在众多的社区论坛系统中,Discuz作为国内较为知名的一种开源论坛软件,备受广大网站开发者和管理员的青睐。那么,什么是Discuz?它又有哪些功能,能为我们的网站提供怎样的帮助呢?本文将对Discuz进行详细介绍,并附上具体的代码示例,帮助读者更

PHP技巧:快速实现返回上一页功能在网页开发中,经常会遇到需要实现返回上一页的功能。这样的操作可以提高用户体验,让用户更加方便地在网页之间进行导航。在PHP中,我们可以通过一些简单的代码来实现这一功能。本文将介绍如何快速实现返回上一页功能,并提供具体的PHP代码示例。在PHP中,我们可以使用$_SERVER['HTTP_REFERER']来获取上一页的URL

随着小红书在年轻人中的流行,越来越多的人开始利用这一平台分享各方面的经验和生活见解。如何有效管理多个小红书账号成为一个关键问题。在本文中,我们将讨论一些小红书账号管理软件的功能,并探讨如何更好地经营小红书账号。随着社交媒体的发展,许多人发现自己需要管理多个社交账号。对于小红书用户来说,这也是一个挑战。一些小红书账号管理软件可以帮助用户更轻松地管理多个账号,包括自动发布内容、定时发布、数据分析等功能。通过这些工具,用户可以更高效地管理他们的账号,提高账号的曝光率和关注度。另一、小红书账号管理软件有

Linux下GDM的功能和作用详解在Linux操作系统中,GDM(GNOMEDisplayManager)是一种图形化登录管理器,它提供了用户在系统中登录和注销的界面。GDM通常是GNOME桌面环境的一部分,但也可以被其他桌面环境所使用。GDM的作用不仅仅是提供一个登录界面,还包括用户会话管理、屏幕保护、自动登录等功能。GDM的功能主要包括以下几个方面:
