Uniapp自动调整元素高度

获取设备的像素

如果你想让元素的高度相对于整个屏幕的高度占用一定的比例,可以通过获取屏幕的高度,然后计算出你想要的比例来设置元素的高度。以下是如何实现的示例:

vue 复制代码
<script setup>
import { ref, onMounted } from 'vue';

// 定义一个响应式变量来存储计算后的高度
const contextBoxHeight = ref('auto');

onMounted(() => {
    // 获取系统信息
    uni.getSystemInfo({
        success: function (res) {
            // 获取屏幕高度
            const screenHeight = res.windowHeight;
            console.log('屏幕高度:', screenHeight);

            // 计算调整后的高度,假设要占用屏幕高度的70%
            const adjustedHeight = screenHeight * 0.7;

            // 使用响应式变量来设置高度
            contextBoxHeight.value = `${adjustedHeight}px`;
        }
    });
});
</script>

<template>
    <view class="contextBox" :style="{ height: contextBoxHeight }">
        <!-- 其他内容 -->
    </view>
</template>

<style scoped>
.contextBox {
    position: relative;
    width: 100%;
    border: 1px solid red;
    overflow-x: hidden;
    overflow-y: hidden;
}
</style>

说明:

  • uni.getSystemInfo: 用于获取设备的系统信息,包括屏幕高度。
  • screenHeight * 0.7 : 计算出contextBox应该占用的高度比例(这里假设为70%)。
  • contextBoxHeight.value = ${adjustedHeight}px`` : 使用响应式变量来动态设置contextBox的高度。

这种方法确保contextBox的高度是相对于整个屏幕的高度,并且在不同设备上都能保持一致的比例。

获取元素高度

在uni-app中,要获取一个元素的高度,可以使用uni.createSelectorQuery。这个API允许你在App、小程序和H5中获取元素的布局信息。以下是一个示例,展示如何获取元素的高度:

vue 复制代码
<template>
    <view class="contextBox">
        <!-- 其他内容 -->
    </view>
</template>

<script setup>
import { ref, onMounted } from 'vue';

// 定义一个响应式变量来存储元素的高度
const elementHeight = ref(0);

onMounted(() => {
    // 创建选择器查询实例
    const query = uni.createSelectorQuery().in(this);

    // 选择要获取高度的元素
    query.select('.contextBox').boundingClientRect(data => {
        if (data) {
            elementHeight.value = data.height;
            console.log('元素高度:', elementHeight.value);
        }
    }).exec();
});
</script>

<style scoped>
.contextBox {
    position: relative;
    width: 100%;
    border: 1px solid red;
    overflow-x: hidden;
    overflow-y: hidden;
}
</style>

说明:

  • uni.createSelectorQuery().in(this): 创建一个选择器查询实例,并指定在当前组件实例中进行查询。
  • .select('.contextBox') : 选择要查询的元素,.contextBox是元素的类名。
  • .boundingClientRect(): 获取元素的布局位置信息,包括高度。
  • .exec(): 执行查询。

这种方法在uni-app中是兼容的,适用于H5、小程序和App等多端环境。确保在onMounted中使用,以便在DOM加载完成后进行查询。

相关推荐
禁止摆烂_才浅12 分钟前
JavaScript 类型判断:instanceof 与 constructor 原理深度解析
前端·javascript·面试
gezg21 分钟前
DeepSeek Harness 插件:Excel 拖进输入框,AI 自己去读文件
前端·ai编程
Asize25 分钟前
HTTP 明明无状态,登录态怎么就保住了——React + Zustand + JWT 鉴权全流程拆解
前端·javascript
两只羊ovo32 分钟前
MCP:AI 界的 USB-C,把模型和世界「插」起来
前端
Darling噜啦啦36 分钟前
JWT 登录鉴权全链路:从 Zustand 状态管理到 Axios 拦截器,彻底搞懂前端鉴权工程
前端
可涵不会debug39 分钟前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
Csvn40 分钟前
😱 React `<StrictMode>`:为什么 useEffect 被调用了两次?别慌,这是特性不是 bug
前端
Asize44 分钟前
2 道大厂面试题:TS 工具类型我懂了,CSS 3 列布局把我问住了
前端·css·typescript
胡萝卜术1 小时前
从"氛围编程"到规范驱动:两次创造如何让 AI 协作从碰运气变成工程流水线
前端·面试·github
Imchendiana1 小时前
《狂人日记NO.11》— 给 AI 装一本"项目说明书":我把"自己"蒸馏成了一个编码知识库Skill
前端·ai编程