第一步:utils目录下创建一个文件为directive,新建auto-height.js文件,

export default {

componentUpdated(el, binding, vnode) {

const ctx = vnode.context;

if (!ctx || typeof ctx[binding.arg] === 'undefined' || ctx.autoHeightResizeListenner) return;

 

ctx.autoHeightResizeListenner = () => {

let top = el.offsetTop;

let cur = el.offsetParent;

while(cur !== null) {

top += cur.offsetTop;

cur = cur.offsetParent;

}

const h = (window.innerHeight - top) + binding.value;

ctx[binding.arg] = Math.max(h, 100 );

};

window.addEventListener('resize', ctx.autoHeightResizeListener, false);

setTimeout(ctx.autoHeightResizeListenner, 50);

},

unbind(el, binding, vnode){

const ctx = vnode.context;

if(ctx && ctx.autoHeightResizeListener) {

window.removeEventListener('resize', ctx.autoHeightResizeListener, false);

ctx.autoHeightResizeListener = null;

}

},

};

第二步:全局配置  在main.js中导入 auto-height.js文件

import autoHeight from './utils/directive/auto-height';

Vue.directive('auto-height',autoHeight)

第三步:组件中需要的标签添加两个属性  v-auto-height:maxHeight = '-10' :max-height="maxHeight"

<el-table   v-auto-height:maxHeight = '-10' :max-height="maxHeight"></el-table>

 

GitHub 加速计划 / eleme / element
15
2
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:2 个月前 )
c345bb45 1 年前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐