V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
love642285
V2EX  ›  问与答

想问一个前端侧边菜单导航的问题

  •  
  •   love642285 · 2022-03-08 17:34:29 +08:00 · 1070 次点击
    这是一个创建于 992 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬: 想问一下这种餐厅点菜的 h5 中,侧边栏根据滑动动态切换到下一个 tab 的功能是怎么实现的,就是滑动到下一个分类后,侧边菜单自动也切换到下一个 tab 45c00dc76a9e780f6dd138f91427afc.jpg f19d012c5807a0bd18e42cb5dc6dcab.jpg

    7 条回复    2022-03-08 19:48:10 +08:00
    keifer
        1
    keifer  
       2022-03-08 17:40:45 +08:00   ❤️ 2
    想到几个方案:
    1. 基于 Intersection_Observer_API 检测元素出现在 viewport: https://developer.mozilla.org/zh-CN/docs/Web/API/Intersection_Observer_API
    2. 基于 scroll 事件,先计算好每个项目的 scroll 长度,根据 scroll 事件的值来切换左侧 tab 菜单;
    3dwelcome
        2
    3dwelcome  
       2022-03-08 17:47:08 +08:00   ❤️ 1
    DIV 很早就有个 scrollIntoView 方法,能直接滚动到视区内,我一直用这个。

    但是不知道为什么,大部分网上教学都不用这个,而选用手动计算 scroll y 值。

    我也是很不理解。
    dogsHappyDay
        3
    dogsHappyDay  
       2022-03-08 17:48:26 +08:00
    @3dwelcome 大部分人都是 copy 来 copy 去的。
    love642285
        4
    love642285  
    OP
       2022-03-08 17:53:28 +08:00
    @3dwelcome 请问用 scrollIntoView 这个方法有什么思路可以解决这个问题呀
    3dwelcome
        5
    3dwelcome  
       2022-03-08 17:58:42 +08:00
    @love642285 你应该给一楼点赞,我这个是用户选侧边栏,内容区域跳转到分类里第一个菜品。

    一楼的 Intersection_Observer_API ,是第一个菜品在可视区内,给你一个回调函数,让你设置侧边栏的切换状态。
    agdhole
        6
    agdhole  
       2022-03-08 18:07:20 +08:00
    一楼的方法就可以了,这玩意和 markdown toc 标记效果差不多。
    但是也要看数据量,曾经遇到过巨量数据渲染的,这种滚动可能有性能问题。
    iNaru
        7
    iNaru  
       2022-03-08 19:48:10 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5669 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.