照片墙效果

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Brick Wall</title>
  <meta name="keywords" content="Brick Wall">
  <meta name="description" content="Brick Wall">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<style>
     body{
      background: #666;
    }
    #demo{width: 960px; margin: 0 auto;}
    #demo .brick-item{
      transition: transform .3s;
    }
    #demo .brick-item:hover{
      transform: scale(1.1);
    }
</style>
  <h1>Brick Wall</h1>
  <div class="brick-wall" id="demo">
  <img class="brick-item" src="./img/5.jpg" />
    <img class="brick-item" src="./img/6.jpg" />
    <img class="brick-item" src="./img/7.jpg" />
    <img class="brick-item" src="./img/8.jpg" />
    <img class="brick-item" src="./img/9.jpg" />
    <img class="brick-item" src="./img/10.jpg" />
    <img class="brick-item" src="./img/11.jpg" />
    <img class="brick-item" src="./img/12.jpg" />
    <img class="brick-item" src="./img/13.jpg" />
    <img class="brick-item" src="./img/14.jpg" />
    <img class="brick-item" src="./img/15.jpg" />
    <img class="brick-item" src="./img/16.jpg" />
    <img class="brick-item" src="./img/17.jpg" />
    <img class="brick-item" src="./img/18.jpg" />
    <img class="brick-item" src="./img/19.jpg" />
    <img class="brick-item" src="./img/20.jpg" />
    <img class="brick-item" src="./img/1.jpg" />
    <img class="brick-item" src="./img/2.jpg" />
    <img class="brick-item" src="./img/3.jpg" />
    <img class="brick-item" src="./img/4.jpg" />
    
  </div>
</body>
</html>

<script>


function paperwall(json){
  var Data={
      obj:json.obj,
      height:json.height||150,
      margin:json.margin||0
  }

  var aImg=document.getElementsByTagName("img");
  var nWidth=demo.offsetWidth;
  var rowArr=[];
  var rowWidth=0;
  var temp=[];

//图片定高,浮动,添加外边距
  for(var i = 0; i < aImg.length; i++) {
    aImg[i].style.cssText="height:"+Data.height+"px;float:left;margin:"+Data.margin+"px;";
  }

//分组
  for(var i = 0; i < aImg.length; i++){
    rowWidth+=aImg[i].offsetWidth+Data.margin*2;
    if(rowWidth>nWidth){
        rowArr.push(temp);
        rowWidth=0;
        temp=[];
        rowWidth+=aImg[i].offsetWidth+Data.margin*2;
    }
    temp.push(i)
  }

  //计算每一组的高度
  for(var i=0; i<rowArr.length; i++){

    (function(index){
      var tempArr=rowArr[index];
      //去掉图片的外边距的宽度
      var nWidths=nWidth-tempArr.length*Data.margin*2;
      var tempWidth=0;

      //求出每一行的图片总宽度
      for (var z = tempArr[0]; z <= tempArr[tempArr.length-1]; z++) {
        tempWidth+=aImg[z].offsetWidth;

      }
      
      //根据比例求出图片的高度,自由缩放,变成一整行。
      for (var m = tempArr[0]; m <= tempArr[tempArr.length-1]; m++) {
        aImg[m].style.width=Math.floor((nWidths/tempWidth)*aImg[m].offsetWidth)+"px";
        aImg[m].style.height=Math.floor((nWidths/tempWidth)*Data.height)+"px";
      };

    })(i)
  }

}

window.onresize=window.onload=function(){
var demo=document.getElementById("demo");
paperwall({
      obj:demo,
      height:180,
      margin:1
    });
}
</script>

效果图如下,图片请自理:

效果是在网上找到的,不过他是用的jq写的(估计原作者一看图片就知道了),

/**
 *
 * @authors myqianlan (linquantan@gmail.com)
 * @date    2015年2月5日16:02:10
 * @version $Id$
 */

这个人提供的下载地址好像是在git上面,具体的地址忘记了,这个可别说版权什么的啊,我已经很明确的说了是抄袭了。

他是这样写的声明,具体是谁反正我是没有理一下,上面是废话,下面的是正题。

我就用js重新了一下,主要是我觉得我公司的产品已经加载了太多了jq,跑起来很费力气了,所以我决定以后不再公司的产品里面加一句jq了,我公司的产品在火狐下面跑半个小时候肯定崩掉的,唉,都是插件惹的祸,没有了jq就活不下去了,

posted @ 2015-02-10 15:48  王子秦  阅读(198)  评论(0编辑  收藏  举报