广告
返回顶部
首页 > 资讯 > 精选 >微信小程序实现滑动/点击切换Tab
  • 453
分享到

微信小程序实现滑动/点击切换Tab

微信小程序小程序前端 2023-08-16 21:08:14 453人浏览 薄情痞子
摘要

背景 👏 swiper+scroll-view实现滑动/点击切换Tab,以及scroll-left的使用~ 🥇文末分享源代码。记得点赞+关注+收藏! 1.实现效果 2.实现步骤 2.1 scroll-vie

背景

👏 swiper+scroll-view实现滑动/点击切换Tab,以及scroll-left的使用~

🥇文末分享源代码。记得点赞+关注+收藏!

1.实现效果

在这里插入图片描述

2.实现步骤

2.1 scroll-view实现tab列表

scroll-view:
可滚动视图区域。使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为px。
scroll-x(boolean):允许横向滚动
scroll-y(boolean):允许纵向滚动
scroll-left(number/string):设置横向滚动条位置
scroll-with-animation(boolean):在设置滚动条位置时使用动画过渡

  • 定义一个tab列表,scroll-view包裹,允许横向滚动,设置scroll-left默认为0
  • 每个tab设置为display: inline-block,scroll-view设置 white-space: nowrap不换行

在这里插入图片描述

ainer-head-sc" scroll-left="{{sleft}}" scroll-with-animation="true"> tab-{{index+1}}  
.container-head-sc {  height: 50rpx;  border-radius: 25rpx;  background: #eeece4;  color: #333;  white-space: nowrap;}.container-head-sc .item {  padding: 0 20rpx;  min-width: 90rpx;  text-align: center;  line-height: 50rpx;  font-size: 26rpx;  display: inline-block;  height: 50rpx;}
  • 给每个tab设置vertical-align: top;防止高度塌陷
.container-head-sc .item{   + vertical-align: top;}
  • 添加当前激活tab样式,定义当前选中项索引currentTab默认为0(即选中第一个),当currentTab==列表的某一项索引表示选中
    在这里插入图片描述
 tab-{{index+1}} 
.container-head-sc .active {  color: #ffffff;  font-weight: bold;  background: orange;  border-radius: 25rpx;}
  • 添加切换事件
    在这里插入图片描述
handleTabChange(e) {let { current } = e.target.dataset;if (this.data.currentTab == current || current === undefined) return;this.setData({  currentTab: current,});},

2.2 swiper+scroll-iew 实现内容列表

swiper
滑块视图容器。默认高度为150px;
current(number):当前所在滑块的 index,默认为0
autoplay(boolean):是否自动切换
bindchange(eventhandle):current 改变时会触发 change 事件,event.detail = {current, source}

  • swiper包裹内容列表,需要为swiper指定高度,这里我们设置为撑满一屏

在这里插入图片描述

.container-swiper {  height: calc(100% - 110rpx);}
  • 设置swiper的current为当前选中的tab标签索引,即currentTab
  
  • swiper-item展示内容列表,用scroll-view包裹内容,设置竖向滚动,使用竖向滚动时,需要给scroll-view一个固定高度,这里将scroll-view高度设置为100%,与swiper同高,铺满一屏
            ....//内容         
.container-swiper-sc {  height: 100%;}
  • swiper添加bindchange事件,当滑动时候,动态的设置currentTab,实现tab列表的同步更新
    在这里插入图片描述
....//内容
  handleSwiperChange(e) {    this.setData({      currentTab: e.detail.current,    });  },
  • 可以发现,当swiper所在滑块的 index超出tab列表的可视范围,我们得手动滑动tab列表才能看见当前所选中的tab
  • 找到2.1节 scroll-left=“{{sleft}}”,scroll-left用来设置横向滚动条位置,也就是说,我们可以监听swiper的滚动,在滑块所在的index改变的时候,去动态的设置scroll-left的位置
  • scroll-left的计算

wx.createSelectorQuery():
返回一个 SelectorQuery 对象实例
SelectorQuery.selectAll(string selector):
在当前页面下选择匹配选择器 selector 的所有节点。

getScrollLeft() {const query = wx.createSelectorQuery();query.selectAll(".item").boundingClientRect();//这里将会返回页面中所有class为item的节点,个数为tab列表的长度query.exec((res) => {  let num = 0;  for (let i = 0; i < this.data.currentTab; i++) {    num += res[0][i].width;  }  // 计算当前currentTab之前的宽度总和  this.setData({    sleft: Math.ceil(num),  });});},
  • 修改swiper的bindchange事件,每次滑块的变化,都重新计算scroll-left的大小
    在这里插入图片描述
  handleSwiperChange(e) {   + this.getScrollLeft();  },

3.实现代码

  scroll-left            tab-{{index+1}}                                                                               
page {  background-color: #ffa500;  height: 100%;}.head {  height: 90rpx;  color: #333;  font-size: 30rpx;  padding-left: 30rpx;  font-weight: bold;  padding-bottom: 10rpx;  box-sizing: border-box;}.head-title {  position: relative;  display: inline-block;  height: 100%;}.head-title::after {  content: '';  position: absolute;  z-index: 99;  width: 15px;  height: 15px;  margin-left: -15rpx;  border-top: 3px solid #333;  border-right: 3px solid #333;  border-top-right-radius: 100%;  transfORM: rotate(-225deg);  left: 50%;  bottom: 3px;}.container {  width: 100%;  height: calc(100% - 90rpx);  background-color: #fff;  overflow: hidden;  border-radius: 30rpx 30rpx 0 0;}.container-head {  width: 100%;  height: 110rpx;  box-sizing: border-box;  padding: 10rpx 20rpx;}.container-head-sc {  height: 50rpx;  border-radius: 25rpx;  background: #eeece4;  color: #333;  white-space: nowrap;}.container-head-sc .item {  padding: 0 20rpx;  min-width: 90rpx;  text-align: center;  line-height: 50rpx;  font-size: 26rpx;  display: inline-block;    vertical-align: top;  height: 50rpx;}.container-head-sc .active {  color: #ffffff;  font-weight: bold;  background: orange;  border-radius: 25rpx;}.container-swiper {  height: calc(100% - 110rpx);}.container-swiper-sc {  height: 100%;}.container-swiper-sc .items {  padding: 0 2%;  width: 100%;  box-sizing: border-box;}.container-swiper-sc .items .item-img {  width: 30vw;  height: 30vw;  margin-right: 2.8%;  margin-bottom: 10rpx;  flex-shrink: 0;}.container-swiper-sc .items .item-img:nth-child(3n+3) {  margin-right: 0;}::-WEBkit-scrollbar {  width: 0;  height: 0;  color: transparent;}
Page({  data: {    currentTab: 0,    sleft: "", //横向滚动条位置    list: [1, 2, 3, 4, 5, 6, 7, 22, 32],//测试列表  },  handleTabChange(e) {    let { current } = e.target.dataset;    if (this.data.currentTab == current || current === undefined) return;    this.setData({      currentTab: current,    });  },  handleSwiperChange(e) {    this.setData({      currentTab: e.detail.current,    });    this.getScrollLeft();  },  getScrollLeft() {    const query = wx.createSelectorQuery();    query.selectAll(".item").boundingClientRect();    query.exec((res) => {      let num = 0;      for (let i = 0; i < this.data.currentTab; i++) {        num += res[0][i].width;      }      this.setData({        sleft: Math.ceil(num),      });    });  },});

4.写在最后🍒

看完本文如果觉得有用,记得点赞+关注+收藏鸭 🍕
更多小程序相关,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云~

来源地址:https://blog.csdn.net/qq_48085286/article/details/128122310

--结束END--

本文标题: 微信小程序实现滑动/点击切换Tab

本文链接: https://www.lsjlt.com/news/372162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序实现滑动/点击切换Tab
    背景 👏 swiper+scroll-view实现滑动/点击切换Tab,以及scroll-left的使用~ 🥇文末分享源代码。记得点赞+关注+收藏! 1.实现效果 2.实现步骤 2.1 scroll-vie...
    99+
    2023-08-16
    微信小程序 小程序 前端
  • 微信小程序实现tab点击切换
    本文实例为大家分享了微信小程序无滑动效果的tab点击切换的具体代码,供大家参考,具体内容如下 <!--pages/dingdan/dingdan.wxml--> <...
    99+
    2022-11-13
  • 微信小程序实现滑动/点击切换Tab及scroll-left的使用
    目录背景1.实现效果2.实现步骤2.1 scroll-view实现tab列表2.2 swiper+scroll-iew 实现内容列表3.实现代码背景 👏 swiper+scroll-...
    99+
    2023-05-17
    小程序Tab切换 小程序滑动切换tab 微信小程序点击切换
  • 微信小程序自定义可滑动的tab切换
    本文实例为大家分享了微信小程序自定义tab切换(可滑动),供大家参考,具体内容如下 自定义tab切换(可滑动) <!--components/warn/warn.wxml--...
    99+
    2022-11-13
  • 微信小程序如何实现tab切换可滑动切换导航栏跟随滚动
    这篇文章给大家分享的是有关微信小程序如何实现tab切换可滑动切换导航栏跟随滚动的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。解决过程1.在想要实现这个问题的时候找了不少别人的博客...
    99+
    2022-10-19
  • 微信小程序实现tab组件切换动画
    目录前言如何实现页面tab1.使用内置组件scroll-view2.实现点击时出现的背景样式3.scroll-into-view前言 本次主要内容是介绍页面tab的开发,如何实现ta...
    99+
    2022-11-13
    小程序tab组件切换 微信小程序tab组件 小程序tab切换
  • 微信小程序怎么自定义可滑动的tab切换
    这篇文章主要介绍了微信小程序怎么自定义可滑动的tab切换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序怎么自定义可滑动的tab切换文章都会有所收获,下面我们一起来看看吧。自定义tab切换(可滑动)&l...
    99+
    2023-07-02
  • 微信小程序如何实现tab切换效果
    这篇文章将为大家详细讲解有关微信小程序如何实现tab切换效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序之tab切换效果,如图:最近在学习微信小程序并把之前的...
    99+
    2022-10-19
  • 微信小程序实现tab页面切换效果
    本文实例为大家分享了微信小程序实现tab页面切换的具体代码,供大家参考,具体内容如下 html 页面 <view class="bgwhite">     <sc...
    99+
    2022-11-13
  • 微信小程序实现简单Tab切换效果
    本文实例为大家分享了微信小程序实现Tab切换效果的具体代码,供大家参考,具体内容如下 使用步骤 代码如下(示例): 定义一个状态status data: { status:...
    99+
    2022-11-12
  • 微信小程序点击实现样式切换功能的方法
    本篇内容主要讲解“微信小程序点击实现样式切换功能的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序点击实现样式切换功能的方法”吧!普通的web开发可以通过JavaScript获取HT...
    99+
    2023-06-26
  • 怎么在微信小程序中实现一个Tab切换效果
    这篇文章给大家介绍怎么在微信小程序中实现一个Tab切换效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用步骤代码如下(示例):定义一个状态statusdata: {   st...
    99+
    2023-06-15
  • 小程序tab实现页面切换
    本文实例为大家分享了小程序tab实现页面切换的具体代码,供大家参考,具体内容如下 .wxml <view class='title'>       <view c...
    99+
    2022-11-13
  • 微信小程序中如何实现左右滑动切换页面功能
    这篇文章主要为大家展示了“微信小程序中如何实现左右滑动切换页面功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何实现左右滑动切换页面功能”这篇文...
    99+
    2022-10-19
  • 微信小程序实现点餐小程序左侧滑动菜单
    目录前言一、初识scroll-view二、左侧导航三、右侧滑动前言 最近在帮亲戚做一款微信的点餐小程序,以前从没有接触过小程序的我只能现做现卖。一边看文档一边实践尝试,在进行到点菜模...
    99+
    2022-11-13
  • 微信小程序如何监听手势滑动切换页面
    这篇文章给大家分享的是有关微信小程序如何监听手势滑动切换页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序 监听手势滑动切换页面实例详解1.对应的xml里写上手势开始、...
    99+
    2022-10-19
  • 微信小程序如何实现顶部导航栏滑动tab效果
    这篇文章将为大家详细讲解有关微信小程序如何实现顶部导航栏滑动tab效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下效果图:首先是滑动的效果:<scro...
    99+
    2022-10-19
  • 微信小程序实现滑动删除
    本文实例为大家分享了微信小程序实现滑动删除的具体代码,供大家参考,具体内容如下 wxml <view class="bgwhite bor-bom-f2 row just-b...
    99+
    2022-11-13
  • 微信小程序如何实现点餐小程序左侧滑动菜单
    这篇文章主要讲解了“微信小程序如何实现点餐小程序左侧滑动菜单”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序如何实现点餐小程序左侧滑动菜单”吧!效果图:一、初识scroll-view...
    99+
    2023-07-02
  • 微信小程序中swiper制作tab切换的示例分析
    这篇文章主要介绍微信小程序中swiper制作tab切换的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序 swiper制作tab切换实现效果图:swiper制作tab...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作