javascript - 不确定图片高度情况下,如何实现瀑布流布局?

查看:134
本文介绍了javascript - 不确定图片高度情况下,如何实现瀑布流布局?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

很多情况下,带图片的列表,在不能确定每一个item高度的情况下,如何实现瀑布流?每一个item的高度不一定,也不一样高(图片还会因网络延时而出现高度变化的情况)

解决方案

两种方式:
1,item使用绝对定位的;例子:
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>瀑布流</title>
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="container">
    <div class="box">
        <div class="box-img">
            <img src="img1.jpg" alt="pic1">
        </div>
    </div>
    <div class="box">
        <div class="box-img">
            <img src="img2.jpg" alt="pic2">
        </div>
    </div>
    <div class="box">
        <div class="box-img">
            <img src="img3.jpg" alt="pic3">
        </div>
    </div>
    <div class="box">
        <div class="box-img">
            <img src="img4.jpg" alt="pic4">
        </div>
    </div>
    <div class="box">
        <div class="box-img">
            <img src="img5.jpg" alt="pic5">
        </div>
    </div>
    <div class="box">
        <div class="box-img">
            <img src="img6.jpg" alt="pic6">
        </div>
    </div>
</div>
</body>
</html>

CSS:

*{margin: 0;padding: 0;}
.container{position: relative;width: 1040px;margin: 0 auto;}
.box{float: left;padding: 5px;font-size: 0;}
.box-img img{width: 250px;}

JQ:

$(function(){
    var elesHeight = [];//每个元素的宽度
    var colsHeight = [0,0,0,0]; //每列元素现有的高度
    $(".container .box").each(function(index,item){
        var eleHeight = $(this).height();
        elesHeight.push(eleHeight);
    });

    //依次摆放每一个元素
    $(".container .box").each(function(index,item){

        //获得该元素应该在第几列
        var colShould = getMinHeightCol(colsHeight);

        var tempTop = colsHeight[colShould];
        var tempLeft = colShould*260;
        $(this).css({"position":"absolute","top":tempTop+"px",left:tempLeft+"px"});

        //同时将该列的高度加上当前新增元素的高度
        colsHeight[colShould] += $(this).height();
    });

    //得到四列中高度最小的那一列
    function getMinHeightCol(arr){
        var minHeight = Math.min.apply(null, arr);
        console.log("最小高度:"+minHeight);
        for(var i in arr){
            if(arr[i]==minHeight){
                return i;
            }
        }
        //默认第一列
        return 0;
    }
    var re;
    window.onresize = function() {
      clearTimeout(re);
      re = setTimeout(resize,100); 
    };
});

2:item所显示图片为缩略图,缩略图生成后高度存储到数据库,前端生成页面时,写到img的style="height:XXXX"即可;但是文字内容么~~~~只能固定高度了;

更新下,丢人了,少些了高度两字被人嘘了;骚瑞哦~

这篇关于javascript - 不确定图片高度情况下,如何实现瀑布流布局?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆