返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序实现菜单左右联动效果
  • 678
分享到

微信小程序实现菜单左右联动效果

2024-04-02 19:04:59 678人浏览 薄情痞子
摘要

本文实例为大家分享了微信小程序实现菜单左右联动效果的具体代码,供大家参考,具体内容如下 原理 首先是获取数据,并且获取数据的长度(需要根据长度来计算元素的高度),通过遍历数据的内容通

本文实例为大家分享了微信小程序实现菜单左右联动效果的具体代码,供大家参考,具体内容如下

原理

首先是获取数据,并且获取数据的长度(需要根据长度来计算元素的高度),通过遍历数据的内容通过题目和元素个数的相加得到高度,当消失高度小于等于某个元素的高度就设定索引值给左边的菜单目录实现右边滑动左边联动,左边的菜单点击事件联动比较简单就不说

代码实现

wxml

<view class="menu">
        <view class="left-box">
            <scroll-view class="left_menu" scroll-with-animation  scroll-y="true" scroll-into-view="{{leftViewId}}">
                <text class="menu-item {{index==currentIndex?'menu-active':''}}" wx:for="{{navList}}" wx:key="this" data-id="menu{{index}}" data-i="{{index}}" bindtap="changeMenu">{{item.c_name}}</text>
            </scroll-view>
        </view>
        <view class="right-box">
            <scroll-view class="right_menu" scroll-y='true'  scroll-with-animation scroll-into-view="{{rightViewId}}"  bindscroll="getScroll" enable-flex>
                <view wx:for="{{navList}}" wx:key="this" class='pro-item' id="menu{{index}}">
                    <view class="right_menu_head">{{item.c_name}}</view>
                    <view class="list-box">
                        <view class="menu_list" wx:for-item='items' wx:for="{{item.list}}" wx:key="this">
                        <image src="{{items.url}}"></image>
                        <view>{{items.GoodsName}}</view>
                    </view>
                </view>
                </view>
            </scroll-view>
        </view>
</view>

wxss,这里使用的是less语法,vscode插件可编译

.menu{
    .left-box{
        width: 180rpx;
        border-right: 1px solid #dfdfdf;
        position: fixed;
        left: 0;
        z-index: 10;
        top: 370rpx;
        box-sizing: border-box;
        height: 90%;
        background: #f0f0f0;

        .menu-item{
            display: inline-block;
            width: 180rpx;
            height: 88rpx;
            font-size: 26rpx;
            line-height: 88rpx;
            background: #fff;
            text-align: center;
            border-bottom: 1px solid #dfdfdf;
        }

        .menu-active{
            background: #f0f0f0;
            border-left: 10rpx  solid #333999;
        }
    }
    
    .right-box{
        width: 74%;
        position: fixed;
        top: 360rpx;
        height: 77%;
        right: 0;
        border-left: 20rpx;
        box-sizing: border-box;
        margin-top: 20rpx;

        .right_menu{
            height: 100%;
            box-sizing: border-box;

            .pro-item{

                .right_menu_head{
                    height: 80rpx;
                    line-height: 80rpx;
                    font-size: 26rpx;
                    font-weight: 600;
                }

                &:last-child{
                    margin-bottom: 156rpx;
                }

                .list-box{
                    width: 100%;
                    // min-height: 380rpx;
                    display: flex;
                    flex-wrap: wrap;
                    background: #fff;
                    box-sizing: border-box;
                    border-radius: 10rpx;
                    font-size: 20rpx;

                    .menu_list{
                        width: 33.3%;
                        font-size: 20rpx;
                        padding: 20rpx 0;
                        text-align: center;
                        font-style: '微软雅黑';

                        image{
                            width: 100rpx;
                            height: 100rpx;
                        }

                        view{
                            color: #333;
                            text-overflow: ellipsis;
                            white-space: nowrap;
                            overflow: hidden;
                          }
                    }
                }
            }
        }
    }
}

js文件

data:{
    navList:[..],//数据
    currentIndex: 0,//左边对应的索引
    rightViewId: '',//点击事件右边的索引
}

getScroll(e) {//微信小程序中绑定滑动函数,每滑动一下都会触发
        let top = e.detail.scrollTop,
            h = 0,
            _this = this;


        for (let i = 0; i < this.data.navList.length; i++) {
            let dishSize = this.data.navList[i].list.length;//获取数据对应展示商品的JSON
            h += 38 + parseInt(dishSize / 3 * 80);//获取当前元素的高度,38是标题高度,80是元素高度

            if (top <= h) {//满足条件立刻停止循环,就会一直停留再当前索引,不满足当前就会自动到下一个菜单
                _this.setData({
                    currentIndex: i
                })
                break;
            }

        }

    },
    changeMenu(e) {
        console.log(this.data.heightArr, this.data.topArr);

        this.setData({
            currentIndex: e.currentTarget.dataset.i,
            rightViewId: e.currentTarget.dataset.id
        })

    }

展示图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 微信小程序实现菜单左右联动效果

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

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

猜你喜欢
  • 微信小程序实现菜单左右联动效果
    本文实例为大家分享了微信小程序实现菜单左右联动效果的具体代码,供大家参考,具体内容如下 原理 首先是获取数据,并且获取数据的长度(需要根据长度来计算元素的高度),通过遍历数据的内容通...
    99+
    2024-04-02
  • 微信小程序scroll-view实现左右联动效果
    微信小程序利用scroll-view实现左右联动,供大家参考,具体内容如下 点击左边的按钮时,右边可以跳动到指定的位置 首先要注意使用scroll-view竖屏滚动,需要给...
    99+
    2024-04-02
  • uni-app制作小程序实现左右菜单联动效果
    目录前言一、示意图二、实现步骤与思路讲解1.静态页面的布局2.模拟数据格式3.左侧菜单的点击效果4.右侧菜单的联动效果三、具体实现代码1.页面结构2.相关样式3.业务逻辑部分前言 今...
    99+
    2022-11-16
    uni-app左右菜单联动 uni-app菜单联动 uni-app左右联动 uniapp 小程序菜单
  • 微信小程序实现左右联动
    本文实例为大家分享了微信小程序实现左右联动的具体代码,供大家参考,具体内容如下 最近学校课程系统分析项目使用了微信小程序来进行搭建,在选择了点餐项目后,对主页进行实现时,想要实现像麦...
    99+
    2024-04-02
  • 微信小程序scroll-view实现左右联动
    本文实例为大家分享了微信小程序scroll-view实现左右联动的具体代码,供大家参考,具体内容如下 需求:项目中做了一个选择城市的需求,要求全国所有的省市区都按照中文首字母分类并排...
    99+
    2024-04-02
  • 怎么用uni-app制作小程序实现左右菜单联动效果
    这篇文章主要介绍“怎么用uni-app制作小程序实现左右菜单联动效果”,在日常操作中,相信很多人在怎么用uni-app制作小程序实现左右菜单联动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用uni-...
    99+
    2023-07-04
  • 微信小程序实现联动菜单
    最近为了实现课程设计,也做了一些前端的东西,今天想要做一个联动菜单来实现一些功能。实现了,也来做做笔记。 第1步:了解一下 左右侧菜单其实简单来讲就是把一个区域分成左右两个部分。关于...
    99+
    2024-04-02
  • 使用微信小程序实现滑动菜单效果
    使用微信小程序实现滑动菜单效果微信小程序作为一种快速开发并具有广泛应用的工具,为我们提供了多种实现滑动菜单效果的方法。本文将向您展示一种简单而实用的实现方式,帮助您在开发中轻松添加滑动菜单效果。准备工作在开始编码之前,我们需要先创建一个基本...
    99+
    2023-11-21
    微信小程序 实现 滑动菜单
  • 微信小程序左右滚动公告栏效果怎么实现
    要实现微信小程序的左右滚动公告栏效果,可以使用swiper组件和设置动画效果。1. 在小程序的wxml文件中,使用swiper组件来...
    99+
    2023-08-16
    微信小程序
  • 微信小程序实现点餐小程序左侧滑动菜单
    目录前言一、初识scroll-view二、左侧导航三、右侧滑动前言 最近在帮亲戚做一款微信的点餐小程序,以前从没有接触过小程序的我只能现做现卖。一边看文档一边实践尝试,在进行到点菜模...
    99+
    2024-04-02
  • 微信小程序中如何实现左右滚动公告栏效果
    这篇文章主要介绍微信小程序中如何实现左右滚动公告栏效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码如下<view class='notice-wrap&...
    99+
    2024-04-02
  • 微信小程序如何实现左右滑动
    这篇文章将为大家详细讲解有关微信小程序如何实现左右滑动,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目整体效果项目部分功能点解析主页图片左滑右滑对应按钮变化首先我们来聊...
    99+
    2024-04-02
  • 微信小程序左右滚动公告栏效果代码实例
    以下是一个微信小程序左右滚动公告栏的代码实例:1. 在微信小程序的wxml文件中,创建一个scroll-view组件用于显示公告:`...
    99+
    2023-08-16
    微信小程序
  • 微信小程序如何实现点餐小程序左侧滑动菜单
    这篇文章主要讲解了“微信小程序如何实现点餐小程序左侧滑动菜单”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序如何实现点餐小程序左侧滑动菜单”吧!效果图:一、初识scroll-view...
    99+
    2023-07-02
  • 实现微信小程序中的下拉菜单效果
    实现微信小程序中的下拉菜单效果,需要具体代码示例随着移动互联网的普及,微信小程序成为了互联网开发的重要一环,越来越多的人开始关注和使用微信小程序。微信小程序的开发相比传统的APP开发更加简便快捷,但也需要掌握一定的开发技巧。在微信小程序的开...
    99+
    2023-11-21
    下拉菜单 微信小程序 实现
  • 微信小程序如何实现CSS3动画下拉菜单效果
    这篇文章主要介绍了微信小程序如何实现CSS3动画下拉菜单效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序没有自带的下拉菜单组件,...
    99+
    2024-04-02
  • 微信小程序实现商品数据联动效果
    微信小程序实现商品数据联动 直接复制代码更改可以看出效果,然后根据自己想要进行调整 注: 以下商品图片用于测试,如有侵权请通知,会删除相关图片。 js部分: // pages/de...
    99+
    2022-11-13
    小程序商品数据联动 小程序联动
  • 微信小程序中怎么实现CSS3动画下拉菜单效果
    这篇文章主要介绍了微信小程序中怎么实现CSS3动画下拉菜单效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序中怎么实现CSS3动画下拉菜单效果文章都会有所收获,下面我们一起来看看吧。思路利用列表来存储...
    99+
    2023-07-04
  • Android实现顶部导航菜单左右滑动效果
    本文给大家介绍在Android中如何实现顶部导航菜单左右滑动效果,具体内容如下 第一种解决方案: 实现原理是使用android-support-v4.jar包中ViewPag...
    99+
    2022-06-06
    导航菜单 菜单 动效 Android
  • vue实现列表左右联动效果
    本文实例为大家分享了vue实现列表左右联动效果的具体代码,供大家参考,具体内容如下 先谈需求:左侧为分类列表,点击分类名右侧商品列表会滑动对应分类到顶部;右侧商品列表滑动到某一分类时...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作