当前位置: 首页 > news >正文

Uniapp中动态控制scroll-view滚动的方式

在Uniapp 4.45中,动态修改scroll-view的scroll-left属性时无法触发滚动(直接设置scroll-left属性值没问题),这通常是因为数据更新与 DOM 渲染之间的异步特性导致的。知道了原因,但是直接修改scroll-left属性值还是失败,尝试了很多方案,最后结合Vue v-if指令成功。

完整代码:

<template><view class="container"><!-- 横向滚动容器 --><scroll-view scroll-x :scroll-left="scrollLeft" :scroll-with-animation="true" class="scroll-box" @scroll="handleScroll"v-if="scrollViewVisible"><view v-for="item in itemList" :key="item.id" class="scroll-item">元素 {{ item.id }}</view></scroll-view><!-- 控制按钮 --><button @click="scrollToLeft">滚动到最左侧</button></view>
</template><script setup>import {ref,nextTick} from 'vue';// 响应式数据let scrollViewVisible = ref(true);const scrollLeft = ref(0); // 控制横向滚动位置const itemList = ref(Array.from({length: 20}, (_, i) => ({id: i + 1})));// 滚动事件监听const handleScroll = (e) => {console.log('当前横向滚动位置:', e.detail.scrollLeft);};// 滚动到最左侧方法const scrollToLeft = () => {scrollViewVisible.value = false;nextTick(() => {scrollViewVisible.value = true;scrollLeft.value = 0; // 将滚动位置重置为0(最左侧)})};
</script><style scoped>/* 容器样式 */.container {padding: 20rpx;}/* 关键:必须设置固定宽度且允许横向滚动 */.scroll-box {width: 100%;height: 200rpx;white-space: nowrap;/* 禁止换行 */border: 1px solid #eee;}/* 横向排列的子元素 */.scroll-item {display: inline-block;width: 150rpx;height: 180rpx;line-height: 180rpx;text-align: center;background-color: #f0f0f0;margin-right: 20rpx;}
</style>

http://www.dtcms.com/a/199507.html

相关文章:

  • 耗时十分钟,做了一个 uniapp 灵感泡泡机
  • Linux笔记---内核态与用户态
  • uniapp运行到微信开发者工具报错“更改appid失败touristappidError:tourist appid”
  • Python对JSON数据操作
  • vscode怎么关闭自动定位文件
  • 计算机底层的多级缓存以及缓存带来的数据覆盖问题
  • 包装类(1)
  • 一文详解红黑树
  • 基于口令凭据的横向移动:技术解析与实战
  • 轻量级离线版二维码工具的技术分析与开发指南
  • 初识 Redis
  • 力扣每日一题5-18
  • Cursor 模型深度分析:区别、优缺点及适用场景
  • 电子电路:什么是偏置电路?
  • Baklib知识中台架构设计与智能服务实践
  • wpf DataGrid 行选择事件
  • Redis 学习笔记 5:分布式锁
  • vulfocus漏洞学习——redis 未授权访问 (CNVD-2015-07557)
  • RabbitMQ-高级
  • 信息化的编程未来发展
  • 数据结构实验10.1:内部排序的基本运算
  • 算法-数对的使用
  • 【数据结构篇】排序1(插入排序与选择排序)
  • Vue百日学习计划Day33-35天详细计划-Gemini版
  • java中如何优雅处理多租户系统的查询?
  • 嵌入式学习的第二十三天-数据结构-树+哈希表+内核链表
  • Linux项目部署全攻略:从环境搭建到前后端部署实战
  • Python实现的在线词典学习工具
  • Axure设计数字乡村可视化大屏:构建乡村数据全景图
  • prisma连接非关系型数据库mongodb并简单使用