JS实现导航栏楼层特效


Posted in Javascript onJanuary 01, 2020

本文实例为大家分享了JS实现导航栏楼层的具体代码,供大家参考,具体内容如下

知识点

1.多个事件有冲突的时候,需要设置flag判断是什么事件,进而进行后续操作。
2.楼层效果就是判断scrollTop和offsetTop的关系
3.引入工具库工具库

运行效果

导航与界面实现互动

JS实现导航栏楼层特效

JS实现导航栏楼层特效

代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    *{margin: 0;padding: 0;list-style: none;border:0;}
    html, body, ul{width: 100%;height: 100%;}
    #ul li{
      width: 100%;
      height: 100%;
      text-align: center;
      font-size: 30px;
      /*background-color: red;*/
      color: #fff;
    }

    #ol{
      width: 80px;
      background-color: #ccc;
      position: fixed;
      left: 50px;
      top: 200px;
      border: 1px solid #fff;
    }

    #ol li{
      text-align: center;
      line-height: 30px;
      border-bottom: 1px solid #fff;
      color: #fff;
      cursor: pointer;
    }

    #ol li.current{
      background-color: orangered;
    }
  </style>
</head>
<body>
  <!--导航-->
  <ol id="ol">
    <li class="current">第1层</li>
    <li>第2层</li>
    <li>第3层</li>
    <li>第4层</li>
    <li>第5层</li>
  </ol>
  <!--楼层-->
  <ul id="ul">
    <li>第1层内容</li>
    <li>第2层内容</li>
    <li>第3层内容</li>
    <li>第4层内容</li>
    <li>第5层内容</li>
  </ul>

<script src="../../00MyTools/MyTools.js"></script>
<script>
  window.addEventListener('load', function (ev) {
     // 1. 获取标签
    var ol = myTool.$('ol'), ul = myTool.$('ul');
    var ulLis = ul.children;
    var olLis = ol.children;

    // 是否是点击产生的滚动
    var isClick = false;

    // 2. 上色
    var colorArr = ['red', 'green', 'blue', 'purple', 'yellow'];
    for (var i = 0; i < colorArr.length; i++) {
      ulLis[i].style.backgroundColor = colorArr[i];
    }

    // 3. 监听导航点击
    for (var j = 0; j < olLis.length; j++) {
      var olLi = olLis[j];
      (function (index) {
        olLi.addEventListener('click', function () {
          isClick = true;
          for (var i = 0; i < olLis.length; i++) {
            olLis[i].className = '';
          }
          this.className = 'current';
          // document.documentElement.scrollTop = index * myTool.client().height;

          myTool.slowMoving(document.documentElement, {'scrollTop': index * myTool.client().height}, function () {
            isClick = false;
          });
        });
      })(j)
    }

    // 4. 监听滚动
    var roll = 0;
    window.addEventListener('scroll', function (ev1) {
      if(!isClick){
        // 4.1 获取头部滚动偏移的高度
        roll = Math.ceil(Number(myTool.scroll().top));

        // 4.2 遍历
        for (var i = 0; i < ulLis.length; i++) {
          // 4.3 判断
          if(roll >= ulLis[i].offsetTop){
            for (var j = 0; j < olLis.length; j++) {
              olLis[j].className = '';
            }
            olLis[i].className = 'current';
          }
        }
      }
    })
  });
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
Dec 04 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
May 17 Javascript
vue过渡和animate.css结合使用详解
Jun 14 Javascript
jQuery实现简单的手风琴效果
Apr 17 jQuery
深入探究angular2 UI组件之primeNG用法
Jul 26 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
ES6 Promise对象概念及用法实例详解
Oct 15 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
JS实现旋转木马轮播图
Jan 01 #Javascript
JS实现普通轮播图特效
Jan 01 #Javascript
javascript实现超好看的3D烟花特效
Jan 01 #Javascript
JavaScript工具库MyTools详解
Jan 01 #Javascript
javascript Canvas动态粒子连线
Jan 01 #Javascript
小程序新版订阅消息模板消息
Dec 31 #Javascript
小程序实现长按保存图片的方法
Dec 31 #Javascript
You might like
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
PHP实现冒泡排序的简单实例
2016/05/26 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
three.js 入门案例详解
2018/01/23 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
Pycharm Git 设置方法
2020/09/15 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
客服服务心得体会
2013/12/30 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
电子银行营销方案
2014/02/22 职场文书
《学棋》教后反思
2014/04/14 职场文书
小学领导班子对照材料
2014/08/23 职场文书
争先创优公开承诺书
2014/08/30 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
2015年社区科普工作总结
2015/05/13 职场文书