html - rotate() 将图像的中心从光标移开
问题描述
这是 JSFiddle 代码:
- 这很好用,图像的中心位于光标处
#button {
margin: 0;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
}
<html>
<head>
</head>
<body>
<img id="button" src="https://s3.envato.com/files/274494335/01.jpg" widht="100" height="100" />
</body>
<script>
let moveitem = document.getElementById('button');
const MoveButton = (e) => {
moveitem.style.left = e.pageX + 'px';
moveitem.style.top = e.pageY + 'px';
}
document.addEventListener('mousemove', MoveButton);
</script>
</html>
- 这不像我需要的那样工作,图片从光标向右下移动并单独旋转,我需要图片在光标中旋转
#button {
margin: 0;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
animation: rotation 2s infinite linear;
}
@keyframes rotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
<html>
<head>
</head>
<body>
<img id="button" src="https://s3.envato.com/files/274494335/01.jpg" widht="100" height="100" />
</body>
<script>
let moveitem = document.getElementById('button');
const MoveButton = (e) => {
moveitem.style.left = e.pageX + 'px';
moveitem.style.top = e.pageY + 'px';
}
document.addEventListener('mousemove', MoveButton);
</script>
</html>
如何仅使用 css 解决此问题?
解决方案
关键帧动画应用的属性将覆盖之前设置的任何属性。
在您的情况下,应用旋转动画会覆盖transform
应用于#button
. 所以transform: translate(-50%, -50%);
被替换为transform: rotate(0deg);
.
要解决此问题,请更新旋转动画以包含平移:
@keyframes rotation {
from {
transform: translate(-50%, -50%) rotate(0deg);
}
to {
transform: translate(-50%, -50%) rotate(360deg);
}
}
transform-origin
其他人提到问题是transform-origin: center center;
由#button
.
推荐阅读
- python - 如何记录在 Python 脚本中执行的所有 Redis 命令?
- javascript - Angular 11 HTML模板到Angular
- java - 如何确定android设备的速度
- php - 条带手动确认 + 连接帐户失败(confirmation_method + stripe_account)
- android - createUserWithEmailAndPassword。未定义命名参数“电子邮件”
- c# - C# GridViewRow FindControl 获取/传递值
- wordpress - WordPress 网站 URL 自动更改
- python - 问:SQLAlchemy 1.4 (2.0) 从 session.execute(statement).scalars().all() 或 session.execute(statement).all() 转换结果时出现问题
- javascript - 我应该如何编写 Pagination 组件 React JS?
- java - 如何将 Native java 中的变量值获取到 Flutter?