Taro中ScrollView实现轮播图

ScrollView 的scrollIntoView 实现轮播效果

1.背景:

1.1 为什么不用taro原生的Swiper轮播组件

  • 需要自定义轮播分页
  • 通过onChange事件来获取当前current再来更新底部分页,后有一定延迟,效果不佳
  • 元素选中与未选中要进行缩放

2. 具体实现

tsx 复制代码
const [targetViewId, setTargetViewId] = useState<string>()



 const testClick = () => {
    setTargetViewId('test_1')
  }

<Button onClick={testClick}>按钮</Button>
<ScrollView 
 scrollX
 scrollY={false}
 scrollWithAnimation
 onScroll={handleTouchMove}
 scrollIntoView={targetItemId}
>
{swiperList.map(()=>{

return (
    <View                   
    key={index}
    id={`test_${index}`}
></View>
)
})}

</ScrollView>

按钮的点击事件可以,让当前视图平滑的滚动到一组图片的第二张图片中,scrollWithAnimation 属性也可以在滚动中添加缓慢的动画效果。我们也可以在handleTouchMove事件中处理当前,展示的图片,以及与相应的css配合展示对应当前展示时样式和未展示时样式。

相关推荐
肥肠可耐的西西公主4 分钟前
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
前端·笔记·学习
大胖丫6 分钟前
vue 学习-vite api.js
开发语言·前端·javascript
孙桂月7 分钟前
ES6相关操作(2)
前端·javascript·es6
陈浩源同学7 分钟前
学习 TypeScript 栈和队列数据结构
前端·算法
我这一生如履薄冰~9 分钟前
简单封装一个websocket构造函数
前端·javascript·websocket
fangcaojushi9 分钟前
解决webpack5.54打包图片及图标的问题
前端·vue.js
海盗强10 分钟前
Webpack打包优化
前端·webpack·node.js
星之卡比*12 分钟前
前端面试题---vite和webpack的区别
前端·面试
^^为欢几何^^17 分钟前
npm、pnpm和yarn有什么区别
前端·npm·node.js
AC-PEACE39 分钟前
Vue 中 MVVM、MVC 和 MVP 模式的区别
前端·vue.js·mvc