国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序表格組件--固定表頭、自適應(yīng)列寬、單元格點(diǎn)擊事件支持、可滾動表格內(nèi)容、斑馬線樣式

這篇具有很好參考價值的文章主要介紹了微信小程序表格組件--固定表頭、自適應(yīng)列寬、單元格點(diǎn)擊事件支持、可滾動表格內(nèi)容、斑馬線樣式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

ScrollableFixedHeaderTable

一個具有固定表頭、自適應(yīng)列寬、單元格點(diǎn)擊事件支持、可滾動表格內(nèi)容、和斑馬線樣式的微信小程序表格組件。
項(xiàng)目地址:github項(xiàng)目地址,如果本項(xiàng)目對您有幫助,還請star,感謝

動機(jī)

瀏覽了不少微信小程序組件庫,發(fā)現(xiàn)都沒有表格組件,可能大家認(rèn)為微信小程序上展示表格沒有必要?之后又在github上找,發(fā)現(xiàn)不少組件只監(jiān)聽表格的行點(diǎn)擊事件,而我需要監(jiān)聽某一具體單元格的點(diǎn)擊事件,所以寫下了此份組件

真機(jī)演示

小程序 表格插件,微信小程序,微信小程序,小程序

功能特性

  • 固定表頭:表頭始終保持在屏幕頂部,方便用戶在查看表格數(shù)據(jù)時始終保持對列標(biāo)題的參考;
  • 點(diǎn)擊事件支持:支持單元格點(diǎn)擊事件,以便在點(diǎn)擊每個單元格時(除表頭外)執(zhí)行自定義操作;
  • 可滾動表格內(nèi)容:表格內(nèi)容可以在水平和垂直方向上滾動,以顯示更多的數(shù)據(jù);
  • 自適應(yīng)列寬:根據(jù)最長的表頭元素長度計算最小列寬,使表頭與表格數(shù)據(jù)保持同寬;
  • 斑馬線樣式:表格行間隔的背景顏色不同,提高數(shù)據(jù)的可讀性;
  • 可自定義表頭背景顏色和單元格無數(shù)據(jù)時的顯示內(nèi)容。

屬性列表

屬性 類型 默認(rèn)值 必填 說明
column-names Array [] yes 表頭的列名數(shù)組
table-data Array [] yes 表格數(shù)據(jù)的二維數(shù)組
bind:celltap eventhandle - yes 點(diǎn)擊每個單元格時(除表頭外)執(zhí)行自定義操作。其中,形參的e.detail.row得到當(dāng)前單元格的行下標(biāo);e.detail.col得到當(dāng)前單元格的列下標(biāo)
stripe Boolean true no 是否顯示斑馬紋
borderline Boolean false no 是否顯示邊框
header-background String ‘#2d66cf’ no 表頭的背景顏色
no-data-msg String ‘無’ no 單元格無數(shù)據(jù)時的顯示內(nèi)容

表格組件源碼

  1. ScrollableFixedHeaderTable.js
// components/ScrollableFixedHeaderTable/ScrollableFixedHeaderTable.js
Component({

  /**
   * 組件的屬性列表
   */
  properties: {
    columnNames: {
      type: Array,
      value: []
    },
    tableData: {
      type: Array,
      value: []
    },
    //單元格無數(shù)據(jù)時的顯示內(nèi)容
    noDataMsg:{
      type:String,
      value: '無'
    },
    //是否顯示斑馬紋
    stripe:{
       type:Boolean,
       value:true
    },
    //是否顯示列邊框
    borderline:{
      type:Boolean,
      value:false
    },
    //表頭背景顏色
    headerBackground:{
      type:String,
      value:'#2d66cf'
    }

  },

  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {
    minWidth: 80,
    headerHeight: 3,
    headerScrollLeft: 0
  },

  /**
   * 組件的方法列表
   */
  methods: {
    calcMinWidth: function (cols) {
      //由最長的表頭元素長度計算(表頭與表格數(shù)據(jù)的)最小寬度
      var _max = -1;
      const padding = 5;
      const charWidth = 15;
      for (let i = 0; i < cols.length; i++) {
        if (cols[i].length > _max) {
          _max = cols[i].length;
        }
      }
      const maxTextLength = _max;
      return padding * 2 + charWidth * maxTextLength;
    },

    //實(shí)現(xiàn)表頭的同步滑動
    syncScroll: function (e) {
      const scrollLeft = e.detail.scrollLeft;
      this.setData({
        headerScrollLeft: scrollLeft
      });
    },

    onCellTap: function (e) {
      this.triggerEvent('celltap', e.currentTarget.dataset);
    }
  },

  ready: function () {
    const minWidth = this.calcMinWidth(this.data.columnNames);
    this.setData({
      minWidth
    });
  }
});
  1. ScrollableFixedHeaderTable.json
{
  "component": true,
  "styleIsolation": "apply-shared",
  "usingComponents": {}
}
  1. ScrollableFixedHeaderTable.wxml
<!--components/ScrollableFixedHeaderTable/ScrollableFixedHeaderTable.wxml-->
<!-- 表頭,此處禁用了表頭的指針事件,即表頭將不會響應(yīng)觸摸滾動事件。表頭的滾動由表格內(nèi)容的滑動引起。 -->
<scroll-view class="header" scroll-x="true" scroll-left="{{headerScrollLeft}}" style="pointer-events: none; position: fixed; z-index: 100;">
  <view class="tr">
    <view class="th" style="min-width: {{minWidth}}px; {{borderline ? 'border: 0.1px solid black;' : ''}} background:{{headerBackground}}" wx:for="{{columnNames}}" wx:key="*this" wx:for-item="colName">
      <text>{{colName}}</text>
    </view>
  </view>
</scroll-view>

<!-- 表格內(nèi)容 -->
<!-- table數(shù)組的每個數(shù)組元素作為rowDatas,rowDatas是一個包含該行所有信息的數(shù)組,故還可以循環(huán)展開 -->
<scroll-view class="content" wx:if="{{columnNames.length != 0}}" scroll-x="true" bindscroll="syncScroll" style="padding-top: {{headerHeight}}rem;">

  <view class="tr {{stripe ? 'tr-stripe' : ''}}" wx:for="{{tableData}}" wx:key="*this" wx:for-index='rowIndex' wx:for-item="rowData" >
    <view class="td" style=" min-width: {{minWidth}}px; {{borderline ? 'border: 0.1px solid black;' : ''}} {{(stripe && (rowIndex % 2 == 1)) ? 'background: #f0eeee;' : '' }}" wx:for="{{rowData}}" wx:key="*this" wx:for-item="detail" wx:for-index='colIndex' bindtap="onCellTap" data-row="{{rowIndex}}" data-col="{{colIndex}}">
      {{(detail.length == 0 )? noDataMsg : detail}}
    </view>
  </view>

</scroll-view>
  1. ScrollableFixedHeaderTable.wxss
/* components/ScrollableFixedHeaderTable/ScrollableFixedHeaderTable.wxss */
.tr {
  display: flex;
  align-items: center;
  height: 3rem;
  width: 100%;
}

.td, .th {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 10px;
  height: 100%;
}

.th {
  color: #fff;
  font-size: 15px;
}

.tr-stripe {
  background: #fff;
}
.tr-stripe:nth-child(2n) {
  background: #f0eeee;
}

.td {
  font-size: 12px;
}

使用示例

將以上4份源文件添加至當(dāng)前目錄下的同一文件夾ScrollableFixedHeaderTable,并對需要使用此組件的頁面json文件添加以下代碼以引入組件
index.json

{
  "usingComponents": {
    "scrollable-fixed-header-table": "./ScrollableFixedHeaderTable"
  }
}

在需要使用此組件的頁面的WXML文件中,添加以下代碼以使用組件:

index.wxml

<scrollable-fixed-header-table
  column-names="{{columnNames}}"
  table-data="{{table}}"
  bind:celltap="onCellTap"
  stripe="{{stripe}}"
  borderline="{{borderline}}"
  header-background="{{headerbg}}"
  no-data-msg=""
/>

index.js文章來源地址http://www.zghlxwxcb.cn/news/detail-843375.html

Page({
  data: {
    stripe: true,
    borderline:false,
    headerbg:'#2d66cf',
    columnNames: ['Header 1', 'Header 2', 'Header 3', 'Header 4'],
    table: [
      ['', 'Row 1, Col 2', 'Row 1, Col 3', 'Row 1, Col 4'],
      ['Row 2, Col 1', 'Row 2, Col 2', 'Row 2, Col 3', 'Row 2, Col 4'],
      ['Row 3, Col 1', 'Row 3, Col 2', 'Row 3, Col 3', 'Row 3, Col 4'],
      ['Row 4, Col 1', 'Row 4, Col 2', 'Row 4, Col 3', 'Row 4, Col 4'],
      ['Row 5, Col 1', 'Row 5, Col 2', 'Row 5, Col 3', 'Row 5, Col 4'],
      ['Row 6, Col 1', 'Row 6, Col 2', 'Row 6, Col 3', 'Row 6, Col 4'],
      ['Row 7, Col 1', 'Row 7, Col 2', 'Row 7, Col 3', 'Row 7, Col 4'],
      ['Row 8, Col 1', 'Row 8, Col 2', 'Row 8, Col 3', 'Row 8, Col 4'],
      ['Row 9, Col 1', 'Row 9, Col 2', 'Row 9, Col 3', 'Row 9, Col 4'],
      ['Row 10, Col 1', 'Row 10, Col 2', 'Row 10, Col 3', 'Row 10, Col 4'],
      ['Row 11, Col 1', 'Row 11, Col 2', 'Row 11, Col 3', 'Row 11, Col 4'],
      ['Row 12, Col 1', 'Row 12, Col 2', 'Row 12, Col 3', 'Row 12, Col 4'],
      ['Row 13, Col 1', 'Row 13, Col 2', 'Row 13, Col 3', 'Row 13, Col 4'],
      ['Row 14, Col 1', 'Row 14, Col 2', 'Row 14, Col 3', 'Row 14, Col 4'],
      ['Row 15, Col 1', 'Row 15, Col 2', 'Row 15, Col 3', 'Row 15, Col 4'],
      ['Row 16, Col 1', 'Row 16, Col 2', 'Row 16, Col 3', 'Row 16, Col 4'],
      ['Row 17, Col 1', 'Row 17, Col 2', 'Row 17, Col 3', 'Row 17, Col 4'],
      ['Row 18, Col 1', 'Row 18, Col 2', 'Row 18, Col 3', 'Row 18, Col 4'],
      ['Row 19, Col 1', 'Row 19, Col 2', 'Row 19, Col 3', 'Row 19, Col 4'],
      ['Row 20, Col 1', 'Row 20, Col 2', 'Row 20, Col 3', 'Row 20, Col 4'],

    ]
  },
  
  onCellTap: function (e) {
    console.log('點(diǎn)擊的單元格行索引為:', e.detail.row, ' 列索引為:', e.detail.col);
  }

});

注意事項(xiàng)

  • 本組件僅適用于微信小程序,不支持其他平臺;
  • 建議在使用此表格時,頁面不展示除該表格以外的內(nèi)容;
  • 沒有處理表頭點(diǎn)擊事件的函數(shù)。

到了這里,關(guān)于微信小程序表格組件--固定表頭、自適應(yīng)列寬、單元格點(diǎn)擊事件支持、可滾動表格內(nèi)容、斑馬線樣式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue+Element ui動態(tài)表格 實(shí)現(xiàn)表頭自適應(yīng)寬度

    Vue+Element ui動態(tài)表格 實(shí)現(xiàn)表頭自適應(yīng)寬度

    根據(jù)業(yè)務(wù)需求,工作中會出現(xiàn)表頭信息不固定,根據(jù)后臺返回數(shù)據(jù),我們要實(shí)現(xiàn)動態(tài)表格的實(shí)現(xiàn) 1. tableData為表格數(shù)據(jù),tableHeader為表頭數(shù)據(jù)。 2. 實(shí)現(xiàn)表頭自適應(yīng)寬度(二種方法) ? ? ① 第一種通過動態(tài)width來定義,通過表頭數(shù)據(jù)的遍歷,將label的表頭信息傳入方法中 ????

    2024年02月15日
    瀏覽(32)
  • element-ui 表格el-table高度不是一個固定值時固定表頭

    element-ui 表格el-table高度不是一個固定值時固定表頭

    elementui中為表格組件提供了height屬性實(shí)現(xiàn)固定表頭 height可以為數(shù)字或者字符串,當(dāng)為一個數(shù)字時表示固定的高度,也可以為百分比等字符串。 當(dāng)height不是一個固定值時,如期望表格可以填充完頁面剩余空間,并且固定表頭時,可以通過給height屬性賦值字符串形式實(shí)現(xiàn)。以頁

    2024年01月25日
    瀏覽(109)
  • 給table組件(有固定列的時候)固定表頭的功能實(shí)現(xiàn)

    1,增加height屬性 在props中添加height屬性, 保證在父組件中可以傳值。如果父組件不傳值,那么就是undefined 2,修改樣式 最主要的是thead和tbody的樣式,其中都是根據(jù)height去動態(tài)控制thead和tbody的樣式,注意下面三個類所在的位置以及對應(yīng)的樣式。 cvn-table-head-row cvn-table-body-row

    2024年02月12日
    瀏覽(104)
  • JavaScript和Vue中實(shí)現(xiàn)表格(table)固定表頭和首列【提供Vue和原生代碼】

    JavaScript和Vue中實(shí)現(xiàn)表格(table)固定表頭和首列【提供Vue和原生代碼】

    本文主要介紹關(guān)于 JS 或 Vue 中如何進(jìn)行表頭,列固定,可以根據(jù)實(shí)際應(yīng)用場景應(yīng)用于 原生 , Vue , 移動端 , 小程序 中 實(shí)際效果展示: 對于列的固定, table 中有對應(yīng)的方法,但是如果列和表頭都要固定,只能通過其他方式實(shí)現(xiàn),如果您找到了更好的自身方法,還請斧正 表

    2024年02月09日
    瀏覽(96)
  • 【element UI 中的af-table-column組件】el-table-column如何自適應(yīng)調(diào)整列寬,簡單高效?。?!

    【element UI 中的af-table-column組件】el-table-column如何自適應(yīng)調(diào)整列寬,簡單高效?。?!

    在element UI框架中,組件el-table-column代表table的一列,有時候我們不想讓里面的內(nèi)容換行,網(wǎng)上的方法一般是需要給自適應(yīng)列寬的column寫一個動態(tài)的width,比較麻煩。 af-table-column是基于 element-ui 組件庫的 el-table-column 組件, 支持自適應(yīng)列寬功能 使用前得先導(dǎo)入,對于第二行“V

    2024年02月08日
    瀏覽(30)
  • 【微信小程序】圖片自適應(yīng)(高度、寬度自適應(yīng))

    wxml: 寫入方法bindload=“imageLoad”,該方法為每一個圖片自動添加當(dāng)前圖片的實(shí)際高度: 加image屬性 mode=“widthFix”,使圖片高度自適應(yīng);

    2024年04月26日
    瀏覽(37)
  • vue element-ui表格組件動態(tài)多級表頭

    vue element-ui表格組件動態(tài)多級表頭

    實(shí)際項(xiàng)目的需求,需要根據(jù)后端動態(tài)獲取的方式來初始化表格的表頭包含哪些信息,且有很多信息是有規(guī)律的,所以我們需要Element UI動態(tài)生成多級表頭。需要的效果圖如下: 由于統(tǒng)計維度是可變化的(它可以是省市也可以是區(qū)縣),所以需要專門設(shè)置一個表格的數(shù)據(jù)來保存

    2024年02月10日
    瀏覽(32)
  • 微信小程序圖片寬高自適應(yīng)

    微信小程序圖片寬高自適應(yīng)

    微信小程序image有默認(rèn)的寬高width:320rpx;height:240rpx;只設(shè)置width:100%是無效的,即使寫了height:100%,依然無效 只要在image標(biāo)簽添加mode=\\\"widthFix\\\"屬性,就可以做到高度自適應(yīng), 以下為效果圖,寬度同理,設(shè)置高度后,將mode=\\\"heightFix\\\"即可 ?

    2024年02月12日
    瀏覽(41)
  • 微信小程序canvas繪制自適應(yīng)圖片,UniApp canvas繪制自適應(yīng)圖片

    ?需求:畫布寬高為686 * 686 的正方形(可以進(jìn)行調(diào)整根據(jù)自身需要來) ? ? ? ? ? ? 當(dāng)圖片寬度大于高度時,對圖片寬度進(jìn)行裁剪 ? ? ? ? ? ? ?當(dāng)圖片高度大于寬度時,對圖片高度進(jìn)行裁剪 ? ? ? ? ? ? ?我是用uniApp進(jìn)行開發(fā)的,如果是小程序原生,直接把“uni” 改為 “

    2024年02月09日
    瀏覽(106)
  • 微信小程序布局固定底部且不隨頁面滑動(帖子評論)

    微信小程序布局固定底部且不隨頁面滑動(帖子評論)

    ?博主介紹: 本人專注于Android/java/數(shù)據(jù)庫/微信小程序技術(shù)領(lǐng)域的開發(fā),以及有好幾年的計算機(jī)畢業(yè)設(shè)計方面的實(shí)戰(zhàn)開發(fā)經(jīng)驗(yàn)和技術(shù)積累;尤其是在安卓(Android)的app的開發(fā)和微信小程序的開發(fā),很是熟悉和了解;本人也是多年的Android開發(fā)人員;希望我發(fā)布的此篇文件可以幫

    2024年04月22日
    瀏覽(58)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包