微信小程序原生实现无边框table组件支持横向和纵向滚动

这篇具有很好参考价值的文章主要介绍了微信小程序原生实现无边框table组件支持横向和纵向滚动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果图(支持单元格样式自定义)

微信小程序table组件,微信小程序,小程序
微信小程序table组件,微信小程序,小程序

table组件代码

wxml文件

<!-- 表格 -->
<view class="table">
  <!-- 整体横向滑动 -->
  <scroll-view class="tableX" scroll-x>
    <!-- 表头 -->
    <view class="tr">
      <view
        wx:for="{{columns}}"
        wx:for-item="column"
        wx:key="index"
        style="width:{{column.width || '200rpx'}}"
        class="th"
        >{{column.title}}
      </view>
    </view>
    <!-- 内容 -->
    <!-- 除表头外纵向滑动 -->
    <scroll-view class="tableY" scroll-y>
      <view class="tr" wx:for="{{tableData}}" wx:for-item="table" wx:key="index">
        <view
          style="border-bottom:{{index===tableData.length-1? 'none':'1px solid #DBDBDB'}};width:{{columnItem.width || '200rpx'}}"
          class="{{columnItem.class? 'td '+columnItem.class : 'td' }}"
          wx:for="{{columns}}"
          wx:for-item="columnItem"
          wx:for-index="columnIndex"
          wx:key="columnIndex"
          >{{table[columnItem.key]}}
        </view>
      </view>
    </scroll-view>
  </scroll-view>
</view>

wxss文件

/* 项目表格 */
.table {
  background: #FFFFFF;
  box-shadow: 0px 0px 10rpx 0px rgba(32,76,131,0.12);
  border-radius: 20rpx ;
  box-sizing: border-box;
  padding: 40rpx 20rpx 20rpx 20rpx;
}
.tableY {
  height: 500rpx;
}
.tr, .tableY {
  width: 900rpx;
}
.tr {
  display: flex;
}
.th{
  padding-bottom: 8rpx;
  border-bottom: 1px solid #26A13A;
  text-align: center;
  font-weight: bold;
  font-size: 20rpx;
  font-weight: 400;
  color: #000000;
}
.td {
  padding: 20rpx 0rpx;
  text-align: center;
  font-size: 18rpx;
  font-weight: 400;
  color: #666666;
}

js文件

// components/pr-table/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    columns: {
      type: Array,
      value: [],
    },
    tableData: {
      type: Array,
      value: [],
    },
  },
  options: {
    styleIsolation: 'apply-shared', //开启后可以通过page页面的wxss来修改组件的样式,主要用来对单元格样式自定义
  },
  /**
   * 组件的初始数据
   */
  data: {},

  /**
   * 组件的方法列表
   */
  methods: {},
});

组件使用

1、在page页面的json文件中引入组件(默认大家都会引入);
2、在page页面的wxml文件中使用组件

<pr-table columns="{{columns}}" tableData="{{tableData}}" />

3、在page页面的js文件中设置数据

Page({
  /**
   * 页面的初始数据
   */
  data: {
    tableData: [
      {
        product: '450冠草莓',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '高',
        oderDay: '05-10',
      },
      {
        product: '480屋顶包原味',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '中',
        oderDay: '05-07',
      },
      {
        product: '原味西南预制杯',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '底',
        oderDay: '05-09',
      },
      {
        product: '红枣西南预制杯',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '底',
        oderDay: '05-09',
      },
      {
        product: '450原味瓶',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '底',
        oderDay: '05-09',
      },
      {
        product: '450冠草莓',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '高',
        oderDay: '05-10',
      },
      {
        product: '480屋顶包原味',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '中',
        oderDay: '05-07',
      },
      {
        product: '原味西南预制杯',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '底',
        oderDay: '05-09',
      },
      {
        product: '红枣西南预制杯',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '底',
        oderDay: '05-09',
      },
      {
        product: '450原味瓶',
        specifications: '223ml*16',
        isNewProduct: '新品',
        estimatedProfit: '底',
        oderDay: '05-09',
      },
    ],
    columns: [
      { title: '产品', key: 'product', width: '200rpx' },
      { title: '规格', key: 'specifications', width: '200rpx' },
      { title: '是否新品', key: 'isNewProduct', class: 'newProduct', width: '100rpx' }, // class可以修改单元样式
      { title: '预估利润', key: 'estimatedProfit', class: 'estimatedProfit', width: '200rpx' },
      { title: '订单日', key: 'oderDay', class: 'oderDay', width: '200rpx' },
    ],
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {},

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getTabBar().init();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});

4、在page页面的wxss文件中修改样式文章来源地址https://www.toymoban.com/news/detail-723347.html

page {
  box-sizing: border-box;
  background: #F2F3F7;
  padding: 0rpx 20rpx;
}

.newProduct {
  font-weight: bold !important;
  color: #71BDE4 !important;
}
.estimatedProfit {
  font-weight: bold !important;
  color: #EBD364 !important;
}
.oderDay {
  font-weight: bold !important;
  color: #F39E38 !important;
}

到了这里,关于微信小程序原生实现无边框table组件支持横向和纵向滚动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序集成和使用mqtt(同时支持uniapp和原生)

           在集成mqtt到小程序的开发过程中,确实走了不少弯路,下了许许多多的示例,一步步踩坑到现在终于完美解决了小程序引入mqtt的方法。该方法原生和uniapp均适用。 先登录微信公众平台,找到开发》开发管理》开发设置页面   服务器域名配置中 配置socket合法域名为,

    2024年02月07日
    浏览(73)
  • 原生微信小程序使用 wxs;微信小程序使用 vant-weapp组件

    在这里插入图片描述 操作顺序 :文档地址 如果使用 typescript 需要操作步骤3,否则不需要操作 2.1 在根目录下 操作 2.2 安装版本 2.3 构建包 - 详情-勾选使用 npm 2.4 使用 vant 组件

    2024年02月11日
    浏览(74)
  • 微信小程序原生写法——24小时时间选择器组件

    使用picker-view来封装成的一个时间选择器 开始时间是当前时间的一个小时之后,秒默认是0秒 可能还有一些情况未处理,后续发现再更新 js文件 第一版:略繁琐 第二版js文件:根据当前时间的时间戳A与24小时之后的时间戳B两者来进行处理获取对应的列表 json文件 wxml文件 wxs

    2024年02月04日
    浏览(63)
  • 微信小程序原生button组件使用并修改样式

     想使用原生button组件,但是想使用不同样式 注意type使用得type必须和修改时选择器样式(button[type=default])一样,才能对其修改样式,否则样式不会被修改 如果是多端适配,需要使用type为default再修改样式  

    2024年02月14日
    浏览(57)
  • 微信小程序原生开发功能合集二:下拉选择组件封装

      本章实现小程序中下拉选择组件的封装实现,通过自定义组件的方式实现下拉选择功能,使用小程序的picker组件实现下拉数据的展示及相关自定义处理,封装数据加载过程,数据切换逻辑监听等。   本节实现select组件的开发说明,另使用nodejs创建express服务器,为远程

    2024年02月02日
    浏览(62)
  • uniapp使用微信小程序提供的原生插件(组件)

    小程序交易保障标展示组件 为例 参考uniapp加载插件、微信小程序加载插件 1. manifest.json: 先打开manifest.json文件,然后我们找到\\\"mp-weixin\\\",引入需要使用的插件 2. pages.json 打开pages.json文件,然后再对应的页面配置处添加东西 3.页面使用

    2024年02月11日
    浏览(64)
  • 微信小程序修改原生组件样式(uni-app)

    微信小程序修改原生组件样式 全局修改,直接将修改的样式写在全局的样式文件中; 特殊情况:修改swiper指示点样式时,需要包裹在swiper的样式选择器下才生效。 直接将下列代码放在全局样式中是不会生效的,需要加上swiper组件的元素选择器或swiper组件的其他样式名也可。

    2024年02月05日
    浏览(76)
  • 基于自定义组件实现微信小程序动态tabBar,根据不同用户角色显示不同底部tabBar,支持自由组合总数超过5个(更新版)

    背景 在开发小程序过程中,有个需求是,小程序底部的tabBar需要根据不同用户角色显示不同底部导航。此时就需要用到自定义底部导航 custom-tab-bar。 上次发文是组合显示4个底部tabBar导航,很多小伙伴评论说组合超过5个怎么办。他们的需求总数超过5个了。 现在我在这里更新

    2024年01月17日
    浏览(37)
  • 原生微信小程序基础-分包加载&&自定义组件&&&项目全流程

    小程序分包加载 小程序分包加载-为什么要分包加载 微信平台对小程序单个包的代码 体积限制为 2M ,超过 2M 的情况下可以采用分包来解决 即使小程序代码体积没有超过 2M 时也可以拆分成多个包来实现 按需加载 配置文件能忽略的只有静态资源, 代码无法被忽略 配置忽略文

    2024年02月08日
    浏览(53)
  • 支付宝原生小程序组件与父级传递数据(微信小程序基本一样)

    1. 声明组件 在对应的目录下,右击点击 新建小程序 ,之后会生成对应的文件 2. 子组件

    2024年02月16日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包