电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue 自適應高度表格的實現方法

瀏覽:27日期:2023-01-21 09:44:55

前言

示例版本為 Element-ui 2.13.1 + Vue 2.6.11

Vue 自適應高度表格的實現方法

本人是做后臺開發的,由于公司業務要求需要將前后臺模塊進行分離,兩年前選擇使用vue-element-admin 項目進行前臺的開發,該框架集成了很多功能,特別適合對 Vue 很陌生的新手,公司項目組成員接受程度普遍較高。

在使用過程中 表格 是必不可少的一個控件,用于展示數據,單頁數據量過多就會導致瀏覽器自動生成右側滾動條。

Vue 自適應高度表格的實現方法

如果頁面有頭部信息或查詢按鈕,移動滾動條后會遮擋住這些操作和信息內容。

Vue 自適應高度表格的實現方法

Element-UI 中的 el-table 提供了設置高度的選項,在代碼中設置 height 屬性就可以現在表格的高度,數據量過多也只會在表格內部生成滾動條,而不是整個頁面生成滾動條。

Vue 自適應高度表格的實現方法

但是這個高度需要固定的數值,不同的分辨率或者縮放后的瀏覽器使用固定高度后,不能滿足只在 el-table 內部生成滾動條的條件。

Vue 自適應高度表格的實現方法

想要滿足上述條件就需要使用 v-adaptive 指令了。

Vue 自定義指令

你可能會好奇 v-adaptive 是在哪里來的?它是自定義的指令,設置表格高度需要對普通 DOM 元素進行底層操作。Vue 除了核心功能默認內置的指令 ( v-model 和 v-show ),也允許注冊自定義指令,相關 Api 可以查看 官方文檔 。

v-adaptive

新建包名 src/directive/el-table ,創建 adaptive.js 。頁面縮放的監聽是使用的 element-ui 中的 resize-event ,將 addResizeListener 和 removeResizeListener 引入進來。自定義指令要用到的鉤子函數:

bind:只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。 inserted:被綁定元素插入父節點時調用 (僅保證父節點存在,但不一定已被插入文檔中)。 unbind:只調用一次,指令與元素解綁時調用。

import { addResizeListener, removeResizeListener } from ’element-ui/src/utils/resize-event’ // 設置表格高度 const doResize = async(el, binding, vnode) => { // 獲取表格Dom對象 const { componentInstance: $table } = await vnode // 獲取調用傳遞過來的數據 const { value } = binding if (!$table.height) { throw new Error(`el-$table must set the height. Such as height=’100px’`) } // 獲取距底部距離(用于展示頁碼等信息) const bottomOffset = (value && value.bottomOffset) || 30 if (!$table) return // 計算列表高度并設置 const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset $table.layout.setHeight(height) $table.doLayout()}export default { // 初始化設置 bind(el, binding, vnode) { // 設置resize監聽方法 el.resizeListener = async() => { await doResize(el, binding, vnode) }// 綁定監聽方法到addResizeListener addResizeListener(window.document.body, el.resizeListener) }, // 綁定默認高度 async inserted(el, binding, vnode) { await doResize(el, binding, vnode) }, // 銷毀時設置 unbind(el) { // 移除resize監聽 removeResizeListener(el, el.resizeListener) }}

接下來,需要將寫好的邏輯綁定到 Vue 中,在同一目錄下新建 index.js :

import adaptive from ’./adaptive’const install = function(Vue) { // 綁定v-adaptive指令 Vue.directive(’adaptive’, adaptive)}if (window.Vue) { window[’adaptive’] = adaptive // eslint-disable-next-line no-undef Vue.use(install)}adaptive.install = installexport default adaptive

在單頁面使用

指令相關代碼已經寫好了,接下來就是該如何使用了。找到想要設置表格自適應高度的 vue 文件,在 script 標簽下引入自定義的指令并綁定。

import adaptive from ’@/directive/el-table’export default { name:’Test’, directives: { adaptive }, ... ...}

然后找到表格所在的標簽添加指令相關的代碼:

<el-table ref='table' // 自定義指令,bottomOffset 代表距離底部的距離 v-adaptive='{bottomOffset: 85}' // 高度屬性,100無具體意義,僅為初始值,不可省略 height='100px' > ... ... </table>

全局使用

如果存在多個頁面需要設置自適應高度,為了減少使用指令的復雜度,我們可以在 main.js 中全局引入自定義的指令,上述 script 的內容就不需要在每個頁面進行寫入了。

import adaptive from ’./directive/el-table’Vue.use(adaptive)

結尾

源碼放在 GitHub 上了,希望可以幫助到你。

到此這篇關于Vue 自適應高度表格的實現方法的文章就介紹到這了,更多相關Vue 自適應高度表格內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 中矗模型-深圳中矗模型设计有限公司 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 消防泵-XBD单级卧式/立式消防泵-上海塑泉泵阀(集团)有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 探鸣起名网-品牌起名-英文商标起名-公司命名-企业取名包满意 | 新车测评网_网罗汽车评测资讯_汽车评测门户报道| Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 大数据营销公司_舆情监测软件_上海SEO公司-文军营销官网 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 鑫达滑石-辽宁鑫达滑石集团 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 昊宇水工|河北昊宇水工机械工程有限公司| 高中学习网-高考生信息学习必备平台| 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 雪花制冰机(实验室雪花制冰机)百科| 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 光栅尺厂家_数显表维修-苏州泽升精密机械| 精密光学实验平台-红外粉末压片机模具-天津博君 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 |