当前位置: 首页 > 知识库问答 >
问题:

一页滚动网站-但如何禁用滚动直到动画已完成

霍浩皛
2023-03-14

我已经构建了一个单页应用程序,它有不同的位置固定的部分,在特定数量的滚动之后,在每一个部分中,当它成为当前的时,css3动画出现--但是作为一个要求,我需要禁用滚动直到动画完成--所以当用户点击一个部分时,禁用他们转换到新幻灯片的能力--禁用/锁定滚动直到动画有时间完成--否则一半的元素会褪色,然后点击消失。

--如果我使用类似于一个类附加到主体上的东西--来过低:隐藏,它会被震住

--我是否删除滚动监听器并重新追加它们?我担心这会导致ux中的故障--也许不是scrollTo(0,0)--而是在当前的滑动滚动上修复它,以暂停他们的体验,直到动画完成?

function noScroll() {
  window.scrollTo(0, 0);
}

// add listener to disable scroll
window.addEventListener('scroll', noScroll);

// Remove listener to re-enable scroll
window.removeEventListener('scroll', noScroll);

共有1个答案

皇甫伟彦
2023-03-14

在车身上使用css:

.noScroll {  overflow: hidden !important; }

JS:

document.body.classList.add('noScoll')
document.body.classList.remove('noScoll')

[编辑]以回应旧县的合理关注

下面是要添加的部分代码,以便无论有没有滚动条,页面都保持在相同的位置:

const Remove_ScrollBars =_=>
  {
  let xLeft = document.body.scrollLeft
    , yTop  = document.body.scrollTop

  document.body.classList.add('noScroll')

  document.body.scrollLeft = xLeft
  document.body.scrollTop  = yTop
  }

const Return_ScrollBars =_=>
  {
  let xLeft = document.body.scrollLeft
    , yTop  = document.body.scrollTop

  document.body.classList.remove('noScroll')

  document.body.scrollLeft = xLeft
  document.body.scrollTop  = yTop
  }

演示1:

null

const Remove_ScrollBars =_=>
  {
  let xLeft = document.body.scrollLeft
    , yTop  = document.body.scrollTop

  document.body.classList.add('noScroll')

  document.body.scrollLeft = xLeft
  document.body.scrollTop  = yTop
  }

const Return_ScrollBars =_=>
  {
  let xLeft = document.body.scrollLeft
    , yTop  = document.body.scrollTop

  document.body.classList.remove('noScroll')

  document.body.scrollLeft = xLeft
  document.body.scrollTop  = yTop
  }


noScrollBar.onclick = Remove_ScrollBars
ScrollBar.onclick   = Return_ScrollBars
.noScroll {
  overflow: hidden !important;
 }
 p { white-space: nowrap; }
html lang-html prettyprint-override"><p>aa</p>
  <p>bb</p>
  <p>cc</p>
  <p>dd</p>
  <p>cc</p>
  <p>dd</p>
  <p>aa</p>
  <p>bb</p>
  <p>cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc </p>
  <p>dd</p>
  <p>aa</p>
  <p>aa</p>
  <p>_ _ _ _ _ _ _ _ _ _  <button id="noScrollBar">Scroll Bar Off </button> </p>
  <p>_ _ _ _ _ _ _ _ _ _   <button id="ScrollBar"> Scroll Bar On </button> </p>
  <p>bb</p>
  <p>cc</p>
 类似资料:
  • 如何禁用滚动?

  • 问题内容: 我的意思是滚动时会轻松。 问题答案: var $pages = $(“.page”), PS: 使用,如果你的s为像一个滚动的DIV内(而不是) 注意: 对于 移动设备, 您可能希望针对浏览器的标签栏高度调整值(最好还是完全避免这种情况)。你有主意

  • 我有登陆页(一页)网站。我有文本在中心的着陆页,突出显示与CSS动画。不幸的是,高亮显示这段文字的CSS动画是在进入网站后立即执行的。我怎么才能阻止它?如何使一个动画只在它出现在屏幕上时与文本一起运行。现在,当用户滚动并工作时,文本就会显示出来。不幸的是,下划线在进入网站后移动得更早。当用户滚动页面时,文本将带下划线:( 此元素的屏幕截图

  • 我正在抓取这个网页的用户名,在滚动后加载用户 指向页面的Url:“http://www.quora.com/Kevin-Rose/followers" 我知道页面上的用户数(本例中的用户数为43812),如何滚动页面直到加载所有用户?我在互联网上搜索过同样的代码,在任何地方我都能找到几乎相同的代码行: driver.execute_script("window.scroll至(0)") 如何确定垂

  • 在本节中,您将学习如何向下或向上滚动以显示网页上显示的其他信息。 让我们来看看下面一个测试用例,它将自动化以下场景: 调用Firefox浏览器 打开URL - www.yiibai.com 向下滚动网页以显示其它页面部分 我们将逐步创建测试用例,以便您完全了解如何使用JavaScript的“scrollBy”方法滚动网页。 第1步 - 启动Eclipse IDE并打开在本教程前几节中创建的测试套件

  • 我目前正在使用JavaFX ScrollBar控件,它本身运行良好-但是我对拖动拇指时的“动画”不满意。 更具体地说: 当我快速拖动拇指时,快速加速-拇指动画不会立即跟随,但有点“滞后”-当我停止拖动拇指时的相同行为。。。拇指真正开始/追上预定位置需要一秒钟的时间 这不是繁重的布局计算之类的问题,因为我只是单独渲染ScrollBar而没有任何内容。 是否有一些选项可以让这个“加速动画”/“滞后”消