日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:148日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲深深色噜噜狠狠爱网站 | 国产精品一级| 国产美女一区| 色爱综合av| 麻豆视频在线观看免费网站黄| 国产精品亚洲四区在线观看 | 在线成人直播| 亚洲国产欧美日本视频| 日韩不卡一区| 日韩久久一区二区三区| 视频福利一区| 亚洲国产专区校园欧美| 欧美亚洲国产激情| 秋霞影视一区二区三区| 亚洲成a人片| 日韩精品电影| 亚洲成人av观看| 激情五月综合网| 国产午夜久久| 日韩激情av在线| 国产精品久久久久久av公交车 | 蜜桃久久久久久久| 亚洲精品一二| 国产精品密蕾丝视频下载| 国产精品久久久久久久久久齐齐| 欧美日本三区| 久久69成人| 麻豆成全视频免费观看在线看| 捆绑调教日本一区二区三区| 99免费精品| 国产视频一区免费看| 亚洲综合国产| 日韩精品久久久久久久软件91| 久久丁香四色| 成人一区不卡| 日本а中文在线天堂| 国产99亚洲| 伊人www22综合色| 国产黄色精品| 久久精品成人| 亚洲天堂av资源在线观看| 青青草精品视频| 成人精品高清在线视频| 美女亚洲一区| 日本成人在线不卡视频| 欧美国产专区| 婷婷精品进入| 亚洲+小说+欧美+激情+另类| 国产探花在线精品一区二区| 国产精品xx| 欧美另类专区| 青青国产91久久久久久| 福利精品在线| 日韩精品一级中文字幕精品视频免费观看| 欧美欧美黄在线二区| 鲁鲁在线中文| 中文字幕日韩高清在线| 精品日产乱码久久久久久仙踪林| 视频小说一区二区| 日韩欧美中文在线观看| 成人在线黄色| 每日更新成人在线视频| 久久av免费看| 精品欧美激情在线观看| 日本午夜精品视频在线观看| 精品国产亚洲一区二区三区| 欧美日韩国产精品一区二区亚洲| 日韩在线成人| 成人福利视频| 视频一区中文字幕精品| 国产网站在线| 亚洲精品一二| 电影亚洲精品噜噜在线观看| 亚洲精品视频一二三区| av高清不卡| 日韩精品视频在线看| 成人羞羞视频在线看网址| 日韩国产精品久久久久久亚洲| 国产精品高颜值在线观看| 亚洲青青久久| 91视频一区| 亚洲日本免费电影| 免费av一区二区三区四区| 欧美日韩一区二区高清| 欧美特黄一级| 色一区二区三区| 日韩国产欧美在线播放| 午夜国产一区二区| 精品精品久久| 亚洲欧美日本国产| 一区二区三区视频免费观看| 美女毛片一区二区三区四区最新中文字幕亚洲 | 你懂的网址国产 欧美| 在线综合视频| 92国产精品| 欧美国产免费| 日韩久久99| 午夜国产精品视频| 激情久久中文字幕| 午夜亚洲精品| 丝袜脚交一区二区| 日本国产欧美| 亚洲黄色网址| 国产精品99久久免费| 日本成人精品| 伊人久久亚洲影院| 亚洲黄色中文字幕| 国产精品白丝久久av网站| 日韩中文欧美在线| 日本vs亚洲vs韩国一区三区二区| 欧美日韩四区| 久久免费黄色| 亚洲国产成人二区| 国产在线不卡一区二区三区| 久久狠狠亚洲综合| 爽爽淫人综合网网站| 99综合视频| 久久激情一区| 国产精品久久久免费| 国产欧美欧美| 日本视频中文字幕一区二区三区| 一区二区三区四区在线观看国产日韩| 午夜日韩在线| 欧美激情视频一区二区三区免费| 亚洲免费成人av在线| av中文字幕在线观看第一页 | 久久不见久久见中文字幕免费| 夜鲁夜鲁夜鲁视频在线播放| 模特精品在线| 欧美1区2区3| 欧美日韩亚洲一区| 精品国产精品久久一区免费式 | 国产黄色一区| 男女性色大片免费观看一区二区 | 国产国产精品| 蜜臀久久久久久久| 国产欧美自拍一区| 成人午夜国产| 精品三区视频| 亚洲免费一区三区| 中文视频一区| 日韩精品一区二区三区中文字幕| 精品三级在线| 麻豆91精品视频| 国产精选久久| 国产精品日韩久久久| 日韩精品成人| 日本在线成人| 91精品国产一区二区在线观看| 国产欧美日韩精品一区二区免费| 日欧美一区二区| 日本va欧美va瓶| 国产精品成人**免费视频| 国产高清不卡| 亚洲免费网址| 欧美日韩一区二区三区四区在线观看| 国产精品色婷婷在线观看| 精品国产亚洲一区二区三区在线| 人人精品亚洲| 三级亚洲高清视频| 国产欧美久久一区二区三区| 国产第一亚洲| 午夜欧美精品久久久久久久| 亚洲精品日韩久久| 国产精品毛片aⅴ一区二区三区| 国产精品mm| 国产一区二区色噜噜| 香蕉精品视频在线观看| 日韩中文字幕亚洲一区二区va在线| 老司机精品久久| 91亚洲精品视频在线观看| 久久久久伊人| 欧美日韩在线二区| 欧美日韩国产一区二区三区不卡 | 另类欧美日韩国产在线| 91成人福利| 国产一区二区三区四区| 黄色欧美日韩| 欧美日韩国产一区精品一区| 日本精品一区二区三区在线观看视频| 911精品国产| 日韩国产综合| 国产专区一区| 日韩欧美四区| 乱一区二区av| 先锋亚洲精品| 在线视频亚洲欧美中文| 欧美一级网址| 性欧美videohd高精| 激情91久久| 国产极品一区| 亚洲天堂1区| 欧美日韩亚洲三区| 国产精品igao视频网网址不卡日韩| 国产亚洲一区二区手机在线观看 | 奇米狠狠一区二区三区| 国产一区一一区高清不卡| 亚洲综合国产| 国产日产高清欧美一区二区三区| 久久精品二区三区|