最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript制作照片墻及制作過程中出現(xiàn)的問題

 更新時(shí)間:2016年04月04日 10:54:25   作者:向婷風(fēng)  
這篇文章主要介紹了javascript制作照片墻及制作過程中出現(xiàn)的問題,感興趣的朋友可以參考一下

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

1、如何進(jìn)行布局轉(zhuǎn)換?

2、如何對(duì)圖片進(jìn)行拖拽處理?

3、如何檢測(cè)圖片碰撞問題?進(jìn)行碰撞檢測(cè)

4、當(dāng)多個(gè)圖片進(jìn)行碰撞,如何取其中距離對(duì)象最小的物體?

5、如何將相互碰撞的兩個(gè)物體的位置相互交換?涉及到運(yùn)動(dòng)的類庫(kù)

代碼如下:

<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;
  //進(jìn)行布局轉(zhuǎn)換
  for(i=0;i<oLi.length;i++)
  {
     sTore[i]={left:oLi[i].offsetLeft,top:oLi[i].offsetTop};//用數(shù)組存儲(chǔ)每個(gè)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)
    {
       //層級(jí)問題
      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)//如果是最近的那個(gè)物體
        {
          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;
    };
  }
//發(fā)生碰撞,使被碰的圖片加邊框,進(jìn)行碰撞檢測(cè)
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;
  }

}
//得到兩個(gè)物體之間的距離
function getDis(obj1,obj2)
{
  var a=obj1.offsetLeft-obj2.offsetLeft;
  var b=obj1.offsetTop-obj2.offsetTop;
  return Math.sqrt(a*a+b*b);
}
//發(fā)生碰撞,當(dāng)與多個(gè)碰撞時(shí),取其距離最小的圖片
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]))//如果兩個(gè)物體碰撞上
     {
        
         var dis=getDis(obj,oLi[i]);
         if(iMin>dis)
         {
           iMin=dis;
           iMindex=i;
         }
     }
  }
  if(iMindex==-1){return null;}
  else
  {
    return oLi[iMindex];//返回最近的那個(gè)
  }
}


  
}
</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>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 詳解Javascript動(dòng)態(tài)操作CSS

    詳解Javascript動(dòng)態(tài)操作CSS

    本文我們會(huì)討論如何通過 JavaScript 在運(yùn)行時(shí)操作 CSS,從而動(dòng)態(tài)地更新應(yīng)用到我們的元素上的式樣。本文所用的技術(shù)是我們已經(jīng)看到過的,但在利用 CSS DOM 來進(jìn)行操作的時(shí)候還需要注意幾個(gè)特殊點(diǎn)。
    2014-12-12
  • 用javascript連接access數(shù)據(jù)庫(kù)的方法

    用javascript連接access數(shù)據(jù)庫(kù)的方法

    用javascript連接access數(shù)據(jù)庫(kù)的方法...
    2006-11-11
  • Echarts圖表中formatter的基本用法示例

    Echarts圖表中formatter的基本用法示例

    formatter 提示框浮層內(nèi)容格式器,支持字符串模板和回調(diào)函數(shù)兩種形式,下面這篇文章主要給大家介紹了關(guān)于Echarts圖表中formatter的基本用法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • JavaScript ES6中const、let與var的對(duì)比詳解

    JavaScript ES6中const、let與var的對(duì)比詳解

    這篇文章主要給大家介紹了在JavaScript中const、let與var對(duì)比的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起看看吧。
    2017-06-06
  • Js中的FileReader相關(guān)操作方法總結(jié)

    Js中的FileReader相關(guān)操作方法總結(jié)

    FileReader是前端進(jìn)行文件處理的一個(gè)重要的API,特別是在對(duì)圖片的處理上,這篇文章主要給大家介紹了關(guān)于Js中FileReader相關(guān)操作方法的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 解析JavaScript數(shù)組方法reduce

    解析JavaScript數(shù)組方法reduce

    本文主要介紹了JavaScript數(shù)組方法reduce的概述、語(yǔ)法、參數(shù)、工作原理等,由淺入深,便于理解。需要的朋友可以看下
    2016-12-12
  • 小程序?qū)崿F(xiàn)左滑刪除效果

    小程序?qū)崿F(xiàn)左滑刪除效果

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)左滑刪除效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 詳解javascript中的Error對(duì)象

    詳解javascript中的Error對(duì)象

    error是指程序中的非正常運(yùn)行狀態(tài),在其他編程語(yǔ)言中稱為“異?!被颉板e(cuò)誤”,解釋器會(huì)為每個(gè)錯(cuò)誤情形創(chuàng)建并拋出一個(gè)Error對(duì)象,其中包含錯(cuò)誤的描述信息,這篇文章主要介紹了javascript中的Error對(duì)象,需要的朋友可以參考下
    2019-04-04
  • [JS]點(diǎn)出統(tǒng)計(jì)器

    [JS]點(diǎn)出統(tǒng)計(jì)器

    [JS]點(diǎn)出統(tǒng)計(jì)器...
    2006-07-07
  • javascript實(shí)現(xiàn)點(diǎn)擊產(chǎn)生隨機(jī)圖形

    javascript實(shí)現(xiàn)點(diǎn)擊產(chǎn)生隨機(jī)圖形

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)點(diǎn)擊產(chǎn)生隨機(jī)圖形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評(píng)論

汉寿县| 黑水县| 涿鹿县| 东安县| 铜山县| 公主岭市| 宁强县| 镇沅| 澄江县| 衡南县| 邛崃市| 凌源市| 海林市| 莱西市| 庄河市| 额尔古纳市| 临泽县| 韩城市| 渝中区| 杭锦后旗| 霍邱县| 沈阳市| 龙里县| 新余市| 顺平县| 墨玉县| 兴业县| 通海县| 汕尾市| 宕昌县| 临颍县| 沙坪坝区| 浮梁县| 西林县| 吉林省| 禹州市| 武山县| 辛集市| 夹江县| 洱源县| 宜宾市|