返回顶部
首页 > 资讯 > 精选 >怎么实现瀑布流布局
  • 655
分享到

怎么实现瀑布流布局

2023-06-09 12:06:33 655人浏览 八月长安
摘要

本篇文章给大家分享的是有关怎么实现瀑布流布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、JS 实现瀑布流思路分析瀑布流布局的特点是等宽不等高。为了让最后一行的差距最小,从

本篇文章给大家分享的是有关怎么实现瀑布流布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、JS 实现瀑布流

思路分析

  • 瀑布流布局的特点是等宽不等高。

  • 为了让最后一行的差距最小,从第二行开始,需要将图片放在第一行最矮的图片下面,以此类推。

  • 父元素设置为相对定位,图片所在元素设置为绝对定位。然后通过设置 top 值和 left 值定位每个元素。

代码实现

<!DOCTYPE html><html><head>    <style>        .box {            width: 100%;            position:relative;        }        .item {            position: absolute;        }        .item img{            width: 100%;            height:100%;        }    </style></head><body><div class="box">    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div></div></body><script src="Jquery.min.js"></script><script>    function waterFall() {        // 1 确定图片的宽度 - 滚动条宽度        var pageWidth = getClient().width-8;        var columns = 3; //3列        var itemWidth = parseInt(pageWidth/columns); //得到item的宽度        $(".item").width(itemWidth); //设置到item的宽度        var arr = [];        $(".box .item").each(function(i){            var height = $(this).find("img").height();            if (i < columns) {                // 2 第一行按序布局                $(this).CSS({                    top:0,                    left:(itemWidth) * i+20*i,                });                //将行高push到数组                arr.push(height);            } else {                // 其他行                // 3 找到数组中最小高度  和 它的索引                var minHeight = arr[0];                var index = 0;                for (var j = 0; j < arr.length; j++) {                    if (minHeight > arr[j]) {                        minHeight = arr[j];                        index = j;                    }                }                // 4 设置下一行的第一个盒子位置                // top值就是最小列的高度                $(this).css({                    top:arr[index]+30,//设置30的距离                    left:$(".box .item").eq(index).css("left")                });                // 5 修改最小列的高度                // 最小列的高度 = 当前自己的高度 + 拼接过来的高度                arr[index] = arr[index] + height+30;//设置30的距离            }        });    }    //clientWidth 处理兼容性    function getClient() {        return {            width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,            height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight        }    }    // 页面尺寸改变时实时触发    window.onresize = function() {        //重新定义瀑布流        waterFall();    };    //初始化    window.onload = function(){        //实现瀑布流        waterFall();    }</script></html>

效果如下
 

怎么实现瀑布流布局

二、column 多行布局实现瀑布流

思路分析:

column 实现瀑布流主要依赖两个属性。
一个是 column-count 属性,是分为多少列。
一个是 column-gap 属性,是设置列与列之间的距离。

代码实现:

<!DOCTYPE html><html><head>    <style>        .box {            margin: 10px;            column-count: 3;            column-gap: 10px;        }        .item {            margin-bottom: 10px;        }        .item img{            width: 100%;            height:100%;        }    </style></head><body><div class="box">    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div></div></body>

效果如下:
 

怎么实现瀑布流布局

三、flex 弹性布局实现瀑布流

思路分析:

flex 实现瀑布流需要将最外层元素设置为 display: flex,即横向排列。然后通过设置 flex-flow:column wrap 使其换行。设置 height: 100vh 填充屏幕的高度,来容纳子元素。每一列的宽度可用 calc 函数来设置,即 width: calc(100%/3 - 20px)。分成等宽的 3 列减掉左右两遍的 margin 距离。

代码实现:

<!DOCTYPE html><html><head>    <style>        .box {          display: flex;            flex-flow:column wrap;          height: 100vh;        }        .item {            margin: 10px;            width: calc(100%/3 - 20px);        }        .item img{            width: 100%;            height:100%;        }    </style></head><body><div class="box">    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div></div></body>


 

以上就是怎么实现瀑布流布局,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 怎么实现瀑布流布局

本文链接: https://lsjlt.com/news/255978.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么实现瀑布流布局
    本篇文章给大家分享的是有关怎么实现瀑布流布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、JS 实现瀑布流思路分析瀑布流布局的特点是等宽不等高。为了让最后一行的差距最小,从...
    99+
    2023-06-09
  • uniapp瀑布流布局怎么实现
    要实现uniapp中的瀑布流布局,可以使用uniapp提供的mescroll组件,通过配置该组件实现瀑布流效果。以下是实现瀑布流布局...
    99+
    2024-03-08
    uniapp
  • AJAX实现瀑布流布局
    这篇文章给大家分享的是有关AJAX实现瀑布流布局的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。瀑布流是当前一种比较流行的网站界面布局方式,参差不齐的多栏布局以及到达底部自动加载的方式,使网站在视觉和用户体验上都能...
    99+
    2023-06-08
  • vue+uniapp瀑布流布局怎么实现
    这篇“vue+uniapp瀑布流布局怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue+uniapp瀑布流布局怎么...
    99+
    2023-07-05
  • 原生js怎么实现瀑布流布局
    这篇文章主要介绍原生js怎么实现瀑布流布局,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用js实现瀑布流布局以及通过模拟的数据加载图片,已标记注释效果如图:<!DOCTYPE&...
    99+
    2024-04-02
  • jquery如何实现瀑布流布局
    这篇文章将为大家详细讲解有关jquery如何实现瀑布流布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.看看效果吧!2.html代码index.html<!DO...
    99+
    2024-04-02
  • JavaScript如何实现瀑布流布局
    这篇文章将为大家详细讲解有关JavaScript如何实现瀑布流布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。就是一堆等宽不等高的数据块组成的页面,如图: 现在好多网站...
    99+
    2024-04-02
  • JavaScriptL如何实现瀑布流布局
    这篇“JavaScriptL如何实现瀑布流布局”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2024-04-02
  • JQuery实现简单瀑布流布局
    本文实例为大家分享了JQuery实现简单瀑布流布局的具体代码,供大家参考,具体内容如下 分享一个基于JQuery实现的瀑布流布局,效果如下:  实现代码如下,欢迎大家复制...
    99+
    2024-04-02
  • JavaScript实现瀑布流布局详解
    目录需求思路代码实现实现效果问题和修正修正后效果总结需求 所谓瀑布流布局,就是含有若干个等宽的列,每一列分别放置图片、视频等,放置的元素都是等宽的,因此可能是不等高的。新的元素到来时...
    99+
    2024-04-02
  • 怎么用JS实现网页瀑布流布局
    这篇文章主要介绍怎么用JS实现网页瀑布流布局,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!JS是什么JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分...
    99+
    2023-06-14
  • 小程序中怎么实现瀑布流布局
    这篇文章将为大家详细讲解有关小程序中怎么实现瀑布流布局,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。widthFix:宽度不变,高度自动变化,保持原图宽高比不变。配合column-count...
    99+
    2023-06-19
  • HTML中如何实现瀑布流布局
    这篇文章将为大家详细讲解有关HTML中如何实现瀑布流布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一种方式:使用JavaScript:<!DOCTYPE&nb...
    99+
    2024-04-02
  • 如何用js实现瀑布流布局
    这篇“如何用js实现瀑布流布局”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用js实现瀑布流布局”文章吧。一、前端代码编...
    99+
    2023-07-05
  • 使用CSS3怎么实现一个瀑布流布局
    使用CSS3怎么实现一个瀑布流布局?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。掌握点:column-count 把div中的文本分为多少列column-width 规定列宽c...
    99+
    2023-06-08
  • Ionic3如何实现图片瀑布流布局
    小编给大家分享一下Ionic3如何实现图片瀑布流布局,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先创建一个项目,这里不多做介...
    99+
    2024-04-02
  • 如何使用Bootstrap实现瀑布流布局
    这篇文章将为大家详细讲解有关如何使用Bootstrap实现瀑布流布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、案例介绍瀑布流是近几年流行起来的一种网页布局,视觉表...
    99+
    2024-04-02
  • js实现瀑布流布局(无限加载)
    本文实例为大家分享了js实现瀑布流布局的具体代码,供大家参考,具体内容如下 1.实现瀑布流布局思路 准备好数据之后 . 绑定滚动事件 . 判断页面是否到底(滚动的距离+可是区域的高度...
    99+
    2024-04-02
  • 如何利用Bootstrap实现瀑布流布局
    这篇文章主要介绍了如何利用Bootstrap实现瀑布流布局,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、案例介绍瀑布流是近几年流行起来的...
    99+
    2024-04-02
  • 如何在css中实现瀑布流布局
    这期内容当中小编将会给大家带来有关如何在css中实现瀑布流布局,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.multi-column多列布局实现瀑布流先简单的讲下multi-column相关的部分属性...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作