您的位置:首页 > Web前端 > > 正文

瀑布流模板怎么搞(3种方式实现瀑布流布局小结)

更多 时间:2021-10-02 01:57:51 类别:Web前端 浏览量:1881

瀑布流模板怎么搞

3种方式实现瀑布流布局小结

前言

今天逛闲鱼的时候观察到每一行的高度不是相同的,经了解才知道原来这是一种瀑布流布局,感觉挺有意思,于是决定研究一下,在网上也找了一些方案,实现瀑布流大概有3种方式。

一、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>
    <li class="box">
        <li class="item">
            <img  src="banner.jpg" alt="瀑布流模板怎么搞(3种方式实现瀑布流布局小结)" border="0" />
    
  • 效果如下
     

    瀑布流模板怎么搞(3种方式实现瀑布流布局小结)

    二、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>
    <li class="box">
        <li class="item">
            <img  src="banner.jpg" alt="瀑布流模板怎么搞(3种方式实现瀑布流布局小结)" border="0" />
    
  • 效果如下:
     

    瀑布流模板怎么搞(3种方式实现瀑布流布局小结)

    三、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>
    <li class="box">
        <li class="item">
            <img  src="banner.jpg" alt="瀑布流模板怎么搞(3种方式实现瀑布流布局小结)" border="0" />
    
  • 效果如下:
     

    瀑布流模板怎么搞(3种方式实现瀑布流布局小结)

    四、3种方式对比

    如果只是简单的页面展示,可以使用 column 多栏布局和 flex 弹性布局。如果需要动态添加数据,或者动态设置列数,就需要使用到 JS + jQuery。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。

    标签:瀑布流布局