JavaScript实现瀑布流图片效果


Posted in Javascript onJune 30, 2017

本文实例为大家分享了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
extjs render 用法介绍
Sep 11 Javascript
js函数与php函数的区别实例浅析
Jan 12 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
javascript中DOM复选框选择用法实例
May 14 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 Javascript
jquery轮播的实现方式 附完整实例
Jul 28 Javascript
Angular2 PrimeNG分页模块学习
Jan 14 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
vue技术分享之你可能不知道的7个秘密
Apr 09 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
Oct 30 Javascript
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 #Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 #Javascript
jQuery表单设置值的方法
Jun 30 #jQuery
JavaScript注册时密码强度校验代码
Jun 30 #Javascript
Bootstrap Table从零开始
Jun 30 #Javascript
最全的JavaScript开发工具列表 总有一款适合你
Jun 29 #Javascript
常见的浏览器Hack技巧整理
Jun 29 #Javascript
You might like
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
JavaScript实现猜数字游戏
2020/05/20 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
Python中设置变量访问权限的方法
2015/04/27 Python
Python求导数的方法
2015/05/09 Python
Python 内置函数complex详解
2016/10/23 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
python生成随机图形验证码详解
2017/11/08 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
Python实现粒子群算法的示例
2021/02/14 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
大学生入党思想汇报
2014/01/14 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
论文指导教师评语
2014/04/28 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
社区节水倡议书
2015/04/29 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技
Golang并发工具Singleflight
2022/05/06 Golang