Zoom缩放动画在React中如何实现平滑过渡?
我用React写了个简单的缩放动画,但元素放大时会突然跳变,没有平滑过渡,试了加transition也没用,是哪里写错了吗?
const ZoomBox = () => {
const [isZoomed, setIsZoomed] = useState(false);
return (
<div
onClick={() => setIsZoomed(!isZoomed)}
style={{
width: '100px',
height: '100px',
backgroundColor: 'blue',
transform: isZoomed ? 'scale(1.5)' : 'scale(1)',
transition: 'transform 0.3s ease'
}}
/>
);
};
关键点在于要确保transform的初始值明确。有时候浏览器会搞不清楚从什么状态开始过渡。试试这样改:
另外还有个更稳的做法,用CSS类代替内联样式,这样浏览器更容易处理过渡:
然后CSS部分:
这两种方法都能解决突然跳变的问题。第一种简单直接,第二种更规范些。