当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JavaScript实现瀑布流图片效果

JavaScript实现瀑布流图片效果

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了js实现瀑布流图片效果的具体代码,供大家参考,具体内容如下

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title></title>
  <style type="text/css">
    *{
      margin: 0;
      padding: 0;
    }
    #wrap{
      position: relative;
      list-style: none;
      margin: 0 auto;
    }
    #wrap li{
      width: 200px;
      font-size: 1.5rem;
      position: absolute;
      background-color: #cccccc;
      -webkit-transition: all 2s;
    }
    #wrap li div{
      width: 100%;
      height: 100%;
      overflow: hidden;
    }
  </style>
</head>
<body>
<ul id="wrap"></ul>
</body>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
function randomfunction(max , min){
  return parseint(math.random() * (max - min)) + min;
}
var wrapul = document.getelementbyid("wrap");
var width = 200;
var rightpadding = 10;
var hs = [];
var num = 0;
function setlipos(bol){
  var lis = wrapul.getelementsbytagname("li");
  var windowbody = document.documentelement.clientwidth;
  var cols = parseint(windowbody / width);
  wrapul.style.width = cols * (width + rightpadding) + "px";
  var arrt = [];
  for (var i = 0; i < cols; i++) {
    arrt[i] = 0;
  }
  function createli(index){
    var li = lis[index]||document.createelement("li");
     
    var h = hs[index] || randomfunction(100, 300);
    li.style.height = h + "px";
    if(bol){
      hs.push(h);
    }
    var min = arrt[0];
    var minindex = 0;
    for (var i = 0; i < arrt.length; i++) {
      if(min > arrt[i]){
        min = arrt[i];
        minindex = i;
      }
    }
    li.style.top = arrt[minindex] + "px";
    li.style.left = minindex * (width + rightpadding) + "px"; arrt[minindex] += (h + rightpadding);
    bol&&wrapul.appendchild(li);
  }
  for(var i = 0; i < 20; i++){
    if(bol){
      num++;
    }
    createli(i);
  }
}
setlipos(true);
window.onresize = function(){
  setlipos(false);
}
});
</script>
<script type="text/javascript">
$(function(){
  var imgarr = ["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg"];
  $("li").each(function(index, el) {
    var n = randomnumboth(0,imgarr.length-1);
    var imgsrc = imgarr[n];
    $(this).html("<div><img onload='loadimage()' src='"+imgsrc+"'></div>");
  });
});
function loadimage(){
  $("img").each(function(index, el) {
    var a=$(this).width(),
    b=$(this).height(),
    pa = $(this).parent().width(),
    pb = $(this).parent().height(),
    e=a/b, //图片宽高比 3
    pe=pa/pb; //承载图片容器宽高比 
    if(e>=pe){
      $(this).css({height:"100%",width:"auto"});
      var imgw = $(this).width(),
      iw = $(this).parent().width(),
      w = -(imgw - iw)/2;
      $(this).css('marginleft',w);
    }else{
      $(this).css({width:"100%",height:"auto"});
      var imgh = $(this).height(),
      ih = $(this).parent().height(),
      h = -(imgh - ih)/2;
      $(this).css('margintop',h);
    }
  });
}
function randomnumboth(min,max){
   var range = max - min;
   var rand = math.random();
   var num = min + math.round(rand * range);
   return num;
}
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网