动态获取div的高度 随着窗口变化而变化

本文介绍使用jQuery和原生JavaScript实现Div元素高度自动适应浏览器窗口大小的方法,包括窗口尺寸变化时实时更新Div高度的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、jquery方法

<script> 
    var winHeight = $(window).height(); 
    $("#show").css("height",winHeight); 
    $(window).resize(function() { 
        winHeight = $(window).height(); 
        $("#show").css("height",winHeight); 
    });
</script>

2、js方法

<div id="test" style=" background: #ccc"></div>
 
<script type="text/javascript">
autodivheight();
function autodivheight(){ //函数:获取尺寸
    //获取浏览器窗口高度
    var winHeight=0;
    if (window.innerHeight){
        winHeight = window.innerHeight;
    }
    else if ((document.body) && (document.body.clientHeight)){
        winHeight = document.body.clientHeight;
    }
    //通过深入Document内部对body进行检测,获取浏览器窗口高度
    if (document.documentElement && document.documentElement.clientHeight){
        winHeight = document.documentElement.clientHeight;
    }
    //DIV高度为浏览器窗口的高度
    //document.getElementById("test").style.height= winHeight +"px";
    //DIV高度为浏览器窗口高度的一半
    document.getElementById("test").style.height= winHeight/2 +"px";
}
window.onresize=autodivheight; //浏览器窗口发生变化时同时变化DIV高度
</script>
### Vue2 中实现页面高度动态调整功能 在 Vue2 中实现页面高度根据窗口大小动态调整的功能,可以通过监听 `window` 的 `resize` 事件并实时更新 DOM 元素的高度来完成。以下是具体的方法: #### 方法一:手动绑定 `onresize` 事件 通过 JavaScript 原生方式监听窗口变化,并将计算后的高度赋值给目标容器。 核心逻辑如下: 1. 使用 `document.documentElement.clientHeight` 获取当前视口高度。 2. 将该高度应用到指定的 CSS 属性(如 `height` 或者 `min-height`)上。 3. 利用 Vue 数据驱动的方式,在数据模型中存储高度值,并将其绑定至模板中的样式属性。 ```javascript export default { data() { return { windowHeight: document.documentElement.clientHeight, // 初始化窗口高度 }; }, mounted() { window.addEventListener('resize', this.handleResize); // 添加 resize 监听器 }, beforeDestroy() { window.removeEventListener('resize', this.handleResize); // 移除监听器防止内存泄漏 }, methods: { handleResize() { this.windowHeight = document.documentElement.clientHeight; // 更新窗口高度 } } }; ``` 在模板部分,可以这样绑定高度: ```html <div :style="{ height: `${this.windowHeight}px` }"> <!-- 页面内容 --> </div> ``` 此方法利用了相对单位以及动态调整的思想[^1],能够确保当浏览器窗口发生变化时,页面布局随之适配。 #### 方法二:借助第三方库 Element Resize Detector (ERD) 对于更复杂的场景,比如需要监控某个特定子元素而非整个窗口变化,则推荐引入专门用于检测 DOM 节点尺寸变动的工具——Element Resize Detector 。安装命令为 `npm install element-resize-detector --save`[^2]。 下面是一个简单的案例展示如何操作 ERD 来跟踪某 div 高度改变的情况: ```javascript import erd from 'element-resize-detector'; export default { data() { return { targetDivHeight: null, }; }, mounted() { const er = erd(); let observedElm = this.$refs.targetDiv; if(observedElm){ er.listenTo(observedElm,(elm)=>{ this.targetDivHeight= elm.offsetHeight+"px"; }); } }, } ``` 对应HTML结构应包含 ref 参考以便定位节点: ```html <div ref="targetDiv" :style="{ height: targetDivHeight}"> <!-- 子级内容 --> </div> ``` 以上两种方案均适用于解决 vue 组件内部因外部环境影响而导致显示错乱的问题;其中前者侧重全局控制,后者则更加灵活精准针对局部区域处理[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无极的移动代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值