欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue動態(tài)設(shè)置el-table操作列的寬度自適應(yīng)

 更新時間:2023年07月20日 17:06:09   作者:深海藍山  
這篇文章主要給大家介紹了關(guān)于Vue如何動態(tài)設(shè)置el-table操作列的寬度自適應(yīng),很多頁面都需要用到表格組件el-table,如果沒有給el-table-column指定寬度,默認情況下會平均分配給剩余的列,需要的朋友可以參考下

一、問題

用el-table組件開發(fā)時,對于表格的操作列的自適應(yīng)寬度是一個問題,如果不設(shè)置,操作按鈕多時會有換行問題。如果設(shè)置最小寬度或?qū)挾葧r,又會出現(xiàn)當(dāng)條件不滿足時,按鈕顯示的少,但操作列的寬度太寬,顯示多余的空白。尤其對于字段較多,操作列固定情況下,現(xiàn)得特別浪費空間。

寬度不足情況

寬度充足但條件不足情況

期望情況

操作列可以根據(jù)按鈕情況自適應(yīng)寬度,按鈕少時寬度變小,按鈕多時自動增加寬度。

二、解決方案

網(wǎng)上查了一下對列內(nèi)容的自適應(yīng)的方案較多,但對操作列的自適應(yīng)卻沒有找到相關(guān)的方案。不過按照內(nèi)容自適應(yīng)的方案的原理,本人實現(xiàn)了一下,發(fā)現(xiàn)可以解決。

思路

通過CSS的 white-space: nowrap; display: inline-block設(shè)置內(nèi)容不換行,然后計算div的寬度來重新設(shè)置列頭屬性,
依賴屬性:

  • CSS:white-space: nowrap; display: inline-block
  • Table-column Attributes:render-header:列標題 Label 區(qū)域渲染使用的 Function

代碼示例

<template>
  <div>
    <el-table :data="tableData" style="width: 100%" :border="true" fit>
      <el-table-column type="index" width="50" label="No" fixed> </el-table-column>
      <el-table-column prop="date" label="日期" width="150" fixed> </el-table-column>
      <el-table-column prop="name" label="姓名" width="120"> </el-table-column>
      <el-table-column prop="province" label="省份" width="120"> </el-table-column>
      <el-table-column prop="address" label="地址" minWidth="260"> </el-table-column>
      <el-table-column prop="zip" label="郵編" minWidth="120"> </el-table-column>
      <el-table-column label="操作" fixed="right" :render-header="renderHeader">
        <template slot-scope="scope">
          <div class="optionDiv" style="white-space: nowrap; display: inline-block">
            <el-button type="text" size="small"> 新增 </el-button>
            <el-button type="text" size="small"> 編輯 </el-button>
            <el-button v-if="scope.row.type == 2 || scope.row.type == 3" type="text" size="small"> 移除 </el-button>
            <el-button v-if="scope.row.type == 2 || scope.row.type == 3" type="text" size="small"> 詳情 </el-button>
            <el-button v-if="scope.row.type == 3 || scope.row.type == 3" type="text" size="small"> 下發(fā) </el-button>
          </div>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        {
          date: '2016-05-03',
          name: '王小虎',
          province: '上海',
          address: '上海市普陀區(qū)金沙江路 1518 弄',
          zip: 200333,
          type: 1
        },
        {
          date: '2016-05-02',
          name: '王小虎',
          province: '上海',
          address: '上海市普陀區(qū)金沙江路 1518 弄',
          zip: 200333,
          type: 2
        },
        {
          date: '2016-05-02',
          name: '王小虎',
          province: '上海',
          address: '上海市普陀區(qū)金沙江路 1518 弄',
          zip: 200333,
          type: 3
        }
      ]
    };
  },
  methods: {
    // 表頭部重新渲染
    renderHeader(h, { column, $index }) {
      // 獲取操作按鈕組的元素
      const opts = document.getElementsByClassName('optionDiv');
      let widthArr = [];
      // 取操作組的最大寬度
      Array.prototype.forEach.call(opts, function (item) {
        if (item.innerText) {
          widthArr.push(item.offsetWidth);
        }
      });
      // 重新設(shè)置列標題及寬度屬性
      if (widthArr.length > 0) {
        column.width = Math.max(...widthArr) + 24;
        return h('span', column.label);
      } else {
        column.width = 0;
        return h('span', column.label);
      }
    }
  }
};
</script>

最終效果

分別為兩列、三列和四列操作的展示效果

總結(jié)

到此這篇關(guān)于Vue動態(tài)設(shè)置el-table操作列的寬度自適應(yīng)的文章就介紹到這了,更多相關(guān)el-table列寬度自適應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3使用xgPalyer實現(xiàn)截圖功能的方法詳解

    vue3使用xgPalyer實現(xiàn)截圖功能的方法詳解

    這篇文章主要為大家詳細介紹了如何在vue3中使用xgPalyer截圖功能,以及自定義插件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 手寫實現(xiàn)Vue計算屬性

    手寫實現(xiàn)Vue計算屬性

    這篇文章主要介紹了手寫實現(xiàn)Vue計算屬性,本文從一個簡單的計算屬性例子開始,一步步實現(xiàn)了計算屬性。并且針對這個例子,詳細分析了頁面渲染時的整個代碼執(zhí)行邏輯,需要的小伙伴可以參考一下
    2022-08-08
  • vue如何使用外部特殊字體的操作

    vue如何使用外部特殊字體的操作

    這篇文章主要介紹了vue如何使用外部特殊字體的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue3?process.env.XXX環(huán)境變量不生效的解決方法

    vue3?process.env.XXX環(huán)境變量不生效的解決方法

    這篇文章主要給大家介紹了關(guān)于vue3?process.env.XXX環(huán)境變量不生效的解決方法,通過文中介紹的方法可以很方便的解決遇到的問題,對大家學(xué)習(xí)或者使用vue3具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Vue過濾器filters如何使用

    Vue過濾器filters如何使用

    Vue過濾器filters用于一些常見的文本格式化,通過過濾器可以進行處理成自己想要展示出來的格式,由“管道”符號指示,本文給大家介紹Vue過濾器filters使用方式,感興趣的朋友一起看看吧
    2023-10-10
  • 從0搭建Vue3組件庫如何使用?glup?打包組件庫并實現(xiàn)按需加載

    從0搭建Vue3組件庫如何使用?glup?打包組件庫并實現(xiàn)按需加載

    這篇文章主要介紹了從0搭建Vue3組件庫如何使用?glup?打包組件庫并實現(xiàn)按需加載,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Vue3中Vuex的詳細使用方法

    Vue3中Vuex的詳細使用方法

    在vue3.x中vuex調(diào)取值在html代碼里可以直接使用vue2.x的方法,但是在js里與vue2.x就有了那么一丟丟的不同,下面這篇文章主要給大家介紹了關(guān)于Vue3中Vuex詳細使用的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • vue?動態(tài)添加el-input的實現(xiàn)邏輯

    vue?動態(tài)添加el-input的實現(xiàn)邏輯

    這篇文章主要介紹了vue?動態(tài)添加el-input的實現(xiàn)代碼,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • vue如何使用bable將es6轉(zhuǎn)譯為es5

    vue如何使用bable將es6轉(zhuǎn)譯為es5

    這篇文章主要介紹了vue如何使用bable將es6轉(zhuǎn)譯為es5問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue設(shè)置必填項和判斷必填項是否填入的彈窗提示

    vue設(shè)置必填項和判斷必填項是否填入的彈窗提示

    表格判斷在很多項目中都用得到,本文主要介紹了vue設(shè)置必填項和判斷必填項是否填入的彈窗提示,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11

最新評論