基于uniapp?vue3?的滑動搶單組件實(shí)例代碼
通過在onMounted獲取movable-area與movable-view實(shí)例,計(jì)算出可滑動的距離
效果圖:
代碼:
<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(); // 組件加載后計(jì)算最大可滑動距離 }); 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("動態(tài)計(jì)算 maxX:", maxX.value); } }) .exec(); }) .exec(); }; const onSliderChange = (event) => { const x = event.detail.x; console.log("當(dāng)前滑動位置:", x); if (x >= maxX.value) { console.log("滑到了最右邊"); onSliderEnd(); } }; const onSliderEnd = () => { console.log("滑動結(jié)束,執(zhí)行邏輯..."); sliderX.value = 0; // 可選擇讓滑塊復(fù)位 }; </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>
到此這篇關(guān)于基于uniapp vue3 的滑動搶單組件的文章就介紹到這了,更多相關(guān)uniapp vue3滑動搶單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Vue.js項(xiàng)目API、Router配置拆分實(shí)踐
這篇文章主要介紹了詳解Vue.js項(xiàng)目API、Router配置拆分實(shí)踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03vite搭建vue2項(xiàng)目的實(shí)戰(zhàn)過程
自從體驗(yàn)了一下vite之后,真的太快了,然而對vue3還不是很熟練,就想著在vue2的項(xiàng)目中使用以下vite,下面這篇文章主要給大家介紹了關(guān)于vite搭建vue2項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-11-11Vue實(shí)現(xiàn)天氣預(yù)報小應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)天氣預(yù)報小應(yīng)用,查詢一些城市的天氣情況,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08vue中?根據(jù)判斷條件添加一個或多個style及class的寫法小結(jié)
這篇文章主要介紹了vue中?根據(jù)判斷條件添加一個或多個style及class的寫法,文中給大家補(bǔ)充介紹了關(guān)于vue里:class的使用結(jié)合自己的實(shí)現(xiàn)給大家講解,需要的朋友可以參考下2023-03-03使用兩種方式調(diào)用本地json文件(基于Vue-cli3腳手架)
這篇文章主要介紹了使用兩種方式調(diào)用本地json文件(基于Vue-cli3腳手架),具有很好的參考價值,希望對大家有所幫助,2023-10-10詳解axios 全攻略之基本介紹與使用(GET 與 POST)
本篇文章主要介紹了axios 全攻略之基本介紹與使用(GET 與 POST),詳細(xì)的介紹了axios的安裝和使用,還有 GET 與 POST方法,有興趣的可以了解一下2017-09-09