vue 点击平滑到指定位置并绑定页面滑动效果

1.html元素

写出对应的数据块(注意添加ref) 用于获取元素位置

<template>
  <div class="index-page" >
       <div class="top-head" ref="index">
          <img src="logo.png" style="height: 40px;margin-right: 20px;">
          <span v-for="(item,index) in meuns" @click="scrollingTo(index)" :style="index == meunIndex? 'border-bottom: 5px solid #2461FB;color:#2461FB':''">{{item}}</span>
          <div class="head-button">
            <button>登录</button>
            <button style="color: #2461FB;background: #ffffff;">注册</button>
          </div>
       </div>
       <div class="top-slogan">
           <div>产品与服务XX介绍</div>
           <span v-for="item in texts" >{{item}}</span>
           <button>立即注册 -></button>
       </div>
       <div class="information-block" style="margin-top: -200px;background: #ce4a92">
            <div class="title">产品与服务XX</div>
       </div>
        <div class="information-block">
          <div class="title">收益说明</div>
          <div class="title-xia">使您XX的现场XX显下降</div>
        </div>

      <div class="information-block" style="background: #c4ce93">
        <div class="title">功能亮点说明</div>
        <div class="title-xia">一旦使用XX,现场工艺XX力将急剧提高</div>
      </div>

    <div class="information-block">
      <div class="title">服务流程</div>
    </div>

    <div ref="productOverview" class="information-block" style="background: #ce7a7e">
      <div class="title">产品概览</div>
      <div class="title-xia">XX平台</div>
    </div>

    <div class="information-block" style="background: #599ece">
      <div class="title">专业可靠的XX服务商</div>
    </div>

    <div ref="edgeDevices" class="information-block" style="background: #cdce4c">
      <div class="title">XX设备</div>
      <div class="title-xia">通过XX托管服务</div>
    </div>
    <div ref="companyCase" class="information-block" style="background: #13ce66">
      <div class="title">公司案例介绍</div>
      <div class="title-xia">为XX产品与服务</div>
    </div>

  </div>
</template>

2.styley样式区域

给数据快添加样式以便更好体现效果

<style lang="scss" scoped>
  .top-head{
    position: fixed;
    display: flex;
    top: 0;
    width: 100%;
    background: rgba(255,255,255,0.7);
    padding: 10px 100px;
    z-index: 10;
  }
  .top-head span{
    line-height: 30px;
    padding: 10px 10px;
    margin: 0 10px;
    cursor: pointer;
  }
  .head-button{
    position: absolute;
    right: 100px;
    height: 60px;
    padding-top: 10px;
  }
  .head-button button{
    cursor: pointer;
    background: #2461FB;
    border-radius: 10px;
    border: none;
    color: #ffffff;
    padding: 8px 30px;
    margin-right: 10px;
    border: 2px solid #2461FB;
  }
  .top-slogan{
    background: #8afbee;
    background-size: 100% 100%;
    width: 100%;
    height: 800px;
    padding: 260px 100px;
  }
  .top-slogan div{
    padding: 30px 10px;
    font-size: 32px;
    font-weight: 800;
  }
  .top-slogan span{
    padding: 5px 10px;
    font-size: 16px;
    display: block;
    width: 500px;
  }
  .top-slogan button{
     background: #2461FB;
     border-radius: 10px;
     border: none;
     color: #ffffff;
     padding: 10px 30px;
     margin-top: 60px;
     cursor: pointer;
  }
  .information-block{
    margin: 0 100px 20px;
    border-radius: 20px;
    box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
    height: 1000px;
    background: #0a76a4;
  }
  .information-block .title{
    font-size: 24px;
    color: #000000;
    font-weight: 800;
    text-align: center;
    margin: 10px 0;
    padding-top: 20px;
  }
  .information-block .content{
    margin: 10px 10%;
    width: 80%;
  }
  .information-block .title-xia{
    font-size: 16px;
    color: #697382;
    text-align: center;
    margin: 10px 0;
  }
</style>

3.最后添加js代码

实现最终效果

<script>
  export default {
    name: 'index',
    data() {
      return {
        meuns:['首页','产品','案例','关于'],
        meunrefs:['index','productOverview','edgeDevices','companyCase'],
        meunIndex: 0,
      }
    },
    mounted() {
      // 监听页面滚动事件
      window.addEventListener("scroll", this.scrolling);
    },
    methods: {
      scrolling() {
        const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
        let meunScrolling = this.getScrollTop();
        for(let i in meunScrolling){
          if(scrollTop <= meunScrolling[i]){
            this.meunIndex = i;
            return;
          }
        }
        this.meunIndex = 3;
      },
      getScrollTop(){
        let tops = []
        for (let  i = 1;i < this.meunrefs.length;i++){
          let ref = this.meunrefs[i];
          let top = this.$refs[ref].getBoundingClientRect().top + window.scrollY - 120;
          tops.push(top);
        }
        return tops;
      },
      scrollingTo(num){
        let top = 0;
        if(num !== 0){
          let ref = this.meunrefs[num];
          top = this.$refs[ref].getBoundingClientRect().top + window.scrollY - 100;
        }
        window.scrollTo({top: top, behavior: "smooth"});
        setTimeout(()=>{this.meunIndex = num;},100)
      }
    },
    beforeDestroy() {
      window.removeEventListener("scroll", this.scrolling);
    },
  }
</script>

最终效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/616157.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《解锁数字化劳动合同签约:构建高效的电子合同签约平台》

随着数字化转型的推进&#xff0c;传统的纸质劳动合同签约方式已经无法满足现代企业对于效率和便捷性的需求。电子劳动合同签约平台应运而生&#xff0c;为企业和员工提供了一种更加高效、便捷的合同签署方式。本文将介绍电子劳动合同签约平台的业务架构&#xff0c;探讨其如何…

地图涟漪效果

参考API echarts图表集 useEcharts.js import { onBeforeUnmount, onDeactivated } from "vue"; // import * as echarts from "echarts";/*** description 使用 Echarts (只是为了添加图表响应式)* param {Element} myChart Echarts实例 (必传)* param …

python代码学习案例-用turtle库绘制爱心图形效果

Python爱心代码&#xff0c;我们可以使用多种方法&#xff0c;包括使用turtle库来绘制图形&#xff0c;或者使用字符打印来在控制台中显示爱心。 首先&#xff0c;确保你已经安装了Python&#xff0c;并且你的环境支持turtle库&#xff08;它通常是Python标准库的一部分&#…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 01

Week 01 of Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Week 01 of Neural Networks and Deep Learning[0] Welcome to the Deep Learning Spec…

Ansible常用变量【上】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 在Ansible中会用到很多的变量&#xff0c;Ansible常用变量包括以下几种&#xff1a; 1. 自定义变量——在playbook中用户自定义…

基于遗传优化的双BP神经网络金融序列预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的双BP神经网络金融序列预测算法matlab仿真&#xff0c;采用的双BP神经网络结构如下&#xff1a; 2.测试软件版本以及运行结果展示 MATLAB2022A版本…

用户登录后端:登录密码解密后用PasswordEncoder验证密码是否正确

前置知识: 前端登录加密看用户登录 PasswordEncoder加密看PasswordEncoder详解 项目中因为要判断用户登录密码是否正确&#xff0c;通过输入错误次数锁住用户 1.后端配置rsa私钥 #密码加密传输&#xff0c;前端公钥加密&#xff0c;后端私钥解密 rsa:private_key: xxxx2. 读…

HCIP_BGP综合实验

一&#xff1a;实验拓扑&#xff1a; 二&#xff1a;实验要求&#xff1a; 1、AS1中存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告; AS3中存在两个环回一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告&am…

JAVA课程设计

一&#xff1a;Java连接mysql数据库 1.1点击进入mysql jar包下载官网 MySQL :: MySQL Community Downloads 将下载好的压缩包进行解压 解压之后下图就是连接数据库所用到的jar包&#xff1a; 将jar包复制到IDEA所用的项目下&#xff0c;放置jar包的目录为lib&#xff0c;需要…

医院如何做好漏费管理?什么是控费系统?控费系统现在成熟吗?

在中国深厚的人情土壤之中&#xff0c;某些医院里的医技科室&#xff0c;宛如隐秘的灰色地带&#xff0c;悄然滋生着利用职务之便谋取私利的暗流。这些科室的医务人员&#xff0c;以低于医院明文规定的收费标准&#xff0c;私下里为熟识的患者提供检查服务&#xff0c;仿佛形成…

IM是什么意思?

IM&#xff08;即时通讯&#xff09;作为现代通讯领域的重要且普遍应用&#xff0c;已成为人们日常生活和工作中不可或缺的通信方式。随着科技的不断发展和互联网的普及&#xff0c;IM工具通过实时信息传递&#xff0c;将沟通变得更加迅速、便捷、高效。 IM的诞生极大地改变了…

探索全画面塑料焊接透光率检测仪的科技魅力

在精密工业和科研领域中&#xff0c;对材料的光学性能有着严格的要求。全画面塑料焊接透光率检测仪是一种先进的设备&#xff0c;它能够精确测量塑料焊接接头的透光率&#xff0c;确保焊接质量符合高标准。本文将详细介绍这一设备的特点、工作原理以及它在实际应用中的重要性。…

未授权访问:JBoss未授权访问漏洞

目录 1、漏洞原理  2、环境搭建 3、未授权访问 4、利用jboss.deployment getshell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬…

ppt转pdf的java实现

一、实现方式 java采用jacob包的功能&#xff0c;把ppt演示文稿转换为pdf。 支持文件格式&#xff1a;pptx,ppt 二、事先准备 1、依赖于office&#xff0c;需安装office办公软件 2、需要下载一个jacob-1.20-x64.dll的文件&#xff0c;放到java的bin目录下。 文件可以网上搜…

【DevOps】Linux 安全:iptables 组成、命令及应用场景详解

导读&#xff1a;全面掌握 iptables&#xff1a;从基础到实践 在 Linux 系统中&#xff0c;iptables 是一个非常强大的工具&#xff0c;它不仅是系统管理员用来构建和管理网络防火墙的首选工具&#xff0c;而且也是一个功能丰富的网络流量处理系统。无论是进行包过滤、监控网络…

二叉树进阶 --- 上

目录 1. 二叉搜索树的概念及结构 1.1. 二叉搜索树的概念 1.2. 二叉搜索树的结构样例 2. 二叉搜索树的实现 2.1. insert 的非递归实现 2.2. find 的非递归实现 2.3. erase 的非递归实现 2.3.1. 第一种情况&#xff1a;所删除的节点的左孩子为空 2.3.1.1. 错误的代码 2…

【工具篇】-什么是.NET

“.NET"&#xff1a;.NET Core是由Microsoft开发&#xff0c;目前在.NET Foundation(一个非营利的开源组织)下进行管理。.NET Core是用C#和C编写的&#xff0c;并采用MIT协议作为开源协议。 简单来说&#xff1a;就是开发框架。 .NET 又称 .NET 平台或 .NET 框架&#xf…

Container exited with a non-zero exit code 1

最近遇到运行yarn pi的时候遇到如下问题。 很明显是container出错了&#xff0c;但是错误没有提示的很清楚。然后去看nodemanager日志也是如此。这时候笔者第一个想到要去看container的执行日志。container具体的日志目录位置是通过YARN的配置文件&#xff08;如yarn-site.xml&…

JavaSE——集合框架一(1/7)-集合体系概述(集合体系结构,Collection集合体系)、Collection的常用方法(介绍,实例演示,代码)

目录 集合体系概述 集合体系结构 Collection集合体系 Collection的常用方法 介绍 实例演示 完整代码 集合体系概述 集合体系结构 集合是一种容器&#xff0c;用来装数据的&#xff0c;类似于数组&#xff0c;但集合的大小可变&#xff0c;开发中也非常常用。 为了满足…

sql注入之bool盲注

目录 盲注步骤 1、进入靶场 2、如下图所示输入&#xff1f;id1‘ 判断此时存在注入点 3、判断列数 ​编辑 4、开始盲注 普通的python脚本 代码思想 结果 二分查找python脚本 二分查找算法思想简介 二分查找与普通查找的主要差距 代码思想 代码 结果​编辑 下面以…