案例
1. 获取可视化高度
javascript
luTabsHeight(element) {
let offsetTop = 0; //存储从元素到视口顶部的总偏移量
let currentElement = element; //将传入的元素赋值给currentElement,准备遍历其祖先元素
// 遍历元素的每个祖先元素
while (currentElement) {
offsetTop += currentElement.offsetTop; // 累加每个祖先元素的 offsetTop
if (currentElement.scrollTop) { // 检查当前元素是否是滚动容器(比如 div 有 overflow-y: auto)
offsetTop -= currentElement.scrollTop; // 累加滚动容器的 scrollTop
}
currentElement = currentElement.offsetParent;// 移动到父元素
}
offsetTop += window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; // 还需要考虑页面的滚动(视口滚动)
this.heights=window.innerHeight-offsetTop-105
console.log(window.innerHeight-offsetTop,'高度',this.heights);
},
//window.pageYOffset 获取页面垂直滚动距离的标准方式;对于旧版浏览器,可能需要检查document.documentElement.scrollTop(对于HTML元素)或document.body.scrollTop(对于body元素)
//window.innerHeight 可视窗口高度 - offsetTop 计算出的偏移量,105是我自己页面tabs外面元素的高度
2. 使用内联样式(粗暴)
html
<el-tabs :tab-position="tabPosition"
ref="tabs"
:style="{ '--header-height': heights + 'px' }"
@tab-click="handleClick"
v-model="activeName">
<!-- 其他代码 -->
</el-tabs>
<script>
export default {
data() {
return {
heights : 60, // 动态调整这个值
// 其他数据...
};
},
methods: {
//获取tab 动态高度,给heights动态赋值
luTabsHeight(){}
}
};
</script>
<style scoped lang="scss">
::v-deep .el-tabs--left .el-tabs__header.is-left{
height: var(--header-height);
}
</style>
内联不推荐,大家有推荐的方法不?