zoukankan      html  css  js  c++  java
  • Grid布局20行代码快速生成瀑布流

    网格布局

    Grid 布局,好用又简单,至少比 Flex 要人性化一点,美中不足就是浏览器支持度差点。


    DOM结构

    DOM

    中间夹层为了后续拓展。


    CSS

    .grid {
    	display: grid;
        grid-template-columns: repeat(2, 1fr);
        grid-auto-rows: 10px;
        grid-column-gap: 4px;
        height: e('calc(100% - 32px)');
        overflow-y: scroll;
    }
    
    .img-container {
        .img {
             100%;
            height: auto;
        }
    }
    

    .grid 的意思是网格布局,2 列平分宽度,单行为 10px,自动拓展行数,列间距 4px,超出高度滚动。

    这里 10px 是颗粒度,颗粒度越小,效果越好。注意,颗粒度与行间距有关,颗粒度小,行间距最好为 0,颗粒度大可以有适量的行间距,但是建议依然是 0。

    图片设置 width 为 100%,是表明为等宽瀑布。


    JavaScript

    return m('.img-container', { : this.clickImg, style: `grid-row: auto / span ${this.rows}` }, [
          m("img.img[alt='img']", {
            src: url,
            : e => {
              const rows = ~~(e.target.height / 10) + 1
              this.rows = rows
            }
          })
        ])
    

    这是 Mithril.js 的代码,知道我的都清楚我最近用这个。

    代码意思就是给夹层根据图片高度设置所在网格行,auto 是自动放置在某行,span X 是跨越多少行,这里跨越多少取决于图片高与颗粒度的商,商 + 1 是为了留白。

    这里的 10 对应的是 CSS 里面的 10px,注意下。


    效果

    实际效果


    小结

    1. HTML 两层或三层,具体看自己需求,建议 3 层用于拓展。
    2. CSS Grid 布局,设置行为自动,颗粒度尽量小,不要行间距。
    3. JavaScript 通过图片缩放后的高度来设置跨越的行数。
    4. 缺点,图片排序会有偏差。
  • 相关阅读:
    实验一 总结
    C#中将JObject类型数据转换成这样的货币数字-带千分符-四舍五入2位小数
    Git常用命令+报错solution
    Python Requests学习笔记
    Python requests 环境搭建
    关于Page Object个人结合测试框架的一些理解
    REST理解 + API测试学习笔记
    记录组内做API测试的流程
    理解c#的Get Set访问器及测试脚本中的应用
    tp3
  • 原文地址:https://www.cnblogs.com/ZweiZhao/p/9783930.html
Copyright © 2011-2022 走看看