当前位置: 首页 > news >正文

uniapp使用createSelectorQuery,boundingClientRect获取宽度和高度不准确的可用的解决方案

场景展示:

uniapp使用createSelectorQuery,boundingClientRect获取宽度和高度不准确的可用的解决方案,正常来说,使用下面的代码是可以正确获得宽高的,但是里面含有图片,在图片没有加载完的情况下,我们可以想像一下,计算出来的结果肯定是不对的。而且我也在网上找了不少的解决方案。大多数是说有padding和margin,再使用getComputedStyle这样的函数。显得都太复杂,经过摸索实验,最终的解决方案比较简单:

  const query = uni.createSelectorQuery().in(this);query.select("#box-bottom").boundingClientRect();query.select("#box-title").boundingClientRect();query.exec(function (res) {var ttheight = 0;for (var i in res) {ttheight += res[i].height;}that.midbox.height = lsktl.ci.windowHeight - ttheight-30;});

如下图,我想要计算box-title和box-bottom的高度,然后再确认中心的可滚动部分,其中头部和底部都有id="box-title"和id="box-bottom"的id的两个盒子。

就是给要计算的宽高的盒子加上:key="key",这样的话,就可以正确得到宽和高了。

代码如下:

  that.kklist.bottom=lsktl.rndstr();that.kklist.title=lsktl.rndstr();that.$nextTick(function () {const query = uni.createSelectorQuery().in(this);query.select("#box-bottom").boundingClientRect();query.select("#box-title").boundingClientRect();query.exec(function (res) {var ttheight = 0;for (var i in res) {ttheight += res[i].height;}that.midbox.height = lsktl.ci.windowHeight - ttheight-30;});});

相关文章:

  • STM32 HAL库 内部传感器驱动实现
  • 写书的三驾马车
  • 回归,git 分支开发操作命令
  • ONLYOFFICE深度解锁系列.2-Excel 跨文件数据整合实战指南-可道云的另一个严重bug
  • Vscode --- LinuxPrereqs │远程主机可能不符合 glibc 和 libstdc++ Vs code 服务器的先决条件
  • STM32 串口中断接收方式笔记:HAL_UART_Receive_IT vs __HAL_UART_ENABLE_IT
  • 用GitHub Actions实现CI/CD
  • 【uniapp】uni.setClipboardData 方法失效 bug 解决方案
  • 阿里云OSS应对DDoS攻击策略
  • TDengine 存储引擎剖析:数据文件与索引设计(二)
  • 告别昂贵语音合成服务!用GPT-SoVITS生成你的个性化AI语音
  • 【eNSP实验】OSPF单区域配置
  • 高效培训,借助课程编辑器塑造卓越团队​
  • BH1750光照传感器---附代码
  • 2025年4月16日华为笔试第二题200分
  • js逆向分享
  • NAT、代理服务、内网穿透
  • AI 推理与训练优化的核心理论体系建构及关键技术分析框架
  • Leetcode - 周赛445
  • ServletRequestAttributeListener 的用法笔记250417
  • 事关中国,“英伟达正游说美国政府”
  • 南宁海关辟谣网传“查获600公斤稀土材料”:实为焊锡膏
  • 外媒:哈马斯一名高级指挥官尸体被发现,系辛瓦尔弟弟
  • 多图|多款先进预警机亮相雷达展,专家:中国预警机已达世界先进水平
  • 打造信息消费新场景、新体验,上海信息消费节开幕
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:没太多包袱,很多事都能从零开始