使用JavaScript在卷轴上显示Div

使用JavaScript在卷轴上显示Div,javascript,jquery,css,Javascript,Jquery,Css,我试图在用户滚动页面时显示div。我正在尝试使用javascript和css来实现这一点,而不需要任何额外的库 目前,我有一个使用jQuery的设置来完成这项工作,但是我在寻找一个只使用javascript的解决方案时遇到了问题。我不希望div显示在某个位置,只是简单地显示在用户的视口中 我使用opacity:0隐藏div,然后使用$this.animate{'opacity':'1'},500;展示 我找不到一个类似的javascript选项,它不使用库或jQuery 我可以使用javascr

我试图在用户滚动页面时显示div。我正在尝试使用javascript和css来实现这一点,而不需要任何额外的库

目前,我有一个使用jQuery的设置来完成这项工作,但是我在寻找一个只使用javascript的解决方案时遇到了问题。我不希望div显示在某个位置,只是简单地显示在用户的视口中

我使用opacity:0隐藏div,然后使用$this.animate{'opacity':'1'},500;展示

我找不到一个类似的javascript选项,它不使用库或jQuery

我可以使用javascript实现下面的代码吗

一个有效的jquery解决方案示例是:

$document.readyfunction{ /*每次滚动窗口时*/ $window.scroll函数{ /*检查每个所需元件的位置*/ $”。在“”中滚动。每个函数i{ var bottom\u of_object=$this.offset.top+$this.outerHeight; var bottom\u of_window=$window.scrollTop+$window.height; /*如果对象在窗口中完全可见,请将其淡入淡出*/ 如果\u窗口的底部\u>对象的底部\u{ $this.animate{'opacity':'1'},500; } }; }; }; 容器 { 高度:2000px; } 货柜组 { 利润率:50像素; 填充:50px; 背景颜色:蓝色; } .滚动 { 不透明度:0; } 显示 显示 淡入 淡入 淡入
您想要使用的是一个交叉点观察者——这是一个html5方法,用于确定元素何时在vieport中。这可以用于时髦的效果-例如自动播放视频-只有当视频在视口中-例如:Facebook。。。或者延迟加载图像

请注意,您可以指定元素必须在视口中的数量,以使效果发生-这是配置选项中的阈值

还要注意的是,IE中不支持交叉点观察者,因此您可能需要使用多边形填充,或者像我在示例中提供的那样使用回退

让段落=document.queryselectoral'p'; 如果窗口中有“IntersectionObserver”{ //支持IntersectionObserver 让配置={ root:null, rootMargin:'0px', 阈值:1 }; 让observer=newintersectionobserver-onchange,config; 段落.foreach段落=>observer.observeParagragraph; 观察者,观察者{ changes.forEachchange=>{ 如果change.intersectionRatio>0{ //停止观看并加载图像 showParagraphchange.target; observer.unobservechange.target; } }; } }否则{ //不支持IntersectionObserver 段落。foreach段落=>showParagraph段落; } 功能显示段落段落{ 段落。类列表。添加“淡入”; } p{ 不透明度:0 } .淡入{ 动画名称:fadeIn; 动画持续时间:1000ms; 动画计时功能:立方贝塞尔0,0,0.4,1; 动画填充模式:正向; } @关键帧淡入淡出{ 从{ 不透明度:0; } 到{ 不透明度:1; } } 滚动我以查看段落完全在视口中时显示 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 Lorem ipsum dolor sit amet 他是一位杰出的职业经理人,他在劳动和就业方面的贡献是暂时的。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。
两人或两人在一个无教区的房间里互相指责。除了偶尔出现的不自以为是的情况外,还必须在工作中承担责任。你想要使用的是一个交叉点观察者-这是一种html5方法,用于确定元素何时在vieport中。这可以用于时髦的效果-例如自动播放视频-只有当视频在视口中-例如:Facebook。。。或者延迟加载图像

请注意,您可以指定元素必须在视口中的数量,以使效果发生-这是配置选项中的阈值

还要注意的是,IE中不支持交叉点观察者,因此您可能需要使用多边形填充,或者像我在示例中提供的那样使用回退

让段落=document.queryselectoral'p'; 如果窗口中有“IntersectionObserver”{ //支持IntersectionObserver 让配置={ root:null, rootMargin:'0px', 阈值:1 }; 让observer=newintersectionobserver-onchange,config; 段落.foreach段落=>observer.observeParagragraph; 观察者,观察者{ changes.forEachchange=>{ 如果change.intersectionRatio>0{ //停止观看并加载图像 showParagraphchange.target; observer.unobservechange.target; } }; } }否则{ //不支持IntersectionObserver 段落。foreach段落=>showParagraph段落; } 功能显示段落段落{ 段落。类列表。添加“淡入”; } p{ 不透明度:0 } .淡入{ 动画名称:fadeIn; 动画持续时间:1000ms; 动画计时功能:立方贝塞尔0,0,0.4,1; 动画填充模式:正向; } @关键帧淡入淡出{ 从{ 不透明度:0; } 到{ 不透明度:1; } } 滚动我以查看段落完全在视口中时显示 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度的情况下,我们需要一个实验室来进行日常工作。
两人或两人在一个无教区的房间里互相指责。除了偶尔出于谨慎,不能因为工作的过失而对动物进行惩罚。

您可以通过使用简单的javascript来实现这一点。下面是一个快速骨骼示例:

const callback=条目,observer=>{ entries.forEachentry=>{ if entry.isIntersecting{ 如果entry.intersectionRatio>0.5{ entry.target.classList.add'active'; } 否则{ entry.target.classList.remove'active'; } } }; } const observer=new intersectionobserver回调,{threshold:1}; queryselectoral'div'.forEachd=>observer.observed; div{ 背景:bisque; 最小高度:100px; 宽度:50%; 边缘底部:0.5雷姆; 不透明度:0; 过渡:所有0.5s缓解; } 活动分区{ 背景:番茄; 宽度:100%; 不透明度:1; }
您可以使用普通javascript实现这一点 使用。下面是一个快速骨骼示例:

const callback=条目,observer=>{ entries.forEachentry=>{ if entry.isIntersecting{ 如果entry.intersectionRatio>0.5{ entry.target.classList.add'active'; } 否则{ entry.target.classList.remove'active'; } } }; } const observer=new intersectionobserver回调,{threshold:1}; queryselectoral'div'.forEachd=>observer.observed; div{ 背景:bisque; 最小高度:100px; 宽度:50%; 边缘底部:0.5雷姆; 不透明度:0; 过渡:所有0.5s缓解; } 活动分区{ 背景:番茄; 宽度:100%; 不透明度:1; }
而不是使用动画。向元素添加一个类。使类将不透明度设置为1,并使用transition:opacity 1.0s;您可以通过一个.而不是使用animate来使用普通javascript来实现这一点。向元素添加一个类。使类将不透明度设置为1,并使用transition:opacity 1.0s;您可以通过一个简单的javascript实现这一点。