楼梯导航 港控/mmm° 2023-02-23 03:53 53阅读 0赞 # html部分 # <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> *{ margin: 0; padding: 0; } ul,li { list-style: none; } .top { width: 1200px; height: 1200px; border: 2px solid #f00; margin: 0 auto; } .floor { width: 1200px; height: 400px; border: 1px solid #000; margin: 20px auto; } .left-nav { display: none; position: fixed; left: 100px; bottom: 100px; width: 100px; border: 1px solid #000; } .left-nav li { width: 80px; height: 60px; background-color: #eee; margin: 10px; } .left-nav li.active{ background-color: #f00; } .footer { width: 1200px; height: 1000px; border: 1px solid #000; margin: 0 auto; } </style> </head> <body> <!-- top部分 --> <div class="top"> top </div> <!-- 楼层部分 --> <div class="book floor"> book </div> <div class="car floor"> car </div> <div class="elec floor"> elec </div> <div class="phone floor"> phone </div> <div class="computer floor"> computer </div> <div class="footer"> footer </div> <!-- 导航部分 --> <div class="left-nav"> <ul> <li class="active">book</li> <li>car</li> <li>elec</li> <li>phone</li> <li>computer</li> </ul> </div> <script src="../../JS/jquery-3.4.1.min.js"></script> <script src="./ele.js"></script> </body> </html> # js部分 # // 声明一个空数组用来存每个楼梯的高度值 let arr = []; function gettopArr(){ $('.floor').each(function(){ arr.push($(this).offset().top) }) } // 左边导航样式,先获取窗口的卷起高度,当高度大于头部高度时让左边的导航显示,否则隐藏 function leftNavStyle(){ let scrollTop = $(window).scrollTop(); if(scrollTop >= 500){ $('.left-nav').show() }else{ $('.left-nav').hide() } } // 窗口滚动时执行左边导航样式方法和滚动时让导航位置和右边楼梯位置相对应的方法 $(window).scroll(function(){ leftNavStyle(); scrollPage(); }) // 点击楼梯导航让楼团体跳转到相应位置,声明一个index记录点击的是第几个,点击时关闭窗口滚动,给html,body添加样式:卷起高度为当前点击楼梯导航索引值对应楼梯高度,并给这个导航添加样式其余的移除样式 function nav(){ $('.left-nav li').click(function(){ let index = $(this).index(); $(window).off("scroll"); $('html,body').animate({ scrollTop:arr[index] }) $(this).addClass('active').siblings().removeClass('active') }) } //页面滚动时让导航和楼梯对应,声明一个不变量记录窗口被卷起的高度,再声明一个变量cur用来记录导航索引,被卷起高度小于arr[0]也就是小于第一层楼梯开始高度时导航索引为0,否则循环遍历数组,高度大于等于这个数组小于等于这个数组+1时让导航等于i,终止所在层的循环。此时会出现一个问题:最后一个楼梯不会被遍历,因为他没有arr[i+1],再声明一个flag=true,当他循环到最后一个数组索引值时让导航索引值为arr.length-1也就是5-1=4 function scrollPage(){ let scrollTop = $(window).scrollTop(); let cur; let flag = true; if(scrollTop < arr[0]){ cur = 0; }else{ for(let i = 0;i<arr.length;i++){ if(scrollTop >= arr[i] && scrollTop < arr[i+1]){ cur = i; flag = false; break; } } if(flag){ cur = arr.length - 1; } } $('.left-nav li').eq(cur).addClass('active').siblings().removeClass('active'); } gettopArr(); nav(); 要引入jq
相关 爬楼梯 树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数 例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级 也可以第一次走两级,第 约定不等于承诺〃/ 2023年05月21日 08:57/ 0 赞/ 63 阅读
相关 楼梯导航 html部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 港控/mmm°/ 2023年02月23日 03:53/ 0 赞/ 53 阅读
相关 爬楼梯 爬楼梯 1、参考资料 https://leetcode-cn.com/problems/climbing-stairs/ https://segmentfault ╰+哭是因爲堅強的太久メ/ 2022年12月04日 07:36/ 0 赞/ 206 阅读
相关 走楼梯 走楼梯 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^\_^ 题目描述 小虎发现走楼梯的时候一次上一个台阶比 ﹏ヽ暗。殇╰゛Y/ 2022年08月10日 09:58/ 0 赞/ 208 阅读
相关 超级楼梯 超级楼梯 Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^\_^ 题目描述 有一楼梯共M级,刚开始时你在第一级 青旅半醒/ 2022年08月10日 05:51/ 0 赞/ 234 阅读
相关 爬楼梯问题 还记得当年找实习单位的时候,小米还有百度面试官问了这样同样的问题,只不过问的方式不一样,说到底就是这个递归问题,也可以说就一斐波那契数列: 问题描述:有n个台阶,每次只能走一 小鱼儿/ 2022年08月05日 01:17/ 0 赞/ 263 阅读
相关 爬楼梯 如果每次可以上一级台阶或者两级台阶,那么上 n 级台阶一共有多少种方案? \include<stdio.h> int main() \{ int n; int 冷不防/ 2022年07月14日 09:09/ 0 赞/ 574 阅读
相关 爬楼梯 爬楼梯 Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [Statistic][] Problem Desc 墨蓝/ 2022年07月12日 12:36/ 0 赞/ 294 阅读
相关 爬楼梯 1.知识点:递推 2.题意:如果每次可以上一级台阶或者两级台阶,那么上 n 级台阶一共有多少种方案 3.递推关系方程:a\[i\] = a\[i-1\] + a\[i- 傷城~/ 2022年05月30日 08:47/ 0 赞/ 272 阅读
相关 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 小鱼儿/ 2022年02月27日 15:44/ 0 赞/ 313 阅读
还没有评论,来说两句吧...