javaScript蓝桥杯---传送门

目录

  • 一、介绍
  • 二、准备
  • 三、目标
  • 四、代码
  • 五、知识点
  • 六、完成


一、介绍

日常浏览网页的时候,我们会发现一个问题,当页面太长、内容太多的时候我们很难快速浏览到心仪的内容。为了解决这个烦恼,优秀的产品研发团队发明了一种类似传送门的功能,以便用户能通过它快速定位到感兴趣的内容。这个功能也被通俗地比喻为“电梯”。

本题需要在已提供的基础项目中使用 JS/jQuery 等知识完善代码,最终实现该功能。

二、准备

开始答题前,需要先打开本题的项目文件夹,目录结构如下:

├── effect.gif
├── index.html
├── css
├── images
└── js
    ├── index.js
    └── jquery-3.6.0.min.js

其中:

effect.gif 是最终实现的效果图。
index.html 是主页面。
css 是样式文件夹。
images 是素材图片文件夹。
js/index.js 是需要补充代码的 js 文件。
js/jquery-3.6.0.min.js 是 jQuery 文件。

在浏览器中预览 index.html 页面,显示如下所示:
在这里插入图片描述

三、目标

请在 js/index.js 文件中补全代码,最终实现传送门的功能。

具体需求如下:

  1. 点击页面侧边的顶部、中间或底部按钮,页面滚动到顶部、中间或底部对应的范围内。这三个范围的设定如下:
    • 顶部:滚动条距离页面顶部 0 ~ 960px(不包含 960)的范围。
    • 中间:滚动条距离页面顶部 960 ~ 1920px(包含 960,不包含 1920)的范围。
    • 底部:滚动条距离页面顶部大于等于 1920px 的范围。
  2. 当页面滚动到顶部、中间或底部位置时,对应的侧边按钮(即,顶部、中间或底部按钮)添加激活样式(即 .active-color),其余按钮样式变为默认(即 .default-color)。

完成后的效果见文件夹下面的 gif 图,图片名称为 effect.gif(提示:可以通过 VS Code 或者浏览器预览 gif 图片)。
在这里插入图片描述

四、代码

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>传送门</title>
    <link rel="stylesheet" type="text/css" href="./css/index.css" />
  </head>
  <body>
    <div id="top"></div>
    <div id="middle"></div>
    <div id="foot"></div>
    <div id="lift">
      <a class="default-color active-color" onclick="toFunction.call(this,0)"
        >顶部</a
      >
      <span class="line"></span>
      <a class="default-color" onclick="toFunction.call(this,960)">中间</a>
      <span class="line"></span>
      <a class="default-color" onclick="toFunction.call(this,2000)">底部</a>
    </div>
    <script type="text/javascript" src="./js/jquery-3.6.0.min.js"></script>
    <script type="text/javascript" src="./js/index.js"></script>
  </body>
</html>

css/style.css

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body {
  background-color: #f4f4f4;
}
a {
  cursor: pointer;
}
#top {
  width: 1000px;
  height: 960px;
  margin: 0 auto;
  background: url(../images/bg.png) no-repeat;
  background-size: cover;
}
#middle {
  width: 1000px;
  height: 960px;
  margin: 0 auto;
  background: url(../images/bg.png) no-repeat;
  background-size: cover;
  background-position: 0 -961px;
}
#foot {
  width: 1000px;
  height: 1020px;
  margin: 0 auto;
  background: url(../images/bg.png) no-repeat;
  background-size: cover;
  background-position: 0 -1921px;
}
#lift {
  width: 78px;
  height: 300px;
  background-color: white;
  position: fixed;
  right: 0;
  bottom: 100px;
  text-align: center;
  top: 50%;
  margin-top: -150px;
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
}
#lift a {
  width: 100%;
  height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
.line {
  display: block;
  width: 50%;
  height: 1px;
  margin: 0 auto;
  background-color: gainsboro;
}
.default-color {
  color: #333;
}
.active-color {
  color: #2e7eee;
}

js/index.js

$(window).scroll(function () {
  // 页面滚动到指定范围,对应的侧边按钮字体变色
  // TODO:请补充代码实现功能
});

/**
 * @param {Object} scrollTopVal:到达指定位置需要滚动的高度
 * 点击按钮,滚动到指定位置
 */
function toFunction(scrollTopVal) {
  // TODO:请补充代码实现功能
}

images/bg.png
在这里插入图片描述

五、知识点

  1. window.pageYoffset 可以获取scroll的y轴
  2. window.pageXoffset 可以获取scroll的x轴
  3. 本题已设置了scroll监听,如果用js原生 也有个scroll事件可以监听滚动
  4. window.scrollTo(x,y)可以瞬间移动scroll

六、完成

js/index.js

const list = document.getElementsByTagName("a");
$(window).scroll(function () {
  // 页面滚动到指定范围,对应的侧边按钮字体变色
  // TODO:请补充代码实现功能
  clearActive();
  if (0 <= window.pageYOffset && window.pageYOffset < 960) {
    list[0].classList.add("active-color");
  } else if (window.pageYOffset < 1920) {
    list[1].classList.add("active-color");
  } else {
    list[2].classList.add("active-color");
  }
});
function clearActive() {
  for (var i = 0; i < list.length; i++) {
    list[i].classList.remove("active-color");
  }
}
/**
 * @param {Object} scrollTopVal:到达指定位置需要滚动的高度
 * 点击按钮,滚动到指定位置
 */
function toFunction(scrollTopVal) {
  // TODO:请补充代码实现功能
  window.scrollTo(0,scrollTopVal)
}

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

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

相关文章

深度学习的各种卷积的总结

如果你听说过深度学习中不同种类的卷积&#xff08;比如 2D / 3D / 1x1 /转置/扩张&#xff08;Atrous&#xff09;/空间可分/深度可分/平展/分组/混洗分组卷积&#xff09;&#xff0c;并且搞不清楚它们究竟是什么意思&#xff0c;那么这篇文章就是为你写的&#xff0c;能帮你…

STM32单片机GPS北斗无线防丢定位超出距离报警系统NRF24L01

实践制作DIY- GC0136-GPS北斗无线防丢定位超出距离报警系统 基于STM32单片机设计-GPS北斗无线防丢定位超出距离报警系统 二、功能介绍&#xff1a; 主机&#xff1a;STM32F103CxT6系列最小系统板OLED显示器NRF24L01无线通讯模块GPS北斗双模定位模块蜂鸣器距离加减2个按键1个模…

BurpSuite2023测试越权漏洞

BurpSuite2023测试越权漏洞 BurpSuite安装创建项目 - 打开内置浏览器越权漏洞测试问题处理 BurpSuite安装 官网下载社区版并安装&#xff0c;下载地址&#xff1a;链接: https://portswigger.net/burp 安装成功后图标 创建项目 - 打开内置浏览器 打开BurpSuite&#xff0c…

为何要将行驶证转为Excel?在线怎么操作?需要注意些什么?

一、为何要将行驶证转为excel表格&#xff1f;有何好处&#xff1f; 将行驶证转为Excel一般是为了方便信息的整理和管理。将行驶证上的信息录入Excel表格中&#xff0c;可以实现快速搜索、排序和筛选等功能&#xff0c;避免了手动整理信息的繁琐和容易出错的问题。此外&#xf…

Lecture 17 Machine Translation

目录 Statistical MTNeural MTAttention MechanismEvaluationConclusion Machine translation (MT) is the task of translating text from one source language to another target language why? Removes language barrierMakes information in any languages accessible t…

chatgpt赋能python:Python如何从右往左取数

Python如何从右往左取数 在Python编程中&#xff0c;有时候需要从右往左获取列表、字符串等数据结构的元素&#xff0c;而不是从左往右。这样做的好处在于可以更快地访问最后几个元素&#xff0c;或者进行一些反向操作。本文将介绍Python中从右往左取数的方法。 索引与切片 …

JDBC Utils 详解(通俗易懂)

目录 一、前言 二、JDBCUtils说明 1.背景及起因 : 2.示意图 : 3.JDBCUtils类的定义 三、JDBCUtils应用 1.DML的应用 : 2.DQL的应用 : 四、总结 一、前言 第三节内容&#xff0c;up主要和大家分享一下JDBC Utils方面的内容。注意事项——①代码中的注释也很重要&#x…

性能测试loadrunner

目录 基本概念 性能工具jemeter代码调试 loadrunner实战代码笔记 使用Loadrunner的步骤 性能指标分析结果 基本概念 一、什么是性能&#xff1a; 性能&#xff1a;是用来描述产品除功能外的所具有的速度&#xff0c;效率和能力的综合能力评价。 二、什么是性能测试&…

leetcode61. 旋转链表(java)

旋转链表 leetcode61. 旋转链表题目描述 解题思路代码演示链表专题 leetcode61. 旋转链表 Leetcode链接&#xff1a; https://leetcode.cn/problems/rotate-list/ 题目描述 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例…

基于graalvm和java swing制作一个文件差异对比的原生应用,附源码

文章目录 1、DFDiff介绍2、软件架构3、安装教程3.1、编译为jar包运行3.2、编译为原生应用运行 4、运行效果图5、项目源码地址 1、DFDiff介绍 当前已实现的功能比较两个文件夹内的文件差异&#xff0c;已支持文件差异对比。 2、软件架构 软件架构说明 开发环境是在OpenJDK17&…

数据结构与算法之链表

目录 单链表概念单链表操作循环链表概念循环链表操作双向循环链表概念双向循环链表操作单链表 概念 单链表也叫单向链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指…

K-verse 合作伙伴访谈|与 Studio Dragon 一起进入韩剧元宇宙世界

穿越时空的韩剧元宇宙。 Studio Dragon 是全球排名第一的生活创作者 CJ ENM 的子公司&#xff0c;是引领韩剧的韩国代表性戏剧工作室&#xff0c;一个以无限故事内容让世界着迷的优质故事讲述者。 通过与 The Sandbox 的合作&#xff0c;我们将提供一种全新体验&#xff0c;让用…

C++——类型转换

目录 C语言中的类型转换 为什么C需要四种类型转换 1、static_cast 2、reinterpret_cast 3、const_cast 4、dynamic_cast 关于const的典型例题 分析下列结果的原因 原因 C语言中的类型转换 //类型转换int main() {int i 1;// 隐式类型转换double d i;printf("%d,…

Docker是什么、有什么用的介绍

文章目录 1.背景2. Docker 是什么&#xff1f;3.Docker 容器与虚拟机的区别4.Docker 的 6 大优势1、更高效地利用系统资源2、更快的启动时间3、一致的运行环境4、持续交付和部署5、更轻松迁移6、更轻松的维护和拓展 小结 知识搬运工&#xff1a; 原文出自&#xff1a; 原文链接…

一键生成代码

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

C++/C按照时间命名保存bin文件

背景 在Linux应用编程过程中&#xff0c;使用C或者C语言保存、读取bin文件是比较常见的需求。这里详细记录一下使用C保存bin文件&#xff0c;也可以使用C语言实现。 代码 C/C语言保存bin文件函数&#xff0c;C中也能使用 正确写入返回0&#xff0c;错误返回-1 // C 保存bi…

ASP.NET Core Web API入门:创建新项目

ASP.NET Core Web API入门&#xff1a;创建新项目 一、引言二、创建新项目三、加入Startup类&#xff0c;并替换Program.cs内容四、编辑Program.cs代码五、修改控制器的路由六、运行项目 一、引言 最近闲着&#xff0c;想着没真正从0-1开发过ASP.NET Core Web API的项目&#…

找不到xinput1_3.dll怎么办?xinput1_3.dll丢失的四个修复方法

在我们打开游戏的或者软件的时候&#xff0c;电脑提示“找不到xinput1_3.dll&#xff0c;无法继续执行此代码”怎么办&#xff1f;相信困扰着不少小伙伴&#xff0c;我再在打开吃鸡的时候&#xff0c;然后花了一上午的时候时间研究&#xff0c;现在终于知道xinput1_3.dll文件是…

中国电子学会2023年05月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)

2023-05 Scratch三级真题 分数&#xff1a;100 题数&#xff1a;38 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1. 关于变量&#xff0c;下列描述错误的是&#xff1f;&#xff08;A &#xff09;&#xff08;2分&#xff09; A.只能建一个变量 …

Visual Studio 2022 v17.6 正式发布

Visual Studio 17.6 正式发布&#xff0c;这个最新版本提供了一系列强大的工具和功能&#xff0c;旨在使你能够制作出最先进的应用程序。 提高生产力 通过 Visual Studio 2022&#xff0c;目标是帮助你在更短的时间内完成 IDE 内的所有开发任务&#xff0c;在这个版本中&…