简述uniApp中获取DOM元素方法 ?

在 uni-app 中,获取 DOM 元素的方法与传统的 Web 开发有所不同。由于 uni-app 主要面向的是前端跨平台开发,包括小程序和App,它不直接操作 DOM。相反,uni-app 提供了一套 API 来查询和操作页面元素,这主要是通过 Vue 的 ref 属性和 uni.createSelectorQuery 方法实现的。

使用 ref 属性

ref 是 Vue 提供的一个特殊属性,可以用来给元素或子组件注册引用信息。引用信息将会在组件的 $refs 对象上注册。使用 ref 获取元素后,可以直接操作该元素的 Vue 组件实例,但并不能直接操作其 DOM。

示例:

<template>
  <view>
    <text ref="myText">Hello, uni-app</text>
  </view>
</template>

<script>
export default {
  mounted() {
    console.log(this.$refs.myText); // 访问到的是 Vue 组件实例,而不是真正的 DOM 元素
  }
}
</script>

使用 uni.createSelectorQuery 方法

uni.createSelectorQuery 是 uni-app 提供的一个 API,允许开发者根据选择器查询页面元素的信息,类似于 Web 开发中的 document.querySelector 或 jQuery 的选择器。它是专门为小程序和 App 端设计的,可以获取元素的大小、位置等信息,但它不返回元素的直接引用,也不允许直接修改元素样式。

示例:

export default {
  mounted() {
    const query = uni.createSelectorQuery().in(this);
    query.select('#myElement').boundingClientRect((rect) => {
      if (rect) {
        console.log(rect.width); // 输出元素的宽度
        console.log(rect.height); // 输出元素的高度
      }
    }).exec();
  }
}

在这个示例中,select 方法用于选择页面中的元素,boundingClientRect 方法用来获取元素的位置和尺寸信息,最后通过 exec 方法执行查询操作。

总结来说,uni-app 中获取和操作页面元素的方法与传统 Web 开发有所不同,主要通过 ref 属性和 uni.createSelectorQuery 方法实现,适用于小程序和 App 等非 Web 环境。