瀑布流图片效果实现

<!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>

  

时间: 2024-11-05 18:59:34

瀑布流图片效果实现的相关文章

jquery+javaScript完成瀑布流图片页面效果

效果如图: html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/image.css"/> <script type="text/jav

jQuery Waterfall插件的使用-瀑布流图片显示

最近做一个项目需要用到jQuery Waterfall插件-瀑布流图片显示 jquery waterfall plugin,like Pinterest . huaban.com . faxianla.com 下载地址: waterfall plugin 如何使用 第一步: 添加html代码 <div id="container"></div> 第二步: 引入需要的js <script src="/path/jquery.min.js"

使用RecyclerView实现瀑布流的效果

主函数: public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> dataList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS

玩转Masonry JS库来实现瀑布流Web效果

工作项目中需要制作个Mobile上的Web App的展示,方便快捷访问和评价反馈.在展示页面能看到应用展示图,点击进入Web应用.我不是前端开发者,对HTML, CSS, JS这三剑客仅仅是略知一二.于是先规划了个简单的设计,感觉瀑布流的图片展示方式比较美观,同时布局的高度也一定灵活性.就按照Pinterest Android/IOS和花瓣Mobile Web App的目标开始实现. 第一天的成果是完成了基本的展示和链接.在iPhone模拟器上效果如下 : HTML页面代码snippet: 1

百度瀑布流图片动态加载实现

参考链接:http://www.htmleaf.com/jQuery/pubuliuchajian/2014100330.html 最近在做图片管理系统的时候,由于开始的时候没考虑到用户的图片量,没有采取分页效果,当后来当图片量大的(测试的为5万张)时候,浏览器则会出现崩溃,导致解析响应很久,这对体验效果很是不好. 后来想到了分页,如果,用户想点击下一页,则需要点击触发一下,并且如果想返回上一页的话,还得重新请求,在浏览图片的时候,这种体验不是很好. 再后来又想到了通过页面点击[查看更多],然后

瀑布流页面效果

瀑布流页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>瀑布流布局</title> <script src="./jquery.js"> </script> <style> #all{ position: relative; } .box{ fl

瀑布流图片加载

有个小问题窗口改变的时候会被重新刷新loadingimg函数,请自行修改, <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .imglist{width: 100%;height: auto;position: relative;} .imglist ul{padding:0px;margin:0p

瀑布流效果的一些收获

瀑布流效果已经流行了很久,之前在项目中做了一次,今天页面改版又做了一次瀑布流的效果,中间又有了一些收获,谨记于此. 这个瀑布流效果是借鉴的网上一位大神写的代码,然后正好在项目中得到了应用. 1 function waterFall(mr, mb) { //mr水平方向的间距,mb垂直方向的间距 2 var ocontainer = document.getElementById("container"); 3 if (ocontainer) { 4 var pageWidth = oc

一步步教你js原生瀑布流效果实现

一步步教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一张挨着一张竖直排列 4.鼠标向下滚动,一直不停的加载图片 5.浏览器的宽度改变,图片的列数会进行相应的更改 那么这种效果类似现实生活中的瀑布,所以我们叫它瀑布流的效果. Js原生瀑布流效果的实现 从上述分析中,我们可以把整个效果分为以下四个部分: html+css界面搭建 瀑布流效果 浏览器向下滚动