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 相关文章推荐
jquery单选框radio绑定click事件实现方法
Jan 14 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
AngularJS基础 ng-paste 指令简单示例
Aug 02 Javascript
Vue通过input筛选数据
Oct 26 Javascript
Vue ElementUI之Form表单验证遇到的问题
Aug 21 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
vue cli 3.0 搭建项目的图文教程
May 17 Javascript
使用watch在微信小程序中实现全局状态共享
Jun 03 Javascript
vue+element表格导出为Excel文件
Sep 26 Javascript
详解Nuxt.js 实战集锦
Nov 19 Javascript
Vue过滤器(filter)实现及应用场景详解
Jun 15 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
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
loading动画特效小结
2017/01/22 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
Angular整合zTree的示例代码
2018/01/24 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
JavaScript之解构赋值的理解
2019/01/30 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
python区块及区块链的开发详解
2019/07/03 Python
python 命令行传入参数实现解析
2019/08/30 Python
介绍一下linux文件系统分配策略
2012/11/17 面试题
医院实习接收函
2014/01/12 职场文书
运动会广播稿400字
2014/01/25 职场文书
奠基仪式主持词
2014/03/20 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
世界遗产导游词
2015/02/13 职场文书
2015年财务部工作总结
2015/04/10 职场文书
廉洁自律证明
2015/06/24 职场文书
婚宴父亲致辞
2015/07/27 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书