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 Ajax异步处理Json数据.
Sep 09 Javascript
js输入框邮箱自动提示功能代码实现
Dec 10 Javascript
浮动的div自适应居中显示的js代码
Dec 23 Javascript
js中的json对象详细介绍
Oct 29 Javascript
javascript中Object使用详解
Jan 26 Javascript
JavaScript输出当前时间Unix时间戳的方法
Apr 06 Javascript
javascript实现的固定位置悬浮窗口实例
Apr 30 Javascript
javascript中基本类型和引用类型的区别分析
May 12 Javascript
jquery原理以及学习技巧介绍
Nov 11 Javascript
微信小程序 教程之WXML
Oct 18 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
微信小程序实现拍照和相册选取图片
May 09 Javascript
十大 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
php中的观察者模式
2010/03/24 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
药学专业大学生个人的自我评价
2013/11/04 职场文书
工作疏忽检讨书
2014/01/25 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
五四青年节活动总结
2015/02/10 职场文书