zoukankan      html  css  js  c++  java
  • 滑动页面到一定距离,导航栏固定在顶部

    前端页面展示时,并不是导航栏都在最上面,当导航面不在页面的最上面,而我们滑动页面时,滑动到导航栏,让导航栏固定在最顶部。并且在滑动到哪个部分导航栏就要被选中

     html代码:

    <html>   
        <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
            <title>主页</title>
            <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <div class="container" id="app">
                <div class="head">
                    <image src="image/top.png" style=" 100%;height: 430px;"></image>
                </div>
                <div :class="menuFixed == true ? 'isFixed' :''">
                    <div id="menu" class="menu">
                        <div @click="clickTap('1')" :class="menuNum=='1' ? 'menuItem' : ''"><a :class="menuNum=='1' ? 'menuItem' : ''" href="#a1">产品简介</a></div>
                        <div @click="clickTap('2')" :class="menuNum=='2' ? 'menuItem' : ''"><a :class="menuNum=='2' ? 'menuItem' : ''" href="#a2">技术与创新</a></div>
                        <div @click="clickTap('3')" :class="menuNum=='3' ? 'menuItem' : ''"><a :class="menuNum=='3' ? 'menuItem' : ''" href="#a3">产品优势</a></div>
                        <div @click="clickTap('4')" :class="menuNum=='4' ? 'menuItem' : ''"><a :class="menuNum=='4' ? 'menuItem' : ''" href="#a4">关于我们</a></div>
                    </div>
                    <div style="height: 10px; 100%;background-color: #eaeaea;opacity: 0.5;"></div>
                </div>
                <div id="a1">...</div>
                <div id="a2">...</div>
                <div id="a3">...</div>
                <div id="a4">...</div>
            </div>  
        </body>
    </html>                       

      

    css代码

     <style> 
         .container {
            width: 100%;
            height: 100%;
            margin-bottom: 15px;
        }
    
        .head {
            width: 100%;
            height: 430px;
            }
        .isFixed{
            position:fixed;
            width: 100%;
            height: 50px;
            background-color: #FFFFFF;
            top:0;
            left: 0;
            z-index:999;
        }
        .menu {
            width: 90%;
            margin-left: 5%;
            background-color: #FFFFFF;
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            margin-top: 15px;
            text-align: center;
        }
        .menuItem {
            border-bottom: 1px #4F64DB solid;
            color: #4F64DB;
        }
    
        a {
            color: #444444;
            text-decoration: none;
            font-size: 14px;
            font-family: PingFangSC-Medium, PingFang SC;
            font-weight: 500;
            line-height: 20px;
        }
    </style>        

    js代码:

    <script type="text/javascript">
    var app = new Vue({
      el: '#app',
      data: {
        menuNum: '0',
        menuFixed:false,
      },
      created() {
        console.log('index created function')
      },
      mounted() {
        console.log('index mounted function')
        window.addEventListener("scroll", this.handleScroll);//监听滑动事件
      },
      updated() {
        console.log('index updated function')
      },
      destroyed() {
        console.log('index destroyed function')
        window.removeEventListener('scroll', this.handleScroll) //销毁监听滑动事件
      },
       methods: {
         clickTap(num) {
          this.menuNum = num
        },
        handleScroll() {
             var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
             console.log(scrollTop) //滑动的长度
             var offsetTop = document.querySelector('#menu').offsetTop
             var offsetTop1 = document.querySelector('#a1').offsetTop
             var offsetTop2 = document.querySelector('#a2').offsetTop
          var offsetTop3 = document.querySelector('#a3').offsetTop
          var offsetTop4 = document.querySelector('#a4').offsetTop
          if (scrollTop > offsetTop) {
                this.menuFixed = true
                    console.log("页面高度大于执行操作")
              } else {
            this.menuFixed = false
                 console.log("页面高度小于执行操作")
              }
              if (scrollTop > offsetTop1) {
            this.menuNum = '1'
            console.log("滑到产品简介")
          } else {       
            console.log("nothing")
          }
          if (scrollTop > 947) {
            this.menuNum = '2'
            console.log("滑到技术与创新")
          } else {
            console.log("nothing")
          }
          if (scrollTop > 1300) {
            this.menuNum = '3'
            console.log("滑到产品优势")
          } else {
          console.log("nothing")
          }
          if (scrollTop > 1900) {
            this.menuNum = '4'
            console.log("关于我们")
          } else {
            console.log("nothing")
          }
        },
      }
    })
    
    </script>

     效果图如下:

    (1)

     (2)

    (3)

  • 相关阅读:
    XML的学习
    使用WEB应用时后台发生的事
    企业级应用与互联网应用的区别
    学习JAVA EE的目标
    关于AngularJS的学习报告
    在线进销存软件
    Gridview 实现列表全选、自动选择下级item的功能
    python 计算roc程序报错ValueError: bad input shape (5313, 2)
    pandas保存为hdf格式更高效
    Linux 安装
  • 原文地址:https://www.cnblogs.com/huangqihui/p/13914550.html
Copyright © 2011-2022 走看看