<template> <el-scrollbar :id="contentRef" class="c-content-scrollbar" style="width: 100%;"> <slot></slot> </el-scrollbar> </template> <script> export default { props: { height: { type: Number, require: false, default: function() { return this.$route.path.startsWith('/display/') ? 100 : 240 } } }, data() { return { clientHeight: '', contentRef: 'contentRef' + Math.floor(Math.random() * 100), } }, mounted() { this.clientHeight = `${document.documentElement.clientHeight}` this.changeFixed() this.handleResizeBind = this.handleResize.bind(this, this.contentRef, this.height) window.addEventListener('resize', this.handleResizeBind) }, methods: { changeFixed() { let content = document.getElementById(this.contentRef) if (content) { content.style.height = this.clientHeight - this.height + 'px' } }, handleResize: (contentRef, height) => { let content = document.getElementById(contentRef) if(!content){ //切换顶部tab,会隐藏元素,所以有可能找不到 return } let clientHeight = `${document.documentElement.clientHeight}` content.style.height = clientHeight - height + 'px' } }, destroyed: function () { window.removeEventListener('resize', this.handleResizeBind) } } </script> <style> .c-content-scrollbar .el-scrollbar__wrap{ overflow-y: auto; overflow-x: hidden; } </style>