向下滚动时,滚动 100vh 到底部

2024-02-12

我想达到同样的效果http://www.squaredot.eu/#Intro http://www.squaredot.eu/#Intro

因此,如果我向下滚动,正文必须滚动 100vh 到底部。而且如果向上滚动,主体必须向上滚动 100vh。我尝试了一些东西,但没有成功。

HTML:

<!DOCTYPE html>
<html>
<head>
    <title> Log In </title>
    <link href="main.css" rel="stylesheet" type="text/css">
</head>
    <body>
        <div id="e1"></div>
        <div id="e2"></div>
        <div id="e3"></div>
        <div id="e4"></div>
        <div id="e5"></div>
    </body>
</html>

CSS:

body, html {
  height: 100%;
  margin: 0;
  padding: 0;
}

#e1 {
    width: 100%;
    height: 100vh;
    background-color: red;
}

#e2 {
    width: 100%;
    height: 100vh;
    background-color: green;
}

#e3 {
    width: 100%;
    height: 100vh;
    background-color: yellow;
}

#e4 {
    width: 100%;
    height: 100vh;
    background-color: blue;
}

#e5 {
    width: 100%;
    height: 100vh;
    background-color: orange;
}

脚本语言

document.addEventListener('scroll', function(e) {
    var currScroll = document.body.scrollTop;
    document.body.scrollTop = calc(~"currScroll + 100vh");
 }

);

一种解决方案可能是使用 CSS 转换(就像您链接的网站正在做的那样)。

将其添加为 css:

body {
    transform: translate3d(0px, 0px, 0px);
    transition: all 700ms ease;
}

这作为 javascript

var pageHeight = window.innerHeight;

document.addEventListener('scroll', function(){
  document.body.scrollTop = 0;
});

document.addEventListener('wheel', function(e) {
  //console.log(e.deltaY);
  if(e.deltaY > 0) {
    scrollDown();
  } else {
    scrollUp();
  }
 }
);

function scrollDown() {
  document.body.style.transform = 'translate3d(0px, -'+ pageHeight + 'px, 0px)';
}

function scrollUp() {
  document.body.style.transform = 'translate3d(0px, 0px, 0px)';
}

它仅适用于元素 1 和 2,但它只是一个开始,您可以学习如何实现其他步骤!

工作示例在这里:https://jsbin.com/titaremevi/edit?css,js,输出 https://jsbin.com/titaremevi/edit?css,js,output


UPDATE:

这是完全有效的解决方案:

var pageHeight = window.innerHeight;
var isAnimating = false;
document.body.style.transform = 'translate3d(0px,0px,0px)';

document.addEventListener('scroll', function(e){
  document.body.scrollTop = 0;
});
document.addEventListener('wheel', wheelListener);

function wheelListener(e) {
  if(e.deltaY > 0) {
    scrollPage(-pageHeight);
  } else {
    scrollPage(+pageHeight);
  }
}

function scrollPage(scrollSize) {
  if(isAnimating){
    return;
  }
  isAnimating = true;
  var yPos = getNewYPos(scrollSize);
  document.body.style.transform = 'translate3d(0px,'+ yPos + ',0px)';
}

function getNewYPos(add){
  var oldYPos = document.body.style.transform.split(',')[1];
  oldYPos = parseInt(oldYPos.replace(/px/,''));
  var newYPos = oldYPos + add;
  if(newYPos > 0){
    isAnimating = false;
  }
  return Math.min(0, newYPos) + 'px';
}


document.body.addEventListener('transitionend', function(){
  setTimeout(function(){ isAnimating = false; }, 500);
  document.addEventListener('wheel', wheelListener);
})

你可以在这里看到它的工作原理:https://jsbin.com/foxigobano/1/edit?js,输出 https://jsbin.com/foxigobano/1/edit?js,output

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向下滚动时,滚动 100vh 到底部 的相关文章

  • 如何打开新选项卡并更改当前页面

  • 检测单选按钮/复选框状态的变化

    我需要可靠地检测页面上单选按钮 复选框的状态变化 以便查看表单是否被修改 现在 这是一个完全独立的脚本 我无法修改任何控制表单的内容 目前 我只能看到两种方法 onchange事件处理程序 有助于处理文本框 文本区域和选择 但不会针对复选框
  • 将 Regex 对象分配给 html 输入模式

    我需要以编程方式将正则表达式对象分配给输入元素模式属性 以下是我当前的实现 var regex d 5 element attr pattern regex toString slice 1 1 有没有更好的方法来做到这一点而不需要字符串操
  • 如何将值发布到输入框中?

    Intro I would like to get the current time after clicking at click and POST the value into input text box Note 假设包含引导样式表
  • 获取被调用的 javascript 文件的查询字符串

    是否可以在调用的 javascript 文件上使用 javascript 获取查询参数 如下所示 in html in file js console log this location query 这是否可能以某种方式实现 或者我必须使用
  • Javascript 将对象推送为克隆

    我将 d3 用于交互式网络应用程序 我需要绑定的数据在交互过程中发生变化 并且由 JSON 变量中的一些选定对象组成 为此 我在 JSON 变量上使用了映射 并进行了一些查询来选择适当的对象 对象被推送到列表中 并且该列表被绑定为新数据 我
  • 如何将 Ajax.BeginForm MVC 助手与 JSON 结果一起使用?

    我正在尝试使用 ASP NET MVC Ajax BeginForm 帮助程序 但不想在调用完成时使用现有的内容插入选项 相反 我想使用自定义 JavaScript 函数作为回调 这可行 但我想要的结果应该以 JSON 形式返回 不幸的是
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • 如何显示接下来的三个图像单击加载更多按钮

    我需要一个加载更多按钮来显示图像 页面加载时 我显示 3 个图像 单击 加载更多 按钮后 接下来的 3 个图像将显示在屏幕上 我尝试了下面的代码 但它不起作用 你能帮我解决这个问题吗 function item slice 0 2 show
  • Angular2:动态同步http请求

    Goal 发出一系列同步 http 请求并能够将它们作为一个可观察流进行订阅 示例 不工作 let query arr test1 test2 test3 function make request query arr if query a
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • 在反应中访问回调内的 event.target

    我有以下课程片段 constructor props super props this timeout null search e gt clearTimeout this timeout this timeout setTimeout f
  • 了解 Document.createElement()

    我在用着GWT及其底层DOM能力 我基本上想要实现的是 Have a div包含一些文本的元素 其中一些文本将被包围span元素 span 元素可相互拖动并提供上下文菜单 New span元素可以由最终用户动态创建 它可能是这样的 在应用程
  • 如何在 React Native 中使用相同的 Firebase 数据库在两个应用程序之间进行通信?

    我有两个不同的应用程序使用相同的实时数据库 在第一个应用程序中 我发送的订单包含一些要保存在数据库中的数据字段 在另一个应用程序中 我只添加一个侦听器 firebase database ref userOrder currentUser
  • Three.js点击单个粒子

    In this example http jsfiddle net agqq96bq 2 您可以看到 2 个可点击的粒子 但它们都受到点击的影响 另外 我只想检测粒子上的点击 而不将它们过滤出场景 像这儿 if intersects len
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse

随机推荐

  • 为什么 Git 使用加密哈希函数?

    为什么 Git 使用SHA 1 http en wikipedia org wiki SHA 1 加密哈希函数 而不是更快的非加密哈希函数 相关问题 堆栈溢出问题为什么 Git 使用 SHA 1 作为版本号 https stackoverf
  • GitHub 从另一个存储库包含

    我是 github 的新手 我的机器上有一个 github 存储库 我想将另一个存储库 作为第三方 包含到我的存储库中 我相信我应该先做一个叉子 但如何将其包含在我的本地存储库中 我尝试过子模块但没有成功 Thanks git 子模块 ht
  • 如何管理 Perl 应用程序开发、构建和部署?

    我还没有想出一种令人满意的方法来管理 Perl 应用程序的开发 构建和部署 我想听听您如何解决这个问题和 或您希望在您现在没有的应用程序构建系统中拥有什么 请描述您的应用程序类型 它是一个 Web 应用程序 它是否在服务器上运行 或者您是否
  • webview中的字体没有改变

    Typeface hnr Typeface createFromAsset this getAssets HelveticaNeueLTStd Md otf html table tr td align left td tr table
  • 用于检测变量更改的 Java 事件侦听器

    我似乎无法在任何地方找到我的问题的答案 是否有任何事件侦听器可以检测布尔值或其他变量的变化 然后对其采取行动 或者是否可以创建自定义事件侦听器来检测这一点 请我似乎无法在任何地方找到解决方案 我发现这个网站 http www example
  • GroupLayout:值得学习吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对java 特别是swing 比较陌生 最近一直在制作一些相当简单的应用程序 边学习边学习 最新的有很多表单组件 例如 JLabels JTe
  • 登录 Microsoft AD 后 Request.IsAuthenticated 始终为 false

    我有一个 ASP NET 4 5 1 MVC WebAPI 项目 它使用 SSO 针对 Microsoft 进行身份验证 成功登录 Microsoft 后 我 的 HomeController 上仍然有 Request IsAuthenti
  • 如何在文本区域中使用不同的字体颜色?

    我希望在输入特定关键字时文本区域中的字体颜色发生变化 就像在 Visual Studio 中一样 我没有在任何地方见过这个 所以我不知道这是否可以用 HTML 和 JavaScript 实现 有人见过这样的东西吗 或者知道怎么写吗 Text
  • 如何使用包含正则表达式的测试路径

    我想检查文件 Test txt 是否存在于特定目录 文件夹名称为 16 位数字 中 我尝试了以下命令 Test Path C Users
  • 无法使用 Unity 找到名称空间“ServiceModel”

    我想在我的 Unity 应用程序中使用 WCF 服务 通过命名管道 因此 我包含以下两个命名空间 using System ServiceModel using System ServiceModel Channels 在Unity中运行我
  • Composer:删除一个包,清理依赖项,不更新其他包

    情况 假设我有一个由 Composer 安装的项目 其中包含两个软件包 php composer phar require squizlabs php codesniffer 2 0 phpmd phpmd 2 1 自动生成的compose
  • 如何解决“此翻译单元中未实现带有选择器的方法”?

    我收到这个错误 如下图所示 the showSingerInfo方法在父类中定义 我该如何解决这个警告 看起来 Clang 无法解析 showSingerInfo 方法的声明 我猜测 showSingerInfo 是翻译单元 类中的本地方法
  • 如何避免从 solr 检索整个存储字段

    我使用 sunspot 和 solr 作为 Rails 应用程序来搜索电子书内容 为了突出显示功能 我必须将 ebook content 设置为存储的文件 每次我查询 solr 的结果时 它都会发回有关该书的整个文档内容 其中使得查询非常慢
  • 在 Android 设置中防止“匹配的 Activity 可能不存在”

    大部分活动操作 用于启动各种设置活动 Settings http developer android com reference android provider Settings html类带有警告 在某些情况下 匹配的活动可能不存在 因
  • 如何使用正则表达式和 Java 计算文本中的音节

    我有文字作为String并需要计算每个单词的音节数 我尝试将所有文 本拆分为单词数组 然后分别处理每个单词 我为此使用了正则表达式 但音节模式并没有发挥应有的作用 请建议如何更改它以计算正确的音节数 我的初始代码 public int ge
  • ZipInputStream.getNextEntry 在某些 zip 文件上返回 null

    我有一个简单的代码来提取 zip 文件 它按预期工作得很好 但在测试过程中 我尝试使用一些 zip 文件 我从互联网下载的字体 图标和模板 来编写代码 以确保它应该提取任何 zip 文件已提供 但它不适用于某些 zip 文件 以下是重新生成
  • nginx 未知指令“上游”

    我使用 nginx 作为代理服务器将请求转发到我的 Gunicorn 服务器上 当我跑步时sudo nginx t c etc nginx sites enabled mysite我收到以下错误 emerg unknown directiv
  • Swift:为蓝牙中央管理器选择队列

    我正在开发一个应用程序 该应用程序将通过 BLE 与智能设备连接并与其通信 问题是 在哪个队列中处理蓝牙事件的最佳实践是 我读过很多教程 在所有教程中我发现了这一点 centralManager CBCentralManager deleg
  • 重命名存储库名称后更新origin

    我正在尝试将我的项目文件推送到我的存储库 但是当我这样做时 我会收到如下屏幕截图所示的错误 我之前在该项目文件中有一个存储库 然后将其删除 现在我在该项目文件中创建了另一个具有不同名称的存储库 但我现在收到这些错误 请告诉我应该做什么 将源
  • 向下滚动时,滚动 100vh 到底部

    我想达到同样的效果http www squaredot eu Intro http www squaredot eu Intro 因此 如果我向下滚动 正文必须滚动 100vh 到底部 而且如果向上滚动 主体必须向上滚动 100vh 我尝试