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

我如何阻止CSS动画直到页面滚动到某个片段?

司寇灵均
2023-03-14

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

<h2 class=" title animated" data-animate="fadeInUp" data-delay=".4">lorem <span class="text-nice-underline">ipsum</span> <span class="text-nice-underline2" >example</span> template</h2>

此元素的屏幕截图

.text-nice-underline  {
 position: relative;
}
.text-nice-underline:after {
  content: "";
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -1; /* Place the pseudo element right under the content */
  top: 0;
  left: 0;
  background: linear-gradient(to top, #ffbc42 22%, transparent 24%);
  animation-name: highlight;
  animation-duration: 2.95s;
  animation-delay: 0.8s;
  animation-fill-mode: both;
}
.text-nice-underline2  {
    position: relative;
}
.text-nice-underline2:after {
  content: "";
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -1; /* Place the pseudo element right under the content */
  top: 0;
  left: 0;
  background: linear-gradient(to top, #ffbc42 22%, transparent 24%);
  animation-name: highlight;
  animation-duration: 3.95s;
  animation-delay: 1.4s;
  animation-fill-mode: both;
  

}
.text-nice-underline2:hover, .text-nice-underline:hover {
  background: linear-gradient(to top, #ffbc42 95%, transparent 95%);
}
@keyframes highlight {
  0% {
    width: 0;
    opacity: 0;
  }

  90% {
    width: 100%;
    opacity: 1;
  }
}

共有2个答案

施念
2023-03-14

您可以像这样使用JS/jQuery事件侦听器

document.addEventListener('scroll', function(e) {
  const el = $('#myDiv');
  const scrollPosition = window.scrollY;

  if(el == scrollPosition) {
    document.querySelector(".text-nice-underlined").classList.add("animate");
   }
});

当滚动在您的div(您想要的元素)上时,位置动画将开始

锺博耘
2023-03-14

我不明白你要怎么触发动画。这就是为什么我不能为Javascript部分提供帮助,但我的想法是创建一个函数来检查是否满足动画的条件,并运行下面的行。

const runAnimation = () => {
  if(your conditions) {
    document.querySelector(".text-nice-underlined").classList.add("animate");
  }
}
.text-nice-underlined.animate:after {
  animation-name: highlight;
  animation-duration: 2.95s;
  animation-delay: 0.8s;
  animation-fill-mode: both;
}

您需要从text-nice-下划线:after中删除这4个动画属性

 类似资料:
  • 我已经构建了一个单页应用程序,它有不同的位置固定的部分,在特定数量的滚动之后,在每一个部分中,当它成为当前的时,css3动画出现--但是作为一个要求,我需要禁用滚动直到动画完成--所以当用户点击一个部分时,禁用他们转换到新幻灯片的能力--禁用/锁定滚动直到动画有时间完成--否则一半的元素会褪色,然后点击消失。 --如果我使用类似于一个类附加到主体上的东西--来过低:隐藏,它会被震住 --我是否删除

  • 我创建了一个垂直,使用并交换X和Y坐标。(我使用这种方法) 现在,我想让它做的是在某一点停止滚动(我想让最后一个视图只占屏幕高度的65%,但全宽)。通常,在这种情况下,我会覆盖< code>getPageWidth(),但是由于我的宽度和高度现在有点混淆,当我这样做时,我的视图占据了屏幕高度和宽度的65%。 那么我应该如何解决这个问题呢? 谢谢! MyViewPager.java MyPagerA

  • 问题内容: 我一直在寻找一种仅使用CSS3单击位于页面顶部的按钮时向下滚动的方法。 但这对于我的需求而言有点太先进了,因为我只希望浏览器单击页面顶部的一个按钮即可向下滚动,所以我想知道:是否可以在没有输入按钮的情况下进行那些CSS滚动,有锚标签? HTML看起来像这样: 我已经有一些CSS,需要在单击按钮时触发: 问题答案: 您可以使用css3 伪选择器使用锚标记来完成此操作,当与当前URL哈希具

  • 问题内容: 我对Linkedin中技能部分的“加载更多”按钮感到困惑。我 在找到按钮的xpath时收到此错误: 问题是我的元素在页面上不可见,因此我一直试图 找到一种方法来在页面上连续滚动直到按钮可见。 我正在尝试对多个配置文件进行forloop。 我的相关代码: Attempts 1. 随着 页面滚动就在元件的下方,因此该元素不再是可见的,随后发生同样的错误。 我也尝试过move_to_elem

  • 我尝试过这样做: 但是它什么也不做,所以我做了一个循环来按步骤滚动页面: 它有点工作,但我不知道一个给定的页面有多长,所以我必须输入一个大的数字作为最大高度,这给了我两个问题。第一个是,即使是一个很大的数字也不足以滚动某些页面,第二个是,如果页面短于此限制,那么当脚本什么都不做时,等待脚本完成的时间会损失很多

  • 问题内容: 我正在尝试将页面移至某个元素。 我尝试下一个代码无济于事: 问题答案: 您可以使用锚点来“聚焦” div。即: 然后使用以下javascript: