uni-app中@tap和@click的区别

tap和click在点击事件上有区别,tap适用于移动端的触摸交互,无300ms延迟但可能有穿透问题;而click在某些Vue的v-on修饰符下必需,且存在300ms延迟。在微信小程序中,tap不总能映射为click。
摘要由CSDN通过智能技术生成

tap和click都是点击事件。不过移动端有太多复杂的功能是click监听不到的,例如,触摸、按住和轻滑。这时候就要用tap方法了。

1.Vue的v-on修饰符中有部分只能由@click触发,如.once  .capture  .native;

2.@click是组件被点击时触发,会有约300ms的延迟(内置处理优化了);

   @tap是手指触摸离开时触发,没有300ms的延迟,但是会有事件穿透;

3.微信小程序开发过程中,部分场景@tap无法被自动编译成@click触发

 

下面是一个简单的微信小程序滑动Tap标签页的实现示例: 1. 在`app.json`设置`tabBar`属性,用于定义底部标签栏的样式和内容。例如: ``` "tabBar": { "color": "#999999", "selectedColor": "#007aff", "backgroundColor": "#ffffff", "borderStyle": "black", "list": [ { "pagePath": "pages/index/index", "text": "首页" }, { "pagePath": "pages/category/category", "text": "分类" }, { "pagePath": "pages/cart/cart", "text": "购物车" }, { "pagePath": "pages/user/user", "text": "个人心" } ] } ``` 2. 在`pages`目录下创建对应的页面文件,例如`index`、`category`、`cart`和`user`,并在每个页面的`wxml`文件定义一个`scroll-view`组件和一个`swiper`组件。例如: ```html <!-- index.wxml --> <scroll-view class="tab-scroll-view" scroll-x="true"> <swiper class="tab-swiper" current="{{current}}" bindchange="swiperChange"> <swiper-item> <view>标签页1</view> </swiper-item> <swiper-item> <view>标签页2</view> </swiper-item> <swiper-item> <view>标签页3</view> </swiper-item> </swiper> </scroll-view> ``` ```html <!-- category.wxml --> <scroll-view class="tab-scroll-view" scroll-x="true"> <swiper class="tab-swiper" current="{{current}}" bindchange="swiperChange"> <swiper-item> <view>标签页1</view> </swiper-item> <swiper-item> <view>标签页2</view> </swiper-item> <swiper-item> <view>标签页3</view> </swiper-item> </swiper> </scroll-view> ``` ```html <!-- cart.wxml --> <scroll-view class="tab-scroll-view" scroll-x="true"> <swiper class="tab-swiper" current="{{current}}" bindchange="swiperChange"> <swiper-item> <view>标签页1</view> </swiper-item> <swiper-item> <view>标签页2</view> </swiper-item> <swiper-item> <view>标签页3</view> </swiper-item> </swiper> </scroll-view> ``` ```html <!-- user.wxml --> <scroll-view class="tab-scroll-view" scroll-x="true"> <swiper class="tab-swiper" current="{{current}}" bindchange="swiperChange"> <swiper-item> <view>标签页1</view> </swiper-item> <swiper-item> <view>标签页2</view> </swiper-item> <swiper-item> <view>标签页3</view> </swiper-item> </swiper> </scroll-view> ``` 3. 在每个页面的`js`文件定义`current`属性和`swiperChange`方法,用于控制当前显示的标签页。例如: ```javascript // index.js Page({ data: { current: 0 }, swiperChange: function(e) { this.setData({ current: e.detail.current }) } }) ``` ```javascript // category.js Page({ data: { current: 0 }, swiperChange: function(e) { this.setData({ current: e.detail.current }) } }) ``` ```javascript // cart.js Page({ data: { current: 0 }, swiperChange: function(e) { this.setData({ current: e.detail.current }) } }) ``` ```javascript // user.js Page({ data: { current: 0 }, swiperChange: function(e) { this.setData({ current: e.detail.current }) } }) ``` 4. 在`app.wxss`定义`tab-scroll-view`和`tab-swiper`的样式,用于控制标签栏和标签页的显示。例如: ```css .tab-scroll-view { height: 44rpx; white-space: nowrap; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; } .tab-swiper { width: 100%; height: 100%; display: flex; flex-direction: row; justify-content: flex-start; align-items: stretch; } ``` 这样就完成了微信小程序滑动Tap标签页的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值