首页 > 编程语言 >小程序上实现tab标签的变化

小程序上实现tab标签的变化

时间:2023-12-04 17:44:38浏览次数:29  
标签:ipsum elit sit 标签 程序 Dolores consectetur tab nobis

  • 小程序上想要实现成点击标签跳转某标签,在标签内滚动时随着超过滚动内容 tab 选中态变化。
  • 借助了 @vant/weapp 框架

index.wxml

    <view class="list-page">
        <van-tabs sticky active="{{ active }}"  bind:click="onHangeActive" bind:scroll="onScrollHeight" >
            <van-tab title="户型 {{house}}"  data-type="house"></van-tab>
            <van-tab title="周边 {{periphery}}" data-type="periphery"></van-tab>
            <van-tab title="详情 {{detail}}"   data-type="detail"></van-tab>
            <van-tab title="留言 {{message}}"data-type="message"></van-tab>
            <view class="house common-box ">
                户型1 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                户型2 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                户型3 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <view></view>
                户型4 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
            </view>
            <view class="periphery common-box">
                周边1 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                周边2 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                周边3 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
            </view>
            <view class="detail common-box">
                详情1 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                详情2 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                详情3 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <view></view>
                详情4 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                详情5 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                详情6 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
            </view>
            <view class="message common-box">
                留言1 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                留言2 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <text>\n</text>
                留言3 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
                <view></view>
                留言4 Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores quam, beatae totam vel ab quas aut. Aliquid vero alias, ex distinctio sit quos ipsum autem mollitia consectetur sed, repudiandae nobis.
            </view>

        </van-tabs>

    </view>

index.ts

    Page({

        /**
        * 页面的初始数据
        */
        data: {
            active: 0,
            house: "",
            periphery: "",
            detail: "",
            message: "",
            tabList: [
            '户型1',
            '户型1',
            '户型3',
            '户型4'
            ]
        },

        /**
        * 生命周期函数--监听页面加载
        */
        onl oad() {
            wx.setNavigationBarTitle({
                title: '新demo'
            })
            this.onViewHeight('.house', 'house');
            this.onViewHeight('.periphery', 'periphery');
            this.onViewHeight('.detail', 'detail');
            this.onViewHeight('.message', 'message');

        },
        /**
        * 获取区域位置信息
        * @param sel 元素class
        * @param valueKey  绑定top值
        */
        onViewHeight(sel: any, valueKey: any) {
            wx.createSelectorQuery().select(sel).boundingClientRect((res: any) => {
                this.setData({
                    [valueKey]: res.top - 44
                })
            }).exec()
        },
        // 点击切换tab
        onHangeActive(e: any) {
            const { index, } = e.detail;
            this.setData({
                active: index
            })
            const type = index === 0 ? '.house' : index === 1 ? '.periphery' : index === 2 ? '.detail' : '.message';
            // 滚动到指定位置
            // const tmp:any =  this.data.detail
            wx.pageScrollTo({
                selector: type,
                // scrollTop: tmp
                offsetTop: -50,
                duration: 0
            })

        },
        onScrollHeight(e: any) {
            const { scrollTop } = e.detail;
            if(scrollTop) {
                const { active, periphery,detail,message} = this.data;
                let activeTmp = active;
                if(scrollTop < +periphery - 44 ) {
                    activeTmp = 0;
                }else if( scrollTop >= +periphery - 44 && scrollTop < +detail - 44 ) {
                    activeTmp = 1;
                }else if( scrollTop >= +detail - 44 && scrollTop < +message - 44 ) {
                    activeTmp = 2;
                }else if( scrollTop >= +message - 44 ) {
                    activeTmp = 3;
                }
                this.setData({
                    active: activeTmp
                })
            }
        },
        /**
        * 生命周期函数--监听页面初次渲染完成
        */
        onReady() {

        },

        /**
        * 生命周期函数--监听页面显示
        */
        onShow() {

        },

        /**
        * 生命周期函数--监听页面隐藏
        */
        onHide() {

        },

        /**
        * 生命周期函数--监听页面卸载
        */
        onUnload() {

        },

        /**
        * 页面相关事件处理函数--监听用户下拉动作
        */
        onPullDownRefresh() {

        },

        /**
        * 页面上拉触底事件的处理函数
        */
        onReachBottom() {

        },

        /**
        * 用户点击右上角分享
        */
        onShareAppMessage() {

        }
    })

index.wxss

    .common-box {
        padding: 10px;
        box-sizing: border-box;
    }
    .house {
        background-color: aquamarine;

    }
    .periphery {
        background-color: burlywood;
    }
    .detail {
        background-color: cornsilk;
    }
    .message {
        background-color: rgb(152, 141, 224);
        height: 100vh;
    }

index.json

    {
        "navigationBarTitleText": "demo",
        "usingComponents": {
            "van-tab": "@vant/weapp/tab/index",
            "van-tabs": "@vant/weapp/tabs/index"
        }
    }

标签:ipsum,elit,sit,标签,程序,Dolores,consectetur,tab,nobis
From: https://www.cnblogs.com/DCL1314/p/17875539.html

相关文章

  • Linux后台跑程序的方法总结
    当使用ssh进行远程代码运行时,控制端电脑通常不能出现任何意外。然而,运行深度学习程序通常需要数小时或数天的时间,这意味着我们的IDE不能关闭。一旦出现非人为因素(如断电、断网或IDE卡死关闭),远程程序也会中断。因此,将程序灵活地运行在服务器上,不受控制端因素的影响至关重要。第一......
  • 98、swift--- tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPat
    作用:复用cell.可以用标识符从表视图中获得可重用单元格.for:indexPath通过指定单元格位置获得可重用单元格,不需要判断.用于dequeue(出队)一个可复用的cell,用于在UITableView或UICollectionView中显示。这个方法接收两个参数:withIdentifier:一个字符串,表示要dequeue的......
  • 【毕设精选】基于微信小程序的校园跑腿+后台管理系统
    基于微信小程序的校园跑腿+后台管理系统前言我的优势自己的网站自己的小程序(小蔡coding)有保障的售后福利需求分析性能分析系统设计管理员功能模块学生功能模块图跑腿者功能模块图数据库ER图学生信息实体属性图跑腿者信息实体图流程图登录流程部分功能展示学生发起跑腿请求订单管理......
  • 【毕设精选】基于微信小程序的相关系统
    小程序前言......
  • 基于微信小程序的餐厅点餐系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言运行环境说明用户微信端的主要功能有:管理员的主要功能有:具体实现截图详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利代码参考论文参考源码获取前言......
  • 【全栈第二课】微信小程序快速入门
    前言笔记大部分来自黑马程序员提供的ppt,部分来于自己总结一、起步简介小程序与普通网页开发的区别注册账号和微信开发者工具注册https://mp.weixin.qq.com/主体类型为个人开发工具https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html微信开发者工具页面组成小......
  • 知识付费在线教育云课堂公众号微信抖音小程序h5开发
    知识付费在线教育云课堂公众号微信抖音小程序h5开发知识付费在线教育云课堂公众号、微信、抖音、小程序、H5开发功能介绍如下:在线直播:提供师生互动、实时答疑、在线讲解等功能,让学生能够通过云课堂平台实时参与课程,提高学习效果。视频课程:提供高质量的视频课程,学生可以随时随地观......
  • 基于微信小程序的宠物交易商城系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言运行环境说明用户的主要功能有:管理员的主要功能有:具体实现截图详细视频演示代码参考论文参考源码获取前言......
  • 校园代拿系统 微信小程序实现截图
    任务分配:首页,发布页,搜索页,候选订单详情页的前端框架搭建:姚乃鹏,彭磊我的发布页,我的任务页,发布订单详情页,接单任务详情页,搜索项详情页的前端框架搭建:周磊,姚乃鹏,刘绍洋个人页,我的投诉页,联系客服页,我的信誉度页前端框架搭建:任思正,包铭昊所有前端U......
  • 掌握这些,轻松管理BusyBox:inittab文件的配置和作用解析
    BusyBox是一个轻量级的开源工具箱,其中包含了许多标准的Unix工具,例如 sh、ls、cp、sed、awk、grep 等,同时它也支持大多数关键的系统功能,例如自启动、进程管理、启动脚本等等。而 inittab 文件则是BusyBox中的一个重要文件,掌握了 inittab 文件的作用及如何配置有助于更好......