• 固定行列表格


    1. 问题描述

    在Excel表格中,有一个功能叫冻结行列;该功能的作用是固定表格中指定的行/列, 固定的行/列一般表述数据的说明; 这样就能使表格具有更好的可读性;
    这是一个对于数据管理非常有用的功能,当在做一款关于客户管理的小程序时就涉及到了该功能, 下面是该功能在微信小程序的实现过程.

    2. 前置知识

    CSS 实现表格的关键属性:

    /* 该属性用来决定表格的边框是分开的还是合并的,
       在分隔模式下,相邻的单元格都拥有独立的边框;
       在合并模式下,相邻单元格共享边框。 */
    borborder-collapse: collapse
    /* 这个值指定一个元素定义了一个块级表。因此它定义了一个生成块框的矩形块。相应的html元素是table */
    display: table
    /* 这个值指定一个元素是单元格的行,相应的html元素是tr元素 */
    display: table-row
    /* 这个值指定一个元素表示表中的单个单元格,html元素th和td都属于table-cell元素 */
    displat: table-cell
    

    3. 实现原理

    其实, 固定表格并不是一个单一的表格, 而是通过z-index 属性达到盒模型叠加的原理来达到固定行列的效果; 下面是是固定表格的渲染流程:

    1. 绘制固定行列交叉内容
      绘制固定行列交叉内容

    2. 绘制固定列
      绘制固定列

    3. 绘制固定行
      绘制固定行

    4. 绘制非固定行列
      绘制非固定行列

    4. scroll-view 同步

    scroll-view 是微信小程序内置的scroll 内容组件, 他具有以下的特点

    1. 只存在两个scroll-view 时, scroll-x, scroll-y 这两个内容在两个scroll-view 是同时出发的
    2. 当存在三个scroll-view 时, 且它们特点如图所示时, scroll-x scroll-y 并非同时出发, 而是独立出发的;

    5. 注意点

    1. web 浏览器渲染固定行列表格的原理也是一致的;
    2. 在这里实现的固定行列表格中,存在着一个问题:Y轴方向上的滑动其实左右存在着误差;导致这个误差的原因是:Y轴方向上左右两个scroll-view保持一致是通过组件的通信来实现的,所以这个时延是不可避免的; 当表格足够复杂, 那么会导致表格y轴滚动会异常卡顿, 因为scroll 事件触发的频率很高, this.setData 同样也非常消耗性能; 所以Y轴滑动最好不要在微信小程序中启用;
    3. 对于第2点, 这里有一个优化建议: X轴的固定采用隐藏组件的方式(暂未验证)

    6. 项目地址

    固定行列表格

    7. 参考链接

    1. 微信小程序固定行列表格原理
  • 相关阅读:
    通过包名获取该包下的所有类
    spring各版本下载地址
    Hash函数和消息摘要算法
    @Value在Controller中取值
    Velocity根据模版生成静态html
    所谓人生
    用递归解决问题
    获取客户端IP
    windows下文件名非法字符
    各控件所支持的数据源格式
  • 原文地址:https://www.cnblogs.com/oulae/p/12920719.html
Copyright © 2020-2023  润新知