javascript - 如何使用内联样式来使用变换:rotate() 与 react.js 滚动
问题描述
创建此页面。我有一个要在滚动时旋转的元素。宁愿使用反应语法来创建这个“动画”。
LeftGear = () => {
const rotate = window.scrollY / 10 % Math.PI
const divStyle = {
backgroundColor: 'purple',
transform: `scroll(${rotate})`,
}
return <img
className={this.changeClassName('circleImage')}
src="../../assets/icons/red-gear.svg"
alt="Circles Icon"
style={divStyle}
/>
}
render(){
return <LeftGear/>
}
这可以为图像提供背景,但不适用于该滚动。所以我想知道我做错了什么?
解决方案
旋转与您的半径编号transform: rotate({n}deg)
在哪里一起工作。{n}
其余的,在 useEffect 挂钩中将事件侦听器绑定到窗口。无需更新divStyle
对象,只需创建对图像的引用并更新style.transform
属性。
React 没有聪明的方法来处理这个问题,所以有时你只需要使用一些 vanilla JS。
import React, { useEffect, useRef } from 'react';
const LeftGear = () => {
const imageRef = useRef();
const divStyle = {
backgroundColor: 'purple',
}
useEffect(() => {
window.addEventListener('scroll', event => {
requestAnimationFrame(() => {
const rotation = window.scrollY / 10 % Math.PI;
imageRef.current.style.transform = `rotate(${rotation}deg)`;
});
});
}, []);
return (
<img
ref={imageRef}
className={this.changeClassName('circleImage')}
src="../../assets/icons/red-gear.svg"
alt="Circles Icon"
style={divStyle}
/>
)
}
推荐阅读
- python-2.7 - Python中的向量是什么
- python - 在 GPU 上使用 bfloat16 和 tensorflow
- tableau-api - 具有计算字段比率的 Tableau LOD 固定表达式
- python - Python 3掷骰子模拟器的问题
- amazon-web-services - 使用 IAM 保护的 AWS API Gateway 在注销时使凭证无效
- r - doParallel 和 foreach 的问题。我可以注册核心,但它们似乎没有运行
- ubuntu - 无法在 UBuntu 18.04 上安装 .Net Core 2.2
- r - gsub 错误地识别 [:cntrl:] 字符
- javascript - 如何制作一个加载栏,每次加载图片时更新并添加百分比
- c# - 改进代码,添加 Goto 或循环功能