当前位置: 首页 > 编程笔记 >

js实现照片墙功能实例

郗俊能
2023-03-14
本文向大家介绍js实现照片墙功能实例,包括了js实现照片墙功能实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了js实现照片墙功能的方法。分享给大家供大家参考。具体实现方法如下:

<!doctype html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html5="http://www.w3.org/1999/xhtml">

    <head>

        <meta charset="utf-8">

        <title>js照片墙</title>

        <meta http-equiv="X-UA-Compatible" content="edge">

        <meta name="viewport" content="width=device-width, initial-scale=1">

        <meta name="Keywords" content="js照片墙">

        <meta name="description" content="js照片墙">

        <link href="css/style.css" rel="stylesheet">

        <script src="move.js"></script>

        <style>

            *{padding: 0; margin: 0;}

            li{list-style: none;}

            ul{width: 660px; height:510px; background:#ccc;margin: 20px auto;}

            li{width:200px; height: 150px; margin: 10px; float: left; }

        </style>

        <script>

        /*

            var arr=['a','b','c','d','e','d','f'];

            var pos = arr.lastIndexOf('d');

            alert(pos);

            */

            window.onload=function(){

                var aLi = document.querySelectorAll('li');

                var oInput =  document.querySelector('#btn');

                var pos = [];

                var len= aLi.length;

                var izIndex= 2;

                //布局转换

                for(var i=0;i<len;i++){                     pos.push([aLi[i].offsetLeft,aLi[i].offsetTop]);                 }                 for(var i=0;i<len;i++){                     aLi[i].style.left=pos[i][0]+'px';                     aLi[i].style.top=pos[i][1]+'px';                     aLi[i].style.position = 'absolute';                     aLi[i].style.margin = '0px';                 }                 for(var i=0;i<len;i++){                      aLi[i].index = i;                      setDrag(aLi[i]);                 }                 oInput.onclick=function(){                     var randomArr = [0,1,2,3,4,5,6,7,8];                     randomArr.sort(function(num1,num2){                         return Math.random()-0.5;                     })                     for(var i=0;i<len;i++){                         //增加随机位置的情况                        startMove(aLi[i],{left:pos[randomArr[i]][0],top:pos[randomArr[i]][1]});                        //修正索引                        aLi[i].index = randomArr[i];                     }                 }                 //拖拽                 function setDrag(obj){                     obj.onmousedown =function(ev){                         izIndex++;                         obj.style.zIndex= izIndex;                         var ev = ev || event;                         var disX = ev.clientX - obj.offsetLeft;                         var disY = ev.clientY - obj.offsetTop;                         document.onmousemove=function(ev){                             var ev = ev || event;                             obj.style.left =  ev.clientX- disX +'px';                             obj.style.top =  ev.clientY - disY +'px';                             for(var i=0; i<len; i++){                                 aLi[i].style.border='none';                             }                             var nL = nearLi(obj);                             if(nL){                                 nL.style.border='2px solid red';                             }                                                  }                         document.onmouseup= function(){                             document.onmousemove = null;                             document.onmouseup = null;                             var nL = nearLi(obj);                             if(nL){                                 nL.style.border='2px solid red';                                 startMove(obj,{left:pos[nL.index][0],top:pos[nL.index][1]});                                 startMove(nL,{left:pos[obj.index][0],top:pos[obj.index][1]});                                 var tmp =nL.index;                                 nL.index = obj.index;                                 obj.index = tmp;                                 nL.style.border='';                             }else{                                 startMove(obj,{left:pos[obj.index][0],top:pos[obj.index][1]});                             }                         }                         return false;                     }                 }                 //检测是否有碰撞                 function isDump(obj1,obj2){                     var l1= obj1.offsetLeft;                     var r1= l1+obj1.offsetWidth;                     var t1= obj1.offsetTop;                     var b1 =obj1.offsetHeight +t1;

                    var l2= obj2.offsetLeft;                     var r2= l2+obj2.offsetWidth;                     var t2= obj2.offsetTop;                     var b2 =obj2.offsetHeight +t2;                     if(b2<t1 || l2>r1 || r2<l1 || t2>b1){                         return false;                     }else{                         return true;                     }                 }                 //寻找最近的节点                 function nearLi(obj){                     var index= -1;                     var value =9999;                    for(var i=0; i<len; i++){                         if(isDump(obj,aLi[i]) && obj !=aLi[i]){                             var c = getDis(obj,aLi[i]);                             if(c <value){                                 value = c;                                 index = i;                             }                         }                     }                     if(index !=-1){                         return aLi[index];                     }else{                         return false;                     }                 }                 function getDis(obj1,obj2){                     var x = obj1.offsetLeft - obj2.offsetLeft;                     var y = obj1.offsetTop - obj2.offsetTop;                     return  Math.sqrt(Math.pow(x,2)+Math.pow(y,2));                 }             }         </script>     </head>     <body>     <button id="btn">click</button>         <ul>             <li><img src="1l.jpg" width="200px" height="150px"></li>             <li><img src="2l.jpg" width="200px" height="150px"></li>             <li><img src="3l.jpg" width="200px" height="150px"></li>             <li><img src="4l.jpg" width="200px" height="150px"></li>             <li><img src="5l.jpg" width="200px" height="150px"></li>             <li><img src="6l.jpg" width="200px" height="150px"></li>             <li><img src="1l.jpg" width="200px" height="150px"></li>             <li><img src="2l.jpg" width="200px" height="150px"></li>             <li><img src="4l.jpg" width="200px" height="150px"></li>         </ul>     </body>  </html>

希望本文所述对大家的javascript程序设计有所帮助。

 类似资料:
  • 本文向大家介绍Android实现照片墙效果的实例代码,包括了Android实现照片墙效果的实例代码的使用技巧和注意事项,需要的朋友参考一下 照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影。它的设计思路其实也非常简单,用一个GridView控件当作“墙”,然后随着GridView的滚动将一张张照片贴在“墙”上,这些照片可以是手机本地中存储的,也可以是从网上下载的。制作类

  • 请求后端之后,后端会返回一个列表 我想实现把图片都显示出来,像上图中一样,一行可以有多个图片 ant design vue 有什么组件可以快速实现这一点 我想到的是,通过 a-row 和 a-col 和 span 实现,但是这样写出来的代码又臭又长,不忍直视 有什么优雅的实现方案吗?

  • 本文向大家介绍iOS 通过collectionView实现照片删除功能,包括了iOS 通过collectionView实现照片删除功能的使用技巧和注意事项,需要的朋友参考一下 一,效果图。 二,工程图。 三,代码。 ViewController.h ViewController.m photoCollectionViewCell.h photoCollectionViewCell.m 总结 以上所

  • 本文向大家介绍JS实现图片上传预览功能,包括了JS实现图片上传预览功能的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴js代码了,具体代码如下所示: 以上所述是小编给大家介绍的JS实现图片上传预览功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 本文向大家介绍js实现拖拽上传图片功能,包括了js实现拖拽上传图片功能的使用技巧和注意事项,需要的朋友参考一下 直接把本地图片拉到你设定的图片上传成功后的位置,就ok了,具体代码如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍javascript实现了照片拖拽点击置顶的照片墙代码,包括了javascript实现了照片拖拽点击置顶的照片墙代码的使用技巧和注意事项,需要的朋友参考一下 演示图 styles.css drag.js picwall.html 所用到的图片 以上所述就是本文的全部内容了,希望能够对大家熟练掌握javascript有所帮助。