You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript获取div高度并为另一div设置calc(100vh - 该高度)样式

解决JavaScript动态设置高度问题

问题原因

你的代码无法运行主要有两个问题:

  • 字符串与数字的运算错误:'100vh' - offsetHeight 会将字符串和数字做减法运算,结果是NaN,无法作为有效的CSS值
  • 缺少单位:offsetHeight返回的是纯数字的像素值,需要加上px单位才能和100vh进行calc计算

修正后的代码

// 获取header的动态高度
const header = document.getElementById('header');
const headerHeight = header.offsetHeight;
// 为banner设置计算后的高度
const banner = document.getElementById('banner');
banner.style.height = `calc(100vh - ${headerHeight}px)`;

优化方案(支持窗口 resize 动态更新)

如果header高度会随窗口大小变化,或者页面有响应式需求,可以监听窗口resize事件实时更新高度:

function updateBannerHeight() {
  const header = document.getElementById('header');
  const headerHeight = header.offsetHeight;
  const banner = document.getElementById('banner');
  banner.style.height = `calc(100vh - ${headerHeight}px)`;
}

// 页面加载时初始化
updateBannerHeight();
// 窗口大小改变时重新计算
window.addEventListener('resize', updateBannerHeight);

内容的提问来源于stack exchange,提问作者Mihailo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:30:49