首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >querySelectorAll && getBoundingClientRect

querySelectorAll && getBoundingClientRect
EN

Stack Overflow用户
提问于 2021-01-20 16:55:26
回答 1查看 457关注 0票数 0

JavaScript querySelectorAll ()方法有问题。

我想对两个段落(p)标签产生淡出效果,它们的不透明度最初设置为0,并进行了转换: translateY为15 at,将它们向下移动一点,当段落出现在屏幕底部时,返回到1的不透明度,并在用户向下滚动期间将:translateY转换为0。

我创建了一个叫做scrollAppear(),的函数,里面有很多东西。

代码语言:javascript
复制
function scrollAppear()

首先,我有一个包含类“paragraphsToFade”的两个段落的变量;我使用querySelectorAll方法获取具有类(.paragraphs_to_fade)的两个(p)标记。

这会给我一个数组(NodeList)。

代码语言:javascript
复制
    var paragraphsToFade=document.querySelectorAll(".paragraphs_to_fade");

然后,我想访问段落的坐标Y,为了实现这一点,我使用了getBoundingClientRect().top,方法,该方法相对于窗口顶部返回指定元素的顶部。

我将值存储在一个名为paragraphsPosition;的变量中。

但是要有两个(p)元素的坐标Y,我必须循环到for循环中,并指定i变量,将两个值都循环迭代,如下所示:

代码语言:javascript
复制
   for (let i = 0; i < paragraphsToFade.length; i++) {
        var paragraphsPosition=paragraphsToFade[i].getBoundingClientRect().top;
    }

之后,我创建了一个名为screenSize的变量,它可以访问窗口高度:

代码语言:javascript
复制
var screenSize=window.innerHeight;

然后,我使用if / add语句检查一个条件,以检查元素的最高值是否小于窗口的高度,如果为真,则添加类fadeInAnimation,它将透明度重置为1,转换为1s的转换: translateY为0,如我解释的开头所指定的那样。

代码语言:javascript
复制
   var screenSize=window.innerHeight;
    if(paragraphsPosition < screenSize){
        paragraphsToFade.classList.add("fadeInAnimation");
    }    

最后,我只需调用函数滚动显示,当用户滚动窗口时:

代码语言:javascript
复制
window.addEventListener("scroll",scrollAppear);

我不知道为什么,但当我使用querySelector时,我只有一个段落的褪色效果有效,但是当我使用querySelectorAll时,我想抓取多个段落,它不起作用,也许我没有循环很好或者其他什么,我用console.log在不同的地方试图知道发生了什么,但我不明白为什么?

我在教程中看到了这种褪色效果:https://www.youtube.com/watch?v=C_JKlr4WKKs

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 17:25:27

看到这个小提琴,您将类附加到多个元素的对象中,而不是每个元素本身。

在遍历数组时,将类包含到for循环中的元素中。

代码语言:javascript
复制
function scrollAppear(){
  var paragraphsToFade = document.querySelectorAll(".paragraphs_to_fade");
  var paragraphsPosition;
  for (let i = 0; i < paragraphsToFade.length; i++) {
    paragraphsPosition=paragraphsToFade[i].getBoundingClientRect().top;
    var screenSize=window.innerHeight;
    if(paragraphsPosition < screenSize && !paragraphsToFade[i].classList.contains("fadeInAnimation") ){

      paragraphsToFade[i].classList.add("fadeInAnimation");
          console.log('added class');
    }    
  }
}
window.addEventListener("scroll",scrollAppear);

工作演示:https://jsfiddle.net/k5ubsecf/1/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65813998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档