js实现淘宝右侧导航栏功能

简介: 本章和大家分享的是模拟淘宝右侧导航栏的一个小功能。左侧是商品内容,右侧是一个导航栏,当页面向下滚动的时候右侧导航栏也跟着移动

本章和大家分享的是模拟淘宝右侧导航栏的一个小功能。

左侧是商品内容,右侧是一个导航栏,当页面向下滚动的时候右侧导航栏也跟着移动

b735e825fb1942d6bd052b91c8b7e067.png

当黄色内容区域到达顶部的时候,右侧导航栏变为固定的

f98f4a443c1d47b49cce80addc2a8a1f.png

当黑色内容区到达顶部时,右侧导航栏的返回顶部按钮显示

b837918c1b024b5db07068be568b4e31.png

点击返回顶部内容区回到原来的位置,右侧导航栏也取消固定回到原来的位置。

具体实现:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      .slider_bar{
        position: absolute;
        width: 70px;
        height: 20px;
        border: 1px solid red;
        top: 500px;
        right: 0;
      }
      span{
        display: flex;
        border: 1px solid red;
      }
      .goBack{
        display: none;
      }
      .non{
        width: 500px;
        height: 200px;
        border: 1px solid red;
      }
      .header{
        width: 500px;
        height: 200px;
        background-color: aqua;
        margin-top: 0;
      }
      .banner{
        width: 500px;
        height: 500px;
        background-color: bisque;
      }
      .main{
        width: 500px;
        height: 1000px;
        background-color: black;
      }
    </style>
  </head>
  <body>
    <div class="slider_bar">
      <span class="yi">1</span>
      <span class="er">2</span>
      <span class="san">3</span>
      <span class="goBack">返回顶部</span>
    </div>
    <div class="non"></div>
    <div class="header"></div>
    <div class="banner"></div>
    <div class="main"></div>
    <script>
      var yi = document.querySelector('.yi');
      var er = document.querySelector('.er');
      var san = document.querySelector('.san');
      var sliderbar = document.querySelector('.slider_bar');
      var banner = document.querySelector('.banner');
      var bannerTop = banner.offsetTop;
      var sliderbarTop = sliderbar.offsetTop - bannerTop;
      var main = document.querySelector('.main');
      var goBack = document.querySelector('.goBack');
      var mainTOP = main.offsetTop;
      console.log(sliderbarTop);
      document.addEventListener('scroll', function(){
        if(window.pageYOffset >= bannerTop) {
          sliderbar.style.position = 'fixed';
          sliderbar.style.top = sliderbarTop + 'px';
        } else {
          sliderbar.style.position = 'absolute';
          sliderbar.style.top = '500px';
        };
        if(window.pageYOffset >= mainTOP){
          goBack.style.display = 'block';
        } else {
          goBack.style.display = 'none';
        };
      });
      goBack.addEventListener('click', function(){
        window.scroll(0,0);
      })
    </script>
  </body>
</html>
相关文章
|
21小时前
|
JSON 缓存 前端开发
JavaScript 新特性:新增声明命令与解构赋值的强大功能
JavaScript 新特性:新增声明命令与解构赋值的强大功能
|
3天前
|
SQL Web App开发 JavaScript
业务功能常用的JS代码片段
业务功能常用的JS代码片段
11 3
|
10天前
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架,它们各自拥有独特的核心功能和使用场景
【6月更文挑战第16天】Phaser是开源的2D游戏引擎,适合HTML5游戏,提供物理引擎、图像渲染和资源管理,适用于2D游戏,如消消乐。Three.js是基于WebGL的3D库,用于创建复杂的3D场景和应用,涵盖从游戏到可视化领域的多种用途。两者分别在2D和3D开发中展现强大功能,选择取决于项目需求。
21 8
|
12天前
|
JavaScript 前端开发
JS导出excel功能
JS导出excel功能
|
12天前
|
JavaScript Serverless
JS实现递归功能
JS实现递归功能
|
12天前
|
JavaScript
JS实现分页功能
JS实现分页功能
|
20天前
|
JavaScript 前端开发
|
21天前
|
JavaScript Shell
Vue.js功能实现博客
Vue.js功能实现博客
|
21小时前
|
前端开发 JavaScript 安全
解锁 JavaScript ES6:函数与对象的高级扩展功能
解锁 JavaScript ES6:函数与对象的高级扩展功能
|
4天前
|
JavaScript 安全 前端开发
JS实现复制功能
JS实现复制功能
5 0