APP——uniApp针对图片获取节点并标识

demo

<template>
  <view>
    <view class="warp">
      <image
        :id="ImgId"
        @click="mouseClick"
        class="image"
        src="../../../static/image/bg_login.png"
      ></image>
      <view v-for="(point, index) in filterPoints" :key="index">
        <view class="point" :style="{ left: point.x + 'px', top: point.y + 'px' }">
          {{ index + 1 }}
        </view>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      ImgId: Math.random()
        .toString(36)
        .substr(2),
      filterPoints: []
    };
  },
  methods: {
    mouseClick(e) {
      console.log('x', e.detail.x);
      console.log('y', e.detail.y);
      this.createPoint({ x: e.detail.x, y: e.detail.y });
    },
    createPoint({ x, y }) {
      uni
        .createSelectorQuery()
        .in(this)
        .select(`#${this.ImgId}`)
        .boundingClientRect(data => {
          console.log('得到布局位置信息' + JSON.stringify(data));
          console.log('节点离页面顶部的距离为' + data.top);
          let _x = x - data.left;
          let _y = y - data.top;
          if (_x > 0 && _y > 0) {
            this.filterPoints.push({
              x: _x,
              y: _y
            });
          }
        })
        .exec();
    }
  }
};
</script>

<style lang="scss" scoped>
.warp {
  position: relative;
  width: 400rpx;
  height: 200rpx;
  .image {
    width: 400rpx;
    height: 200rpx;
  }
  .point {
    position: absolute;
    transform: translate(-50%, -50%);
    background-color: red;
    font-size: 20rpx;
    font-weight: 200;
    color: #ffffff;
    width: 30rpx;
    height: 30rpx;
    border-radius: 30rpx;
    display: flex;
    justify-content: center;
    align-items: center;
  }
}
</style>

 

呈现的效果:

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值