前端动态计算高度

/**
 * @description: 动态计算表格高度
 * @return {*}
 */
onresize() {
  /* 表格最大高度=页面高度减去除表格外的高度-上下间距dialogMargin高度 */
  // 获取屏幕高度
  const { innerHeight } = window;
  // 获取类名或者id名为estimate-dialog的dom对象
  const dialog = document.querySelector('.estimate-dialog');
  const dialogWrapper = document.querySelector('.estimate-dialog-wrapper');
  const dialogStyles = window.getComputedStyle(dialogWrapper);
  // 防止该组件影响需求详情组件显示
  if (!dialogWrapper || dialogStyles.display === 'none') return;
  const header = dialog.querySelector('.el-dialog__header');
  const subTitle = dialog.querySelector('.sub_title');
  const padding = 30;
  const { showComment, appendBtn } = this.$refs;
  const headerHeight = header.clientHeight;
  const subTitleHeight = subTitle.clientHeight;
  const commentHeight = showComment.clientHeight;
  const btnHeight = appendBtn.clientHeight;
  const dialogMarin = 30;
  const height = XEUtils.sum([padding, headerHeight, subTitleHeight, commentHeight, btnHeight, dialogMarin]);
  this.tableMaxHeight = innerHeight - height;
},

mounted () {
//初始化表格
this.initializationTabColumn()
// 计算表格高度
window.onresize = (event) => {
this.onresize()
}
// 计算表格高度
this.onresize()
},

### 实现 Vue 中基于条件动态计算样式的高度Vue 应用程序中,可以通过 `:style` 绑定机制来动态调整元素的高度。这种做法不仅限于静态值,还可以利用 JavaScript 表达式或方法返回的结果作为样式属性的值。 对于简单的场景,可以直接在模板内编写表达式: ```html <div :style="{ height: computedHeight + 'px' }">Hello Vue!</div> ``` 当逻辑变得复杂时,推荐将计算过程移到组件的方法或计算属性里处理。下面是一个完整的例子展示如何依据特定条件动态设定 div 的高度[^2]。 #### 使用数据属性和计算属性组合的方式 ```javascript export default { data() { return { baseHeight: 100, multiplier: 2 }; }, computed: { computedHeight() { // 基础高度乘以倍数因子得到最终显示的高度 return this.baseHeight * this.multiplier; } } }; ``` 此代码片段展示了怎样创建一个名为 `computedHeight` 的计算属性,该属性会根据 `baseHeight` 和 `multiplier` 数据项的变化自动更新,并将其应用于目标元素上。 为了使高度能够响应视窗大小改变而实时调整,在 mounted 生命周期钩子函数中监听窗口尺寸变化事件并相应地修改影响高度的数据字段;同时记得清理不再需要的事件监听器以防内存泄漏[^4]。 ```javascript mounted() { window.addEventListener('resize', this.updateHeight); }, beforeDestroy() { window.removeEventListener('resize', this.updateHeight); }, methods: { updateHeight() { const windowHeight = window.innerHeight; // 更新用于控制高度的数据成员 this.multiplier = Math.min(windowHeight / 100, 5); // 设置最大不超过五倍的基础高度 } } ``` 上述脚本实现了每当浏览器窗口宽度发生变化时重新评估并设置新的高度值的功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值