uniapp+vue+微信小程序实现侧边导航

效果:开始时图片一半隐藏, 手指划入侧边图片缓慢移出,划出缓慢移入隐藏

事件:

|--------------|----------|
| @touchstart | 手指触摸开始 |
| @touchmove | 手指触摸后移动 |
| @touchend | 手指离开 |
| @touchcancel | 被打断(来电等) |
| @tab | 立即离开 |

页面结构:

html 复制代码
<view class="maxBox">
        <view
            class="sideBox"
            :class="{ show: isTouching }"
            @touchstart="onTouchStart"
            @touchmove="onTouchMove"
            @touchend="onTouchEnd"
        >
            <view class="sideButton">
                <!-- 按钮的内容,可以是图片或文字 -->

            </view>
        </view>

</view>

逻辑:

javascript 复制代码
const startX = ref(0) // 记录触摸起始位置
const isTouching = ref(false) // 控制按钮显示状态


// 触摸开始事件
const onTouchStart = (event) => {
    // console.log("触摸开始事件", event)
    startX.value = event.touches[0].pageX;
    isTouching.value = true;
}

// 触摸移动事件
const onTouchMove = (event) => {
    // console.log("触摸移动事件", event)
    const moveX = event.touches[0].pageX;
    if (startX.value - moveX > 20) {
        isTouching.value = true;
    }
}
// 触摸结束事件
const onTouchEnd = (event) => {
    // console.log("触摸结束事件", event)
    setTimeout(() => {
        isTouching.value = false;
    }, 1500);//这里设置手指离开多久后重置
}

样式:

css 复制代码
.maxBox{
    min-height: 100vh;
    box-sizing: border-box;
    position: relative;
}

.sideBox {
        position: fixed;
        right: -50rpx; /* 半隐藏 */
        top: 50%;
        transform: translateY(-50%);
        width: 100rpx;
        height: 100rpx;
        transition: right 0.3s ease;
        z-index: 999;
}
.sideBox.show {
        right: 0; /* 全展示 */
}
相关推荐
EatFan7 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
2301_322414280410 小时前
活力孕康复APP 47737- 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·mysql·微信小程序·idea·微信开发者工具
专业程序开发源12 小时前
springbootLivehouse票务系统-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·pygame
leoZ23112 小时前
2026-09-10-静态扫描连错三次-用运行环境当裁判
前端·javascript·vue.js·人工智能·opencv·机器学习·数据挖掘
卓怡学长12 小时前
w233基于vue和springboot的宠物管理系统的设计与实现
java·vue.js·spring boot·spring·intellij-idea
梨涡泥窝14 小时前
JavaWeb——基于 Spring Boot + Vue 的图书管理系统的设计与实现
vue.js·spring boot·后端
huali16 小时前
vue-split-screen:让 Vue Router 的导航轨迹变成两个页面
前端·javascript·vue.js
雪芽蓝域zzs18 小时前
第三十六节:keep-alive 页面缓存(Vue3 + 后台管理系统)
前端·vue.js·缓存
边境悍匪18 小时前
蜗牛学苑 Java 智能体学习 Day41|ElementPlus 布局、Vue‑Router 登录、Axios 思维导图复盘
java·vue.js·学习
志尊宝18 小时前
Vue3 零基础每日笔记(017):事件处理进阶——$event、多事件与事件修饰符全家桶
javascript·vue.js·笔记