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 相关文章推荐
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 Javascript
javascript中判断json的方法总结
Aug 27 Javascript
微信小程序 页面传参实例详解
Nov 16 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
Aug 08 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
js中null与空字符串&quot;&quot;的区别讲解
Jan 17 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
ant design pro中可控的筛选和排序实例
Nov 17 Javascript
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
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python 循环数据赋值实例
2019/12/02 Python
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
高中班长自我鉴定
2013/12/20 职场文书
公司离职证明范本
2014/01/13 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
初婚初育证明范本
2014/11/24 职场文书
优秀教师单行材料
2014/12/16 职场文书
中秋节寄语2015
2015/03/24 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers