国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

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

前言

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

Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

本人是做后臺(tái)開(kāi)發(fā)的,由于公司業(yè)務(wù)要求需要將前后臺(tái)模塊進(jìn)行分離,兩年前選擇使用vue-element-admin 項(xiàng)目進(jìn)行前臺(tái)的開(kāi)發(fā),該框架集成了很多功能,特別適合對(duì) Vue 很陌生的新手,公司項(xiàng)目組成員接受程度普遍較高。

在使用過(guò)程中 表格 是必不可少的一個(gè)控件,用于展示數(shù)據(jù),單頁(yè)數(shù)據(jù)量過(guò)多就會(huì)導(dǎo)致瀏覽器自動(dòng)生成右側(cè)滾動(dòng)條。

Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

如果頁(yè)面有頭部信息或查詢按鈕,移動(dòng)滾動(dòng)條后會(huì)遮擋住這些操作和信息內(nèi)容。

Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

Element-UI 中的 el-table 提供了設(shè)置高度的選項(xiàng),在代碼中設(shè)置 height 屬性就可以現(xiàn)在表格的高度,數(shù)據(jù)量過(guò)多也只會(huì)在表格內(nèi)部生成滾動(dòng)條,而不是整個(gè)頁(yè)面生成滾動(dòng)條。

Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

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

Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

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

Vue 自定義指令

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

v-adaptive

新建包名 src/directive/el-table ,創(chuàng)建 adaptive.js 。頁(yè)面縮放的監(jiān)聽(tīng)是使用的 element-ui 中的 resize-event ,將 addResizeListener 和 removeResizeListener 引入進(jìn)來(lái)。自定義指令要用到的鉤子函數(shù):

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

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

接下來(lái),需要將寫(xiě)好的邏輯綁定到 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

在單頁(yè)面使用

指令相關(guān)代碼已經(jīng)寫(xiě)好了,接下來(lái)就是該如何使用了。找到想要設(shè)置表格自適應(yīng)高度的 vue 文件,在 script 標(biāo)簽下引入自定義的指令并綁定。

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

然后找到表格所在的標(biāo)簽添加指令相關(guān)的代碼:

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

全局使用

如果存在多個(gè)頁(yè)面需要設(shè)置自適應(yīng)高度,為了減少使用指令的復(fù)雜度,我們可以在 main.js 中全局引入自定義的指令,上述 script 的內(nèi)容就不需要在每個(gè)頁(yè)面進(jìn)行寫(xiě)入了。

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

結(jié)尾

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

到此這篇關(guān)于Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Vue 自適應(yīng)高度表格內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 手机看片国产精品 | 亚洲国产精品国产自在在线 | 可以看的毛片网站 | 99爱在线视频 | 日韩第一视频 | 一区二区三区免费在线视频 | 亚洲天堂毛片 | 亚洲日本va午夜中文字幕一区 | 国产高清精品久久久久久久 | 久久久久久九九 | 午夜欧美精品久久久久久久久 | 成年人免费小视频 | 日本a级三级三级三级久久 日本a级特黄三级三级三级 | www.av视频在线观看 | 免费视频 久久久 | 国产精品一二区 | 中文国产成人精品久久久 | 久久久久毛片成人精品 | 韩国巨胸女三级视频网 | 欧美性色黄在线视 | 一区二区三区免费视频网站 | 日本一区二区三区四区公司 | 美女视频网站免费播放视 | 美女网站色免费 | 欧美成人第一页 | 亚洲视频免费播放 | 99视频精品| 日韩亚洲一区中文字幕 | 欧美亚洲国产视频 | 国产区一区| 午夜国产精品久久久久 | 国产大学生自拍 | 欧美在线一级毛片视频 | 欧美一区二区三区在线视频 | 成人a级高清视频在线观看 成人a毛片 | 欧美午夜毛片a级在线 | 国产成人高清视频在线观看免费97 | 中文国产日韩欧美视频 | 99视频精品免费99在线 | 日本最色视频 | 欧美精品日日鲁夜夜添 |