微信小程序swiper+scroll-view实现滑动切换内容

1.实现效果

在这里插入图片描述

2.实现原理

  • swiper:滑块视图容器。其中只可放置swiper-item组件,设置不同的swiper-item,通过bindchange事件,动态的改变当前选中项,swiper默认高度为150,必须设置相应高度才可。
  • scroll-view:包裹整个页面,设置scroll-x或scroll-y,改变滚动的方向。

3.实现代码

<scroll-view class="scroll-wrapper" scroll-x scroll-with-animation="true" scroll-into-view="item{{currentTab < 4 ? 0 : currentTab - 3}}">
	<view class="navigate-item" id="item{{index}}" wx:for="{{tabList}}" wx:key="index" data-index="{{index}}" bindtap="tabNav">
		<view class="names {{currentTab === index ? 'active' : ''}}">{{item.name}}</view>
		<view class="currtline {{currentTab === index ? 'active' : ''}}" wx:if="{{currentTab === index}}"></view>
	</view>
</scroll-view>
<swiper indicator-dots="{{false}}" bindchange="handleSwiper" current="{{currentTab}}">
	<block wx:for="{{tabList}}" wx:key="index">
			<swiper-item style="overflow: scroll;">
        <view class="tab_title">tab{{currentTab+1}}内容</view>
				<scroll-view scroll-y refresher-enabled refresher-background="#F6F7F8" refresher-triggered="{{isRefresh}}"  bindrefresherrefresh="refresherpulling" bindscrolltolower="handleTolower">
					<view class="swiper-item" wx:for="{{20}}" wx:key="index">{{index + 1}}条数据~</view>
				</scroll-view>
			</swiper-item>
	</block>
</swiper>
.scroll-wrapper {
  white-space: nowrap;
  -webkit-overflow-scrolling: touch;
  background: #FFF;
  height: 90rpx;
  padding: 0 32rpx;
  box-sizing: border-box;
}
/* 去掉滚动条 */
::-webkit-scrollbar {
  width: 0;
  height: 0;
  color: transparent;
}

.navigate-item {
  display: inline-block;
  text-align: center;
  height: 90rpx;
  line-height: 90rpx;
  margin: 0 30rpx;
}

.names {
  font-size: 28rpx;
  color: #3c3c3c;
}

.names.active {
  color: #db7c22;
  font-weight: bold;
  font-size: 34rpx;
}

.currtline {
  margin: -8rpx auto 0 auto;
  width: 100rpx;
  height: 8rpx;
  border-radius: 4rpx;
}

.currtline.active {
  background: #db7c22;
  transition: all .3s;
}
.tab_title{
  margin: 20rpx;
  border: 1px solid #db7c22;
  padding: 20rpx;
  box-sizing: border-box;
}
swiper {
  min-height: calc(100vh - 100rpx);
}
.swiper-item {
  width: 100%;
  padding: 32rpx ;
  box-sizing: border-box;
}

scroll-view {
  height: calc(100vh - 100rpx);
}
// pages/another/scroll-x/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isRefresh: false,

    currentTab: 0,
    tabList: [
      {
      name: 'tab一'
    },
    {
      name: 'tab二'
    }, {
      name: 'tab三'
    }, 
    {
      name: 'tab四'
    },
    {
      name: 'tab五'
    }, 
    {
      name: 'tab六'
    },
    {
      name: 'tab七'
    },
  ]

  },

  tabNav(e) {
    let currentTab = e.currentTarget.dataset.index
    this.setData({
      currentTab
    })
  },
  handleSwiper(e) {
    let {current,source} = e.detail
    if (source === 'autoplay' || source === 'touch') {
      const currentTab = current
      this.setData({
        currentTab
      })
    }
  },
  handleTolower(e){
    wx.showToast({
      title: '到底啦'
    })
  },
  refresherpulling() {
    wx.showLoading({
      title: '刷新中'
    })
    setTimeout(() => {
      this.setData({
        isRefresh: false
      })
      wx.showToast({
        title: '加载完成'
      })
    }, 1500)
  },
  onLoad: function (options) {

  },


  onShow: function () {

  },

 
})

4.完整代码,尽在公众号’苏苏的bug’,更多小程序demo,关注苏苏的码云,如果对你有用,欢迎您的star+订阅!

  • 8
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
是的,可以使用swiperscroll-view组件来实现微信小程序的左右分页功能。 首先,在wxml文件中添加swiperscroll-view组件,并设置相应的属性。 ```html <swiper class="swiper-container" current="{{current}}" duration="{{500}}" style="height:{{pageHeight}}px"> <swiper-item> <scroll-view class="scroll-view" scroll-x="{{true}}" scroll-y="{{false}}" style="width:{{windowWidth}}px;height:{{pageHeight}}px;"> <!--第一页内容--> </scroll-view> </swiper-item> <swiper-item> <scroll-view class="scroll-view" scroll-x="{{true}}" scroll-y="{{false}}" style="width:{{windowWidth}}px;height:{{pageHeight}}px;"> <!--第二页内容--> </scroll-view> </swiper-item> <!--更多swiper-item--> </swiper> ``` 其中,swiper组件设置了current属性,用于控制当前显示的页码;scroll-view组件设置了scroll-x属性,用于开启水平方向的滚动,并设置了样式宽度为屏幕宽度,高度为页面高度。 接着,在js文件中,监听swiper组件的change事件,用于动态更新当前页码。 ```javascript Page({ data: { current: 0, windowWidth: wx.getSystemInfoSync().windowWidth, pageHeight: wx.getSystemInfoSync().windowHeight }, onLoad: function () { //... }, onPageChange: function (e) { this.setData({ current: e.detail.current }) } }) ``` 最后,在样式文件中,设置swiper-container和scroll-view的样式,用于实现左右分页效果。 ```css .swiper-container { overflow: hidden; position: relative; } .scroll-view { white-space: nowrap; } .swiper-item { display: inline-block; vertical-align: top; width: 100%; } ``` 以上就是使用swiperscroll-view组件实现微信小程序左右分页功能的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值