国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript制作照片墻及制作過程中出現的問題

2019-11-20 10:17:50
字體:
來源:轉載
供稿:網友

本文主要做了一個照片墻,整個制作過程,主要需要解決一下幾個問題:

1、如何進行布局轉換?

2、如何對圖片進行拖拽處理?

3、如何檢測圖片碰撞問題?進行碰撞檢測

4、當多個圖片進行碰撞,如何取其中距離對象最小的物體?

5、如何將相互碰撞的兩個物體的位置相互交換?涉及到運動的類庫

代碼如下:

<html><head><style>body{background:black;margin: 0;padding: 0;color: white;font-size: 50px;}p{position: absolute;width:20px;margin-left: 50px;}#ul1{width: 690px;position: relative;margin: 20px auto;}#ul1 li{list-style: none;float: left;margin: 10px;width: 200px;height: 150px;z-index: 1;border: 5px solid white;}#ul1 .active{border: 5px solid yellow;}</style><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script src="move2.js"></script><script type="text/javascript">window.onload=function (){  var oUl=document.getElementById('ul1');  var oLi=oUl.getElementsByTagName('li');  var sTore=[];  var i;  var iMinZindex=2;  //進行布局轉換  for(i=0;i<oLi.length;i++)  {     sTore[i]={left:oLi[i].offsetLeft,top:oLi[i].offsetTop};//用數組存儲每個li的左邊距和高度  }  for(i=0;i<oLi.length;i++)  {     oLi[i].style.left=sTore[i].left+'px';     oLi[i].style.top=sTore[i].top+'px';     oLi[i].style.position='absolute';     oLi[i].style.margin=0;     oLi[i].index=i;  }  //圖片拖拽處理  for(i=0;i<oLi.length;i++)  {    setDrags(oLi[i]);  }  function setDrags(obj)  {    obj.onmousedown=function(ev)    {       //層級問題      obj.style.zIndex=iMinZindex++;      var oEvent=ev||event;      var disx=oEvent.clientX-obj.offsetLeft;      var disy=oEvent.clientY-obj.offsetTop;      document.onmousemove=function(ev)      {                var oEvent=ev||event;        obj.style.left=oEvent.clientX-disx+'px';//注意加px        obj.style.top=oEvent.clientY-disy+'px';        for(i=0;i<oLi.length;i++)        {          oLi[i].className='';        }        var oNear=findNearest(obj);        if(oNear)//如果是最近的那個物體        {          oNear.className='active';        }      };      document.onmouseup=function()      {         document.onmousemove=null;         document.onmousedown=null;         //交換兩物體的位置         var oNear=findNearest(obj);         if(oNear)         {          startMove(oNear,sTore[obj.index]);          startMove(obj,sTore[oNear.index]);          //交換索引值          var temp;          temp=obj.index;          obj.index=oNear.index;          oNear.index=temp;         }         else         {          startMove(obj,sTore[obj.index])//回到自己的位置         }         return false;      };      clearInterval(obj.timer);      return false;    };  }//發生碰撞,使被碰的圖片加邊框,進行碰撞檢測function IBoundTest(obj1,obj2){  var l1=obj1.offsetLeft;  var r1=obj1.offsetLeft+obj1.offsetWidth;  var t1=obj1.offsetTop;  var b1=obj1.offsetTop+obj1.offsetHeight;    var l2=obj2.offsetLeft;  var r2=obj2.offsetLeft+obj2.offsetWidth;  var t2=obj2.offsetTop;  var b2=obj2.offsetTop+obj2.offsetHeight;  if(r1<l2||l1>l2||b1<t2||t1>b2)//沒有碰撞  {    return false;  }  else  {    return true;  }}//得到兩個物體之間的距離function getDis(obj1,obj2){  var a=obj1.offsetLeft-obj2.offsetLeft;  var b=obj1.offsetTop-obj2.offsetTop;  return Math.sqrt(a*a+b*b);}//發生碰撞,當與多個碰撞時,取其距離最小的圖片function findNearest(obj){  var iMin=9999999;  var iMindex=-1;  var i;  for(i=0;i<oLi.length;i++)  {     if(obj==oLi[i]){continue;}     if(IBoundTest(obj,oLi[i]))//如果兩個物體碰撞上     {                 var dis=getDis(obj,oLi[i]);         if(iMin>dis)         {           iMin=dis;           iMindex=i;         }     }  }  if(iMindex==-1){return null;}  else  {    return oLi[iMindex];//返回最近的那個  }}  }</script></head><body ><p>照片墻</p><ul id="ul1"> <li><img src="images/1.jpg"></li> <li><img src="images/2.jpg"></li> <li><img src="images/3.jpg"></li> <li><img src="images/4.jpg"></li> <li><img src="images/5.jpg"></li> <li><img src="images/1.jpg"></li> <li><img src="images/2.jpg"></li> <li><img src="images/3.jpg"></li> <li><img src="images/4.jpg"></li></ul></body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗定市| 大悟县| 手游| 定西市| 屏边| 温泉县| 子长县| 塔城市| 会昌县| 五寨县| 乐昌市| 广昌县| 阳原县| 封丘县| 桐梓县| 汝阳县| 合阳县| 晋城| 乐平市| 安平县| 图们市| 太康县| 富蕴县| 修水县| 余姚市| 根河市| 新密市| 旬阳县| 宁陵县| 隆子县| 寿光市| 岑溪市| 环江| 霍州市| 栾城县| 满洲里市| 庄浪县| 合肥市| 屏边| 西华县| 明星|