我尝试使用MUI 5中的styled
来制作悬停按钮的动画效果-但它不起作用。我尝试从以下内容中寻找灵感:
- How to apply custom animation effect @keyframes in MaterialUI using makestyles()
- https://github.com/mui-org/material-ui/issues/24851
...没有运气。
试着看一看,告诉我 * 我 * 看不到的东西:
import Button from "@mui/material/Button";
import { styled } from "@mui/material/styles";
import { keyframes } from "@emotion/react";
const getAnimation = () => keyframes`
0 % { transform: translate(1px, 1px) rotate(0deg) },
10% { transform: translate(-1px, -2px) rotate(-1deg); },
20% { transform: translate(-3px, 0px) rotate(1deg); },
30% { transform: translate(3px, 2px) rotate(0deg); },
40% { transform: translate(1px, -1px) rotate(1deg); },
50% { transform: translate(-1px, 2px) rotate(-1deg); },
60% { transform: translate(-3px, 1px) rotate(0deg); },
70% { transform: translate(3px, 1px) rotate(-1deg); },
80% { transform: translate(-1px, -1px) rotate(1deg); },
90% { transform: translate(1px, 2px) rotate(0deg); },
100% { transform: translate(1px, -2px) rotate(-1deg); }
`;
const StyledButton = styled((props) => {
const { ...other } = props;
return <Button {...other} />;
})(({ theme }) => ({
":hover": {
animation: `${getAnimation} shake infinite`
},
backgroundColor: "#2699FB",
color: "#FFFFFF"
}));
const App = () => {
return (
<StyledButton variant="contained">
My button
</StyledButton>
)
}
export default App
2条答案
按热度按时间krcsximq1#
Emotion的
keyframe
是一个标签函数,它接受一个模板字符串作为第一个参数,并返回关键帧数据,你在代码中定义的是一个函数,它只返回另一个函数,而不做任何事情:你应该把密码改成这样:
用法
现场演示
kulphzqa2#
这似乎对我有用
或
(二)
...
...