- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Intersection Observer API当用户滚动到内容时显示元素。它运行良好,但我想延迟要显示的 div,如果有 4 个 div
,我希望显示第一个,接下来 0.5 秒显示下一个……不是同时发生的。在示例中,效果也仅适用于第一个 class
,如果有多个 class
,则不适用于下一个 img classes
,只有第一个。您可以在 page 的底部看到示例.
HTML
<section id="staff" style="padding-top: 100px;">
<div class="col-lg-12 mx-auto mb-5">
<div class="container">
<div class="row icons-info">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
<img class="floating show-bottom" src="img/Muñeco 1-08.png">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros. </p>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-3 ">
<img class="floating" src="img/Muñeco 2-08.png">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros.</p>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-3 ">
<img class="floating" src="img/Muñeco 3-08.png">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros.</p>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
<img class="floating" src="img/Muñeco 1-08.png">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros. </p>
</div>
</div>
</div>
</div>
</section>
JS
// Instantiate a new Intersection Observer
let observer7 = new IntersectionObserver(onEntry7);
let staff = document.querySelector('.floating');
let element7 = document.querySelector("#staff p");
observer7.observe(element7);
function onEntry7(entry7) {
if (entry7[0].isIntersecting) {
staff.classList.add("show-bottom");
}
}
CSS
.floating {opacity: 0; transition: 1s opacity;}
.floating.show-bottom {opacity: 1;
animation: movefromtop 1s alternate infinite;
animation-iteration-count: 1;
animation-fill-mode: forwards;}
@keyframes movefromtop {
from {
transform: translateY(-5em);
}
to {
transform: translateY(0em);
}
}
最佳答案
使用querySelectorAll()获取所有内部 div 元素,然后使用 forEach
为所有元素调用 observer.observe()
方法。然后在观察者中,使用target
属性查询内部图像并为其添加show-bottom
类。
要在每个动画之间添加延迟,您必须通过返回 Promise
并使用 setTimeout()
创建动画链。如果同一元素的交集触发多次,请确保不要在动画中多次链接同一元素。为此,使用 animatedElements
数组来跟踪动画元素。
如果您只想为元素设置一次动画,在 begin intersected 之后,您可以在观察者上调用 unobserve
以取消注册更多的交叉事件。
注意:我编辑了您的 HTML/CSS 以使网格在代码段中起作用,以演示当多个元素位于同一行时的顺序动画效果。我还向内部 div 添加了一个 with-img
类,这样我们就可以查询它们并将它们传递给观察方法。
const onEntry7 = animateSequence('.floating', 'show-bottom');
const observer7 = new IntersectionObserver(onEntry7);
const allElements7 = document.querySelectorAll('#staff div.with-img');
allElements7.forEach(e => observer7.observe(e));
function animateSequence(targetSelector, classToAdd, delay = 500) {
const animatedElements = [];
let chain = Promise.resolve();
function show(e) {
return new Promise((res, rej) => {
setTimeout(() => {
e.classList.add(classToAdd);
res();
}, delay);
});
}
return function(entries) {
entries.forEach(entry => {
if (entry.intersectionRatio > 0) {
const elem = entry.target.querySelector(targetSelector);
if (!animatedElements.includes(elem)) {
animatedElements.push(elem);
console.clear();
console.log('chaining', ...animatedElements.map(e => e.getAttribute('data--name')));
chain = chain.then(() => show(elem));
observer7.unobserve(entry.target);
}
}
})
}
}
.floating {
opacity: 0;
transition: 1s opacity;
width: 157px;
height: 220px;
}
.floating.show-bottom {
opacity: 1;
animation: movefromtop 1s alternate infinite;
animation-iteration-count: 1;
animation-fill-mode: forwards;
}
@keyframes movefromtop {
from { transform: translateY(-5em); }
to { transform: translateY(0em); }
}
section#staff {
margin-top: 200px;
margin-bottom: 200px;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
Scroll Down
<section id="staff" style="padding-top: 100px;">
<div class="col-lg-12 mx-auto mb-5">
<div class="container">
<div class="row icons-info">
<div class="with-img col-xs-12 col-xs-6 col-sm-6 col-md-6 col-lg-3">
<img class="floating" src="https://lagaleramagazine.es/rucab/img/Muñeco 1-08.png" data--name="1">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros. </p>
</div>
<div class="with-img col-xs-12 col-xs-6 col-sm-6 col-md-6 col-lg-3 ">
<img class="floating" src="https://lagaleramagazine.es/rucab/img/Muñeco 2-08.png" data--name="2">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros.</p>
</div>
<div class="with-img col-xs-12 col-xs-6 col-sm-6 col-md-6 col-lg-3 ">
<img class="floating" src="https://lagaleramagazine.es/rucab/img/Muñeco 3-08.png" data--name="3">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros.</p>
</div>
<div class="with-img col-xs-12 col-xs-6 col-sm-6 col-md-6 col-lg-3">
<img class="floating" src="https://lagaleramagazine.es/rucab/img/Muñeco 1-08.png" data--name="4">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh justo, tincidunt sed felis vitae, egestas scelerisque eros. </p>
</div>
</div>
</div>
</div>
</section>
关于javascript - 使用 Intersection Observer API 延迟翻译元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206507/
我有四个返回整数的查询。 select listOfIntegers from [something]... (编辑结果为 ROWS) 需要一种方法来做 select ... intersect se
我尝试过 Area.intersect(),并且想知道是否有一种方法可以使用 Path2D 创建与此类似的方法,因为我注意到使用 Path2D 作为形状时性能有所提升。换句话说,获取大 Path2D
我在使用 MARIADB 语言进行此查询时遇到问题。此查询不返回任何内容,但此查询应返回一行。我该怎么做才能让它发挥作用? `SELECT c.Raza, c.Nombre FROM caballos
为什么在 Groovy 中,当我创建 2 个列表时,如果我执行 a.intersect(b) 和 b.intersect(a) 会有区别: def list1 = ["hello", "world",
我需要在 MS Access 中交叉多个子查询。遗憾的是,Access-SQL 不支持 INTERSECT 关键字。我明白,我们如何使用两个表的 INNER JOIN 来获得我们想要的交集。但是我怎样
I have 5 equations and I've to take combination of 3 equations at a time to check if I'm getting
使用基本运算符,导出额外的运算符交集。 R ∩ S = ? 我认为可能是:(R ∪ S) - ((R -S) ∪ (S -R)) 但我也认为可能有更简单的方法吗? 最佳答案 A 与 B 相交等于 A
我有一个向量 A 定义为:(Ao+t∗Ad) 我还有一个圆锥体,其顶点(圆锥尖)V、轴方向D、底半径R 和高度H . 如何找到矢量和圆锥体之间的交点?我正在使用 glm 进行数学运算。 这是一个简单的
我正在寻找合适的加速结构来进行射线球相交测试(在游戏中)。适用以下条件: - 每帧大约有 100 个球体和 100 条光线可以相互测试 - 球体在每一帧中移动,光线也是如此 - 可以在每一帧中添加/删
我有两个代理集。是否有查找功能: 两个(相交)中都存在的代理的代理集 一个而不是另一个中存在的代理的代理集 我发现手动执行此操作非常困难,尤其是在三重ask内部需要它时 理想的用法类似于with语法:
如何测试交叉射线和三角形,如果存在如何获得从射线原点到交点的距离?如果在我的程序中我必须检查 1 条射线到 ~10000 个三角形,我可以使用什么优化?? 最佳答案 单个多边形射线相交测试很简单,只涉
我们如何使用交集方法组合两个 dfa? 最佳答案 使用叉积结构,正式解释here . 本质上,您将每个状态中的状态集交叉乘积,以获得与每台机器的任意状态组合相对应的元状态列表。如果两者都接受,这允许您
我的问题是关于 python pandas 的。我有两个系列,每个系列都有如下字符串元素:为了简化,我在 DataFrame 中连接了两个系列。 import pandas as pd import
我有两个表:P 和 PC(主要/详细信息由列 Id 连接) Table P: Id integer Name varchar(12) Table PC: Id integer Code varch
我正在使用Intersection Observer API,我想知道: 如何消除或限制Intersection Observer API? 如果我想提高性能,是否建议使用防抖或 throttle 功
可能真正的问题是“是否有人关心”,但这是不一致的地方: intersect(c(),1:3) integer(0) intersect(1:3,c()) NULL 同样的事情发生在 setdiff 上
我正在从事一个涉及 Neo4J Db 的项目,但我遇到了一个我自己无法解决的问题。 我们正在处理图中的 Acl。每个 Acl 都链接到一组元数据。项目也链接到这些元数据。当链接到项目的所有元数据也链接
我正在尝试在具有一个障碍物(暂时)的昆虫(蟑螂)社会中实现一种碰撞检测算法(极限环方法),为此障碍物(红色)被一圈包围影响(绿色),在这里,一旦检测到“roach”和“影响圈”之间的交叉点,我将计算每
我正在做题 Find all students who do not appear in the Likes table (as a student who likes or is liked) an
我有两个结果,希望得到这两个结果的最佳“顺序”。示例: 我们有一场比赛,一场比赛有 5 人,另一场比赛有 7 人。结果是:比赛 1. 1. Karl 2. Fred 3. John 4. Peter
我是一名优秀的程序员,十分优秀!