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

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.xdnf.cn/news/7254.html

相关文章:

  • Spring IOCDI————(1)
  • AG-UI 协议是什么?MCP、A2A 后,AI 领域又新增 AG-UI 协议
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Progress Steps (步骤条)
  • Windows环境安装LibreOffice实现word转pdf
  • Python----目标检测(PASCAL VOC数据集)
  • 艾默生流量计与Profibus DP主站转Modbus RTU/TCP网关通讯案例
  • Linux利用多线程和线程同步实现一个简单的聊天服务器
  • 数据库中的属性列数和元组
  • Java POJO接收前端null值设置
  • java+selenium专题->启动浏览器下篇
  • 1.portainer
  • Unity editor文件数UI(支持勾选框)
  • 从 Word2Vec 到 BERT:AI 不止是词向量,更是语言理解
  • 带你搞懂@Valid和@Validated的区别
  • 【Go】从0开始学习Go
  • 【成品设计】基于Arduino的自动化农业灌溉系统
  • 基于DeepSeek的智能客服系统实践与创新
  • 【硬核数学】2. AI如何“学习”?微积分揭秘模型优化的奥秘《从零构建机器学习、深度学习到LLM的数学认知》
  • Java线程:多任务进行
  • 鸿蒙 Location Kit(位置服务)
  • 蓝桥杯1447 砝码称重
  • Flink 快速入门
  • 【LeetCode】大厂面试算法真题回忆(93)--优雅数组
  • 几种数据加密方法
  • 践行“科学智能”!和鲸打造 AI for Science 专属应用
  • docker安装Prometheus+Grafana
  • python如何遍历postgresql所有的用户表
  • OpenHarmony外设驱动使用 (五),Fingerprint_auth
  • ubuntu22.04 卸载ESP-IDF
  • AIGC与数字金融:人工智能金融创新的新纪元