作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试通过 mousemove 旋转元素时遇到问题。我认为这个问题与我的元素比屏幕大得多(在 CSS 中以 vh/vw 单位设置)这一事实有关,但本质上是元素声音从 mousemove 的中心旋转。
我在这里设置了一个 jsFiddle:
https://jsfiddle.net/cLx290p1/
function themeLanding() {
var graphic = $('.landing-2016');
if (graphic.length > 0) {
var offset = graphic.offset();
function mouse(evt) {
var centerX = (offset.left) + (graphic.width()/2),
centerY = (offset.top) + (graphic.height()/2),
mouseX = evt.pageX,
mouseY = evt.pageY,
radians = Math.atan2(mouseX - centerX, mouseY - centerY);
degree = (radians * (180 / Math.PI) * -1) + 90;
graphic.css('-moz-transform', 'rotate(' + degree + 'deg) translate(-50%,-50%)');
graphic.css('-webkit-transform', 'rotate(' + degree + 'deg) translate(-50%,-50%)');
graphic.css('-o-transform', 'rotate(' + degree + 'deg) translate(-50%,-50%)');
graphic.css('-ms-transform', 'rotate(' + degree + 'deg) translate(-50%,-50%)');
graphic.css('transform', 'rotate(' + degree + 'deg) translate(-50%,-50%)');
}
$(document).mousemove(mouse);
}
}
themeLanding();
我也应用了相同的想法,没有使用 mousemove 作为调试检查,使用 CSS3 旋转相同的元素。
https://jsfiddle.net/psywr840/1/
这似乎工作正常,所以我不确定哪里出错了。
有什么想法吗?谢谢。
最佳答案
当使用 css transform
函数时,函数按照从左到右的顺序进行处理。
在你的情况下,你想要的是首先翻译
元素然后旋转
它。例如这个 answer on SO解释类似的东西,只是他们使用比例而不是旋转,但原理是一样的。
所以你想要的是改变转换函数的顺序:
graphic.css('-moz-transform', 'translate(-50%,-50%) rotate(' + degree + 'deg)');
graphic.css('-webkit-transform', 'translate(-50%,-50%) rotate(' + degree + 'deg)');
graphic.css('-o-transform', 'translate(-50%,-50%) rotate(' + degree + 'deg)');
graphic.css('-ms-transform', 'translate(-50%,-50%) rotate(' + degree + 'deg)');
graphic.css('transform', 'translate(-50%,-50%) rotate(' + degree + 'deg)');
关于javascript - 在 mousemove 上旋转大于视口(viewport)的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37727458/
我正在尝试获得一个按钮,按下该按钮时会改变颜色。当再次按下时,它应该变回原来的颜色。我究竟做错了什么? 我的模板中的按钮: export default { data: {
我是一名优秀的程序员,十分优秀!