微信小程序实现标签栏

article/2025/11/11 16:08:40

标签栏实现功能:

  1. 页面向下滑动,标签栏吸顶。
  2. 点击标签项,标签项呈现选中态,并切换到对应的面板。
  3. 在面板中进行滑动,可切换标签项和面板。
    请添加图片描述
<!-- tabs.wxml -->
<wxs module="touch" src="./touch.wxs"></wxs><view class="tabs"><view class="tab-navs"><view class="tab-nav" wx:for="{{tabs}}" wx:key="index"><!-- 通过对比 index 与当前点击的标签项的下标来实现选中态 --><view class="tab-label {{currentTabIndex === index ? 'active-tab-label' : ''}}" data-index="{{index}}" bindtap="handleTabChange">{{item}}</view><view class="tab-divider" wx:if="{{currentTabIndex === index}}"></view></view></view><!-- 滑动切换面板 --><view class="tab-panel" bindtouchstart="{{touch.handleTouchstart}}" bindtouchend="{{touch.handleTouchend}}"></view>
</view>
// tabs.js
Page({data: {tabs: ['全部', '待付款', '待发货', '待收货', '售后'],currentTabIndex: 0, // 记录当前点击的标签项的下标},// 点击标签项切换到对应的面板// 快速点击标签项,可能会导致面板中渲染出来的请求数据错乱。原因是:事件和网络请求都是异步的,快速触发事件无法保证它的执行顺序和触发顺序一致,而且,也无法保证网络请求返回数据的顺序和触发顺序一致。因此使用节流函数防止频繁触发调用(节流函数此处不做具体实现,可查看事件稀释一文)。handleTabChange: throttle(function(e) {const {index} = e.target.datasetconst {currentTabIndex} = this.dataif (index === currentTabIndex) returnthis.setData({currentTabIndex: index})}, 500),// 逻辑层和视图层的通信以及页面的重新渲染,性能开销极大。因此,不直接在 js 中监听滑动事件,而是使用 WXS 函数用来响应小程序事件,让事件在视图层响应,从而减少通信的次数和页面的重新渲染达到性能的优化。// 根据滑动方向切换面板handleTouch(values) {const {direction} = valuesconst {tabs, currentTabIndex} = this.dataconst target = currentTabIndex + direction// 越界判断if (target < 0 || target > tabs.length - 1) returnthis.setData({currentTabIndex: target})}
})
// touch.wxs
var touchStart
function handleTouchstart(e) {// 记录触摸开始的 X 轴的位置touchStart = e.changedTouches[0].clientX
}function handleTouchend(e) {// 记录触摸结束的 X 轴的位置var touchEnd = e.changedTouches[0].clientX// 负数表示手指向左滑动,正数表示手指向右滑动var distance = touchEnd - touchStart// 定义滑动方向。-1:页面后退(向右滑动);0:不动;1:页面前进(向左滑动)var direction = 0// 设置一个阈值,超出才切换面板var threshold = 30if (distance < -threshold) {direction = 1} else if (distance > threshold) {direction = -1}if (direction !== 0) {// 调用引用该 wxs 的组件的方法,传递滑动方向e.instance.callMethod('handleTouch', {direction: direction})}
}module.exports = {handleTouchstart: handleTouchstart,handleTouchend: handleTouchend,
}
/* tabs.wxss */
.tabs {width: 100%;// 不能设置父元素的 height 为 100%,否则当页面滑动到一定高度之后 sticky 属性会失效。标签项不再吸顶被顶走。// 原因:和粘性定位的原理有关,在实现吸附效果时,会根据父元素的大小来进行定位。如果设置父元素高度为 100%,那么就会按照这个高度来定位,但是页面中的数据是分页加载的,父元素的高度会越来越高,那么初始计算出的定位就是错误的。// 解决方法:设置 min-heightmin-height: 100%;display: flex;flex-direction: column;
}.tab-navs {display: flex;// 设置粘性定位position: sticky;top: 0;z-index: 99999;
}.tab-nav {flex: 1;display: flex;flex-direction: column;align-items: center;padding: 20rpx 0;
}.tab-label {color: #333333;white-space: nowrap;
}.active-tab-label {color: #FF4A2F;
}.tab-divider {width: 40rpx;height: 5rpx;background-color: #FF4A2F;margin-top: 10rpx;
}.tab-panel {flex: 1;
}

http://chatgpt.dhexx.cn/article/QJXF3Rrg.shtml

相关文章

微信小程序富文本标签rich-text

前言&#xff1a; 做项目过程中&#xff0c;经常遇到需要在小程序中展示用富文本编辑器生成的内容。包含着各种HTML标签和样式。这就需要用到rich-text组件。 具体用法&#xff1a; 1、index.wxml文件&#xff1a; // nodes属性接收富文本内容&#xff0c;可以是字符串&…

微信小程序开发之——音乐播放器-实现标签页切换

一 概述 本节介绍点击标签切换页面&#xff0c;包含以下内容&#xff1a; 点击tab标签卡切换content要显示的内容区域当tab被选中时&#xff0c;高亮显示 二 效果图 三 点击tab标签卡切换content要显示的内容区域 3.1 切换功能说明 切换标签页有两种方式&#xff1a; 直接…

微信小程序radio 标签 使用

记录radio 标签,主要是之前有一个项目 ui设计 选中的在后面刚开始以为需要自定义之类的 后台自己随便弄了下,感觉只需要把文字放在前后即可 radio 标签 代码 wxml <view> <radio-group class"radio-group" bindchange"radioChange"><la…

小程序3D标签云

微信小程序实现3D标签云 在网上查找了许多3d标签云的案列&#xff0c;一般都是用原生和jquery写的&#xff0c;然后参考 https://www.cnblogs.com/axes/p/3501424.html这篇文章 在小程序里面实现标签云&#xff0c;具体代码如下 wxml // An highlighted block <view class…

小程序基础使用

目录 一、简介 1.微信小程序与APP的区别 2.微信小程序的开发 二、小程序开发介绍 1.pages js文件 json文件 wxml文件 wxss文件 2.app.js 3.app.json 4.app.wxss 5.json文件 三、微信小程序的配置 1.全局配置 2.局部配置 四、新建页面路由 1.新建文件夹 2.新建…

微信小程序实现tab标签页的切换及动态的选中下划线移动

微信小程序实现tab标签页的切换及动态的选中下划线移动 注意&#xff1a;当前是横向切换&#xff0c;纵向切换请点击&#xff1a;纵向切换tab 效果演示 代码片段 代码片段链接如下&#xff1a; 微信小程序代码片段 可直接点击代码片段路径观看完整演示。 完整代码 wxml如下 …

微信小程序中使用富文本标签解析

通常情况下后台管理系统都配备了富文本编辑器&#xff0c;所以当数据传入前端的时候需要解析才能够正常使用。 在实际的开发中我们会遇到以下的情况&#xff0c;甚至是更复杂的含有图片和样式等的文本内容。 此时我们就需要借助富文本标签来解析渲染了。如下&#xff1a; 这里…

微信小程序多选标签的实现(单选或者多选)

暑假留在社团跟别人一起开发一个校园小程序&#xff0c;如今也基本快开发完成了&#xff0c;整理一下日后可能用到的小组件。 类似于上图&#xff0c;下方的待选项为一个组件&#xff0c;根据父组件传入传入的参数决定是否为多选。 父组件的HTML代码如下 <view class"…

微信小程序image图片标签(超详细)

微信小程序image图片标签&#xff08;超详细&#xff09; 前言&#xff1a; 因为微信小程序静态打包的图片大小不可超过2m&#xff0c;故应该采取将需要用到的图片上传到网络&#xff0c;通过其链接来操作图片 推荐图床&#xff1a; 路过图床 image{ width: 300px; height…

微信小程序 多标签选择和添加标签

与我之前相关的一个标签的博客&#xff08;时间选择标签&#xff09;&#xff1a; https://blog.csdn.net/weixin_42418774/article/details/98747230 今天我来说说进阶标签的选择和添加标签&#xff1a; 首先我们看到wxml页面布局&#xff1a; wxml:<view classbtn_view…

微信小程序——常用属性及标签

微信小程序 最近在学习小程序开发&#xff0c;在学习的过程中感受到了内容之多&#xff0c;这里总结了一些小程序开发的一些常用属性与方法&#xff0c;更加具体的还得通过打开微信开放文档进行学习&#xff0c;在学习的过程中多打demo才是最好的学习方式啊&#xff0c;再好的文…

微信小程序的标签及常见样式

view 类似div 块状元素 可设置 宽高! fix-direction:row 横向布局 fix-direction:column 纵向布局 横向滑动 标签组件: swiper和swiper-item(单个页面) 一般都是照片! 视屏和音频都可不行,上传代码包大小有限制! swiper组件常用属性: indicator-dots boolean fals…

登录测试用例设计

功能性用例设计点&#xff1a; 1. 输入已注册的用户名和正确的密码&#xff0c;验证是否成功登录 2. 输入已注册的用户名和不正确的密码&#xff0c;验证是否成功失败&#xff0c;且提示信息正确 3. 输入未注册的用户名和任意密码&#xff0c;验证是否登录失败&#xff0…

通用的测试用例编写大全(登录测试/web测试等)

目录 登录 网上资料&#xff1a; 一、基本功能测试&#xff1a; 二、页面测试&#xff1a; 三 、安全测试&#xff1a; 四、性能测试&#xff1a; 五、其它测试&#xff1a; WEB网站测试 一、输入框&#xff1a; 二、提交/确定按钮&#xff1a; 三、后退按钮&#xff…

软件测试实例:登录功能怎么设计测试用例

软件测试到底怎么设计测试用例&#xff1f;测试用例需要设计那些方面的环节&#xff1f;带着问题小编为你分享软件测试实例&#xff0c;登录功能怎么设计测试用例。 明确具体需求&#xff1a; 有一个登录页面&#xff0c;有一个账号和一个密码输入框, 一个提交按钮。 此题的考…

【转载】登录页面测试用例

登录模块测试用例整理&#xff1a; 登录模块 界面UI测试 1.布局是否合理&#xff0c;输入框&#xff0c;按钮对齐方式 2.输入框和按钮的高度&#xff0c;长度是否符合要求 3.界面的设计风格是否与UI的设计风格统一 4.界面的文字简洁易懂&#xff0c;没有错别字 功能测试 1.用户…

登录的测试用例设计点

在看了一个有关登录的一个课程之后&#xff0c;发现自己以前对登录测试的用例设计简直是井底之蛙&#xff0c;在跟领导聊天之后一致认为可以就这一课文章进行一个整理概括&#xff0c;加以完善&#xff0c;还望大家多多提意见&#xff0c;有借鉴到的内容还望见谅&#xff0c;本…

kubeadm 更改NodePort端口范围

kubeadm 更改NodePort端口范围 kubernetes默认端口号范围是 30000-32767 &#xff0c;如果期望值不是这个区间则需要更改。 一、找到配置文件里&#xff0c;一般的在这个文件夹下&#xff1a; /etc/kubernetes/manifests/ 二、找到文件名为kube-apiserver.yaml 的文件&#xff…

Spark2自定义Driver和Executor端口范围

文章目录 1.配置端口范围2.配置文件修改3.集群验证 组件版本Ambari2.7.3HDP3.1.0.0-78Spark22.3.2 Spark 的 Driver 和 Executor 之间通讯端口是随机的&#xff0c;Spark 会随选择 1024~65535&#xff08;含&#xff09; 之间的端口&#xff0c;因此在集群节点之间需要关闭防火…

FTP防火墙数据通道端口范围无法设置

云服务器通过IIS搭建FTP如何设置防火墙端口&#xff0c;而FTP被动模式默认会有一个随机端口范围。 通常这个服务如果是在本地没有什么影响。但如果在云服务器上搭建。如果不放通这些全部的随机端口范围。就会导致间歇性无法访问FTP目录。 1.数据端口显示灰色&#xff0c;网上看…