uniapp 动态获取元素高度

vue页面获取元素,

app端推荐(这个也兼容H5)

//设置mescroll的高度
				setTimeout(()=>{
					const  query = uni.createSelectorQuery().in(this)
					query.select('.plane-once').boundingClientRect(data=>{
						console.log('.plane-once',data);
						uni.getSystemInfo({
							success:(res) => {
                                //当前组件的高 data.height 
								let uselyHeight = Math.ceil((data.height / res.windowHeight) * 100 ) ;
								this.listHeight = 100 - uselyHeight;
								this.listHeight = this.listHeight + '%';
								console.log('listHeight',this.listHeight);
								//重新渲染组件  动态设置height 需要重新渲染
								this.scrollShow = false;
								this.$nextTick(() => {
									this.scrollShow = true;
								})
							}
						})
					}).exec()
				},400)

 H5使用 : this.$refs.$el

nvue页面获取dom元素高度

H5端使用:

1.this.$refs.name

app端使用:

这种方式 ,对于内部子元素多的情况下,无法很好的获取

2.使用weex

const dom = weex.requireModule('dom');
					dom.getComponentRect(this.$refs.leftMenu,option => {
						console.log(option.size.height);
						this.rightMenuHeight = option.size.height
					})

### 实现 UniApp 中动态设置元素高度的方法 在 UniApp 开发过程中,为了使应用能够更好地适配不同的设备屏幕尺寸,通常需要动态调整页面上某些元素高度。一种常见的方式是在 `onLoad` 生命周期函数中通过 JavaScript 获取当前窗口的有效高度并据此计算目标组件所需的高度。 对于滚动列表这类场景而言,在页面加载时可以通过调用 `uni.getSystemInfoSync()` 方法来同步获得系统的相关信息,其中包括了可视区域的高度 (`windowHeight`) 。之后可以根据实际布局情况扣除掉不需要参与自动伸缩的部分(例如顶部导航栏或其他固定位置的内容),从而得到剩余可用于展示列表项的空间大小[^1]: ```javascript export default { data() { return { h: 0 // 存储最终计算出来的高度值 }; }, onLoad() { let windowHeight = uni.getSystemInfoSync().windowHeight; let otherElementsHeight = uni.upx2px(810); this.h = windowHeight - otherElementsHeight; console.log(`Element height set to ${this.h}px`); } } ``` 另外还有一种方法适用于已经渲染完成后的 DOM 节点,即利用 Weex 提供的 API 来异步查询指定节点的实际尺寸。这里可以借助于 `$refs` 属性访问特定组件实例,并配合 `getComponentRect` 函数读取其边界矩形数据,进而更新状态变量以反映最新的测量结果[^2]: ```javascript <template> <view ref="leftMenu"></view> <!-- 假设这是要检测高度变化的目标 --> </template> <script> import weex from 'weex' export default { mounted () { const dom = weex.requireModule('dom') dom.getComponentRect(this.$refs.leftMenu, (option) => { this.rightMenuHeight = option.size.height console.log(`Detected element height as ${this.rightMenuHeight}px`) }) } } </script> ``` 这两种方式各有优劣,前者适合用于初始化阶段的一次性设定;而后者则更适合处理那些可能随时间推移发生改变的情况下的实时响应需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值