HarmonyOS鸿蒙Next中【快应用】通用方法getBoundingClientRect的使用

HarmonyOS鸿蒙Next中【快应用】通用方法getBoundingClientRect的使用 【关键词】

快应用开发、通用方法、getBoundingClientRect

【背景】

快应用通用方法中提供了getBoundingClientRect方法来获取当前组件的布局位置,之前处理的快应用问题中,有个cp却把这种场景误解为可以获取到文字的宽度和高度,这是不合理的,当前快应用并没有提供可以获取文字高度和宽度的方法。那么今天我们就来具体学习一下getBoundingClientRect的使用。

【介绍】

  1. 调用方法:this.$element('xxx').getBoundingClientRect(Object object)

  2. 参数说明:

cke_565.png

  1. 回调成功返回值说明:

cke_1362.png

  1. getBoundingClientRect调用的注意事项:
  • popup、option、span、picker 等组件不支持调用此方法。
  • 由于在onInit方法中组件还没有创建,所以在onInit方法中调用此方法会出现js错误。
  • 由于在onReady方法中组件还没有渲染完成,所以在onReady方法中调用此方法获取结果都为0。请勿在onReady之前和onReady中调用此方法。

【成果展示】

示例代码如下:

<template>
  <!-- Only one root node is allowed in template. -->
  <div class="container">
    <text id="origin-text" class="origin-text">测</text>
  </div>
</template>

<style>
  .container {
    flex-direction: row;
    justify-content: center;
    margin-top: 30px;
  }
  .origin-text {
    width: 80px;
    font-size: 60px;
    height: 80px;
    font-weight: 500;
    border: 1px solid #000000;
  }
</style>

<script>
  module.exports = {
    data: {
      rect: {}
    },
    onInit() {
      this.$page.setTitleBar({
        text: 'getBoundingClientRect',
        textColor: '#ffffff',
        backgroundColor: '#007DFF',
        backgroundOpacity: 0.5,
        menu: true
      });
    },
    onShow() {
      var that = this;
      that.$element('origin-text').getBoundingClientRect({
        success: function(data) {
          that.rect = JSON.stringify(data);
          console.log(that.rect, 'rect');
        },
        fail() {
          console.log(`Failed to getBoundingClientRect`);
        }
      });
    },
  }
</script>

展示及打印如下:

cke_3761.png

cke_4645.png

如上所示,这里我们获取到的宽度和高度是我们为这个组件设置的宽度和高度,并不是这个文字的宽度和高度,而且我会发现这个值还会有精度误差,这是正常的。


更多关于HarmonyOS鸿蒙Next中【快应用】通用方法getBoundingClientRect的使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中【快应用】通用方法getBoundingClientRect的使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,getBoundingClientRect是用于获取元素在视口中的位置和尺寸的通用方法。它返回一个DOMRect对象,包含元素的toprightbottomleftwidthheight属性。这些属性表示元素相对于视口的位置和大小。使用getBoundingClientRect可以帮助开发者精确控制元素的布局和交互,例如实现拖拽、对齐或动画效果。在快应用中,可以结合querySelector等选择器方法获取元素后调用此方法。

回到顶部