美文网首页
js瀑布流

js瀑布流

作者: 前端来入坑 | 来源:发表于2020-02-13 14:21 被阅读0次
  • 首先先要理清思路, 每张图片固定宽度,高度大小不一,第一排图片排完后记录每张图片的高度存到一个数组里面;第二排第一张图片排在第一排图片最小高度的下面(使用定位),然后这一列数组的高度累加上当前图片的高度,如此循环。
$(window).on('load', function() {
    waterFall();
});
function waterFall() {
    var box = $('.box');
    var boxWidth = box.outerWidth(); //当前图片的宽度 outerWidth() innerWidth() width();
    var screenWidth = $(window).width();
    var cols = parseInt(screenWidth/boxWidth);//求出列数
    var heightArr = [];//存储每列高度的数组
    $.each(box, function(index, item) {
        var boxHeight = $(item).outerHeight();
        if(index < cols) { //第一行
            heightArr[index] = boxHeight;
        }else{
            //数组中高度最小值的索引, 用于最小图片高度下面放置图片
            var minBoxHeight = Math.min(...heightArr);
            var minBoxIndex = heightArr.findIndex((item, index) => {
                return item == minBoxHeight;
            });
            // var minBoxHeight = $.inArray(minBoxHeight, heightArr);//jq写法
            $(item).css({
                position: 'absolute',
                left: minBoxIndex*boxWidth + 'px',
                top: minBoxHeight + 'px'
            });
            // 更改数组的高度
            heightArr[minBoxIndex] += boxHeight;
        }
    });
    console.log(heightArr);
}
//页面窗口变化重新执行函数
window.addEventListener('resize', function() {
    let timer = setTimeout(function() {
        clearInterval(timer);
        waterFall();
    }, 100);
})

html

<div id="content">
    <div class="box"><img src="./images/1.gif" alt=""></div>
    <div class="box"><img src="./images/2.jpg" alt=""></div>
    <div class="box"><img src="./images/3.png" alt=""></div>
    <div class="box"><img src="./images/4.jpg" alt=""></div>
    <div class="box"><img src="./images/5.png" alt=""></div>
    <div class="box"><img src="./images/6.jpg" alt=""></div>
    <div class="box"><img src="./images/7.png" alt=""></div>
    <div class="box"><img src="./images/8.jpg" alt=""></div>
    <div class="box"><img src="./images/9.jpg" alt=""></div>
    <div class="box"><img src="./images/10.jpg" alt=""></div>
    <div class="box"><img src="./images/11.jpg" alt=""></div>
    <div class="box"><img src="./images/12.jpg" alt=""></div>
    <div class="box"><img src="./images/13.jpg" alt=""></div>
    <div class="box"><img src="./images/14.jpg" alt=""></div>
    <div class="box"><img src="./images/15.jpg" alt=""></div>
    <div class="box"><img src="./images/16.jpg" alt=""></div>
    <div class="box"><img src="./images/17.jpg" alt=""></div>
    <div class="box"><img src="./images/18.jpg" alt=""></div>
</div>

css

*{
    padding: 0;
    margin: 0;
}
#content{
    font-size: 0;
}
.box{
    display: inline-block;
    width: 25%;
    padding: 20px;
    border: 1px solid orange;
    box-sizing: border-box;
    vertical-align: top;
}
.box img{
    width: 100%;
}

相关文章

  • 瀑布流布局

    瀑布流布局http://js.jirengu.com/dunawupili/1/ 2.新闻瀑布流http://js...

  • js/jQuery实现瀑布流

    html中主要代码: 实现瀑布流的js代码: css实现瀑布流只需要三行代码: 实现下拉刷新的js代码: js/c...

  • 瀑布流组件初探-Vue.js

    waterfall-瀑布流组件 基于Vue.js的瀑布流组件 GitHub地址: https://github.c...

  • js瀑布流

    瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种...

  • js瀑布流

    兼容性1 点击300ms 使用fastclick2 移动端1px 在ios中使用0.5px3 js中获取浏览...

  • js瀑布流

    瀑布流布局思路: 1、css样式,图片的父级div样式设置为定位或者浮动。 2、找出图片父级元素(box)和最外元...

  • js瀑布流

  • js瀑布流

    首先先要理清思路, 每张图片固定宽度,高度大小不一,第一排图片排完后记录每张图片的高度存到一个数组里面;第二排第一...

  • 瀑布流

    1、瀑布流http://js.jirengu.com/nokiqovire/1/edit2、瀑布流新闻网站http...

  • 7.JavaScript下

    页外JS: 往原有标签内增加标签: JS综合练习:瀑布流

网友评论

      本文标题:js瀑布流

      本文链接:https://www.haomeiwen.com/subject/rewkfhtx.html