reactjs - 在元素可见之前反应 useInView 触发器
问题描述
我正在 React 中构建滚动触发动画,但是某些元素在它们出现在视图中之前就被触发了。为此,我构建了一个用于触发的小组件:
import { useInView } from 'react-intersection-observer';
import { useAnimation } from 'framer-motion';
export const useScroll = (treshhold = .2) => {
const controls = useAnimation();
const [element, view] = useInView({ threshold: treshhold, triggerOnce: true });
if (view) {
controls.start('show');
} else {
controls.start('hidden');
}
return [element, controls];
}
为了更好地说明,我在这里画了草图:
黑框代表视口。有一个英雄部分,在页面加载时也会动画(黑框中的红色部分)。
在使用 scrollTriger 控件的下一部分中,元素已经被触发并且大致对应于视口高度。(视口下的绿框)
下面的蓝框与绿框中的元素相同,但它们一进入视口就会被触发。(期望的行为)蓝色和绿色框架具有相同的父级,并且没有进一步的区别。
在动画中,元素仅缩放,即高度不移动。
我找不到任何理由说明它的行为方式。
解决方案
推荐阅读
- c# - 在 C# TestServer 中使用 TestStartup 进行 int 测试抛出 Not Found
- c++ - 使用奇怪重复模板模式 (CRTP) 时计算多维数组的线性索引
- javascript - Only push the object which is not in the array yet
- javascript - 当歌曲停止时,机器人正在从队列中删除所有歌曲而不是 1
- swift - UICollectionView 显示为空且不显示任何单元格
- spring-boot - 如何使用 SpringBoot 创建具有功能的计费页面
- javascript - passport-azure-ad AzureAD:承载策略,令牌验证
- python - TypeError: create_int(): 不兼容的函数参数
- python - Python迭代器下一个方法
- javascript - 为什么我的 mongodb 图表嵌入 sdk 不起作用?