我有一个光标跟随效果在我的新的着陆页:
https://tiny-cendol-e90774.netlify.app/
由于某种原因,当你向下滚动页面时,光标没有跟随你向下滚动?
下面是代码:
const Layout = ({children}) => {
const [x, setX] = useState(0);
const [y, setY] = useState(0);
useLayoutEffect(() => {
document.onmousemove = (event) => {
var e = event;
setX(e.clientX);
setY(e.clientY);
};
});
return (
<div className={styles.layout}>
<div style={{top: y - 14, left: x - 14}} className={styles.cursor} />;
<Header />
{children}
<Footer />
</div>
)
}
这里是风格:
.cursor {
width: 30px;
height: 30px;
display: none;
border-radius: 50%;
position: absolute;
border: 2px solid $white;
transition-duration: 0.4s;
transition-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28);
&:after {
top: 50%;
left: 50%;
content: '';
width: 5px;
height: 5px;
position: absolute;
background-color: $white;
border-radius: 50%;
transform: translate(-50%, -50%);
}
@media all and (min-width: $tablet) {
display: block;
}
}
我假设e.clientX和e.clientY没有浏览器维度的上下文,所以它们不支持滚动。
2条答案
按热度按时间dgsult0t1#
可以使用
event.pageX
和event.pageY
属性获取鼠标从页面开始的位置。这将解决您的问题,但它不会更新光标滚动。
我不确定你是否想使用
useState
来移动屏幕上的光标。你也可以使用ref来达到这个目的。另外,当组件卸载时(即使你从来没有卸载过布局组件),不要忘记清除事件侦听器。tnkciper2#
行为主题是RxJS中的一种主题,RxJS是JavaScript中用于React式编程的库。行为主题允许您跟踪主题的当前值以及该值随时间的任何更改。要在服务函数中使用行为主题,请执行以下步骤:
从RxJS库中导入要使用的行为主体和可观察操作符,例如:
在服务函数中新建一个行为主体,并初始化一个初始值,例如:
使用行为主题跟踪当前值以及对该值的任何更改。例如,可以使用.next()方法更新主题的值,使用.getValue()方法获取当前值。复制代码subject.next(newValue); const currentValue = subject.getValue();将行为主题用作可观察对象以创建数据流,并使用可观察运算符将转换应用于这些流。例如:
通过在服务函数中使用行为主题,您可以跟踪当前值以及对该值的任何更改,并使用这些值创建可在应用程序中转换和使用的数据流。