1 Star 2 Fork 2

周霖峰/vue-mobile-table

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
ISC

vue-mobile-table

说明

vue-mobile-table是一个移动端使用的轻量级table展示组件(目前对增删改并不支持,主要针对类似股票软件中查看行情的table展示列表的业务场景),组件内部布局主要采用flex布局,并未使用table标签。内部在滚动上使用BetterScroll 2.0中的transform来处理滚动,使得滚动更加细腻。在dom渲染上采用虚拟dom技术,让vue-mobile-table很好的保证不卡顿的前提下渲染一个超长的列表。并且vue-mobile-table支持上拉加载和下拉刷新,更加方便做多样的ajax请求。该组件高度默认为父组件高度,且表头固定(可通过设置父组件高度来控制该组建的高度)。

功能

  1. 表头固定
  2. 表列左边固定
  3. 虚拟渲染(默认且一定开启)
  4. 上拉加载和下拉刷新
  5. 支持排序

优点

  1. 可渲染大量数据,并保持流畅
  2. 使用betterscroll 2.0 替换原生滚动,在移动端滚动更加流畅
  3. 支持排序
  4. 所有设置为纯数字的关于元素大小的单位都将根据标准设计图的px转为当前对应设备的vw单位

缺陷

  1. 并不支持增删改等一些列操作
  2. 只能针对固定行高的展示列表,对非固定行高的列表,
  3. 固定列只支持左固定

样式兼容性

该组件样式主要使用flex布局,和fit-content,并无其他非常规css样式

使用

  • 安装组件
npm install vue-mobile-table --save
  • main.js中引入该组件
import vueMobileTable from  from 'vue-mobile-table'
Vue.use(vueMobileTable)
  • 使用
<template>
  <div
    style="height: 100%; width: 100%; overflow: hidden; box-sizing: border-box"
  >
    <vue-mobile-table :dataSource="tableData" :requestData="requestData">
      <table-column
        prop="index"
        fixed
        label="序号"
        sortable
      ></table-column>
      <table-column
        prop="name"
        label="名称"
        min-width="120"
        align="right"
      ></table-column>
      <table-column prop="text" label="文本" min-width="120"></table-column>
      <table-column prop="age" label="年龄" min-width="120"></table-column>
    </vue-mobile-table>
  </div>
</template>

<script>
export default {
  name: "testPage",
  data() {
    return {
      tableData: [],
    };
  },
  methods: {
    requestData(isFresh) {
      // alert(12)
      return new Promise((reslove) => {
        if (isFresh) {
          setTimeout(() => {
            reslove(true);
          }, 2000);
        } else {
          setTimeout(() => {
            for (let index = 0; index < 100; index++) {
              this.tableData.push({
                index: index,
                age: index,
                text: "我是一段文字,我很长,不要换行",
                name: "姓名" + index + "号",
              });
            }
            reslove(true);
          }, 2000);
        }
      });
    },
  },
  created() {
    let data = [];
    for (let index = 0; index < 100; index++) {
      data.push({
        index: index,
        age: index,
        text: "我是一段文字,我很长,不要换行",
        name: "姓名" + index + "号",
      });
    }
    this.tableData = data;
    // console.log(this.tableData);
  },
};
</script>

<style></style>

示例视频demo

ISC License Copyright (c) 2022, 周霖峰 Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

简介

vue-mobile-table是一个移动端使用的轻量级table展示组件,组件内部布局主要采用flex布局,并未使用table标签。内部在滚动上使用BetterScroll 2.0中的transform来处理滚动,使得滚动更加细腻。在dom渲染上采用虚拟dom技术,让vue-mobile-table很好的保证不卡顿的前提下渲染一个超长的列表。 展开 收起
JavaScript
ISC
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/zhou-linfeng/vue-mobile-table.git
git@gitee.com:zhou-linfeng/vue-mobile-table.git
zhou-linfeng
vue-mobile-table
vue-mobile-table
master

搜索帮助