基于uniapp vue3 的滑动抢单组件实例代码

 更新时间:2025年02月11日 09:35:30   作者:printf_824  
文章介绍了如何在Vue组件的`onMounted`生命周期钩子中获取`movable-area`和`movable-view`组件的实例,从而计算出可滑动的距离,示例代码展示了这一过程,感兴趣的朋友跟随小编一起看看吧

通过在onMounted获取movable-area与movable-view实例,计算出可滑动的距离

效果图:

代码:

<template>
  <view class="slider-container">
    <movable-area class="movable-area" id="movableArea">
      <movable-view 
        class="slider-button"
        direction="horizontal"
        :x="sliderX"
        @change="onSliderChange"
        @touchend="onSliderEnd"
        id="movableView"
      >
        <text class="arrow-icon">»</text>
        <text>Slide to grab order</text>
      </movable-view>
    </movable-area>
  </view>
</template>
<script setup>
import { ref, onMounted } from "vue";
const sliderX = ref(0); // 滑块 X 轴位置
const maxX = ref(0);    // 最大可滑动距离
onMounted(() => {
  getMaxX(); // 组件加载后计算最大可滑动距离
});
const getMaxX = () => {
  uni.createSelectorQuery()
    .select("#movableArea")
    .boundingClientRect(areaRect => {
      uni.createSelectorQuery()
        .select("#movableView")
        .boundingClientRect(viewRect => {
          if (areaRect && viewRect) {
            maxX.value = areaRect.width - viewRect.width;
            console.log("动态计算 maxX:", maxX.value);
          }
        })
        .exec();
    })
    .exec();
};
const onSliderChange = (event) => {
  const x = event.detail.x;
  console.log("当前滑动位置:", x);
  if (x >= maxX.value) {
    console.log("滑到了最右边");
    onSliderEnd();
  }
};
const onSliderEnd = () => {
  console.log("滑动结束,执行逻辑...");
  sliderX.value = 0; // 可选择让滑块复位
};
</script>
<style>
.slider-container {
			position: relative;
			width: 100%;
			height: 88rpx;
			margin-top: 30rpx;
			background-color: #F0F0F0;
			border-radius: 8rpx;
			overflow: hidden;
			movable-area {
				width: 100%;
				height: 100%;
				background: linear-gradient(90deg, #4080FF 0%, #4080FF 100%);
			}
			.slider-button {
				width: 300rpx;
				height: 88rpx;
				background-color: #4080FF;
				border-radius: 8rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				color: #ffffff;
				font-size: 28rpx;
				z-index: 1;
				.arrow-icon {
					margin-right: 10rpx;
					font-size: 32rpx;
				}
			}
		}
</style>

到此这篇关于基于uniapp vue3 的滑动抢单组件的文章就介绍到这了,更多相关uniapp vue3滑动抢单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Vue.js项目API、Router配置拆分实践

    详解Vue.js项目API、Router配置拆分实践

    这篇文章主要介绍了详解Vue.js项目API、Router配置拆分实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • vite搭建vue2项目的实战过程

    vite搭建vue2项目的实战过程

    自从体验了一下vite之后,真的太快了,然而对vue3还不是很熟练,就想着在vue2的项目中使用以下vite,下面这篇文章主要给大家介绍了关于vite搭建vue2项目的相关资料,需要的朋友可以参考下
    2022-11-11
  • Vue3 diff算法之双端diff算法详解

    Vue3 diff算法之双端diff算法详解

    双端Diff在可以解决更多简单Diff算法处理不了的场景,且比简单Diff算法性能更好。本文将通过示例为大家详细讲讲双端diff算法的实现与使用,需要的可以参考一下
    2022-09-09
  • Vue实现天气预报小应用

    Vue实现天气预报小应用

    这篇文章主要为大家详细介绍了Vue实现天气预报小应用,查询一些城市的天气情况,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Vue mixins详解与使用技巧

    Vue mixins详解与使用技巧

    Vue mixins提供了一个非常灵活的方式来分发Vue组件中的可复用功能,通过全局混入和局部混入,可以将预定义的方法、数据等混合到Vue组件中,这种技术可以简化代码,提高开发效率,并允许在不同组件间共享功能
    2024-09-09
  • vue中import导入三种方式详解

    vue中import导入三种方式详解

    在使用vue开发项目的时候,很多使用会import很多模块,这篇文章主要给大家介绍了关于vue中import导入三种方式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • vue中 根据判断条件添加一个或多个style及class的写法小结

    vue中 根据判断条件添加一个或多个style及class的写法小结

    这篇文章主要介绍了vue中 根据判断条件添加一个或多个style及class的写法,文中给大家补充介绍了关于vue里:class的使用结合自己的实现给大家讲解,需要的朋友可以参考下
    2023-03-03
  • 使用两种方式调用本地json文件(基于Vue-cli3脚手架)

    使用两种方式调用本地json文件(基于Vue-cli3脚手架)

    这篇文章主要介绍了使用两种方式调用本地json文件(基于Vue-cli3脚手架),具有很好的参考价值,希望对大家有所帮助,
    2023-10-10
  • vue 虚拟DOM的原理

    vue 虚拟DOM的原理

    这篇文章主要介绍了vue 虚拟DOM的原理,帮助大家更好的理解和学习vue,感兴趣的朋友可以了解下
    2020-10-10
  • 详解axios 全攻略之基本介绍与使用(GET 与 POST)

    详解axios 全攻略之基本介绍与使用(GET 与 POST)

    本篇文章主要介绍了axios 全攻略之基本介绍与使用(GET 与 POST),详细的介绍了axios的安装和使用,还有 GET 与 POST方法,有兴趣的可以了解一下
    2017-09-09

最新评论