【发布时间】:2018-05-06 02:09:25
【问题描述】:
我有一组对角线跟随鼠标移动。
如果我在页面上只有一个组的实例,但我需要多个实例,这很好用。
当我复制 HTML 时,它们不会彼此独立工作,也不会产生预期的效果。
jQuery:
var dash = $(".graphic-wave__dash");
if(dash.length > 0){
var offset = dash.offset();
function mouse(evt){
var center_x = (offset.left) + (dash.width()/2);
var center_y = (offset.top) + (dash.height()/2);
var mouse_x = evt.pageX; var mouse_y = evt.pageY;
var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
var degree = (radians * (180 / Math.PI) * -1) + 90;
dash.css('-moz-transform', 'rotate('+degree+'deg)');
dash.css('-webkit-transform', 'rotate('+degree+'deg)');
dash.css('-o-transform', 'rotate('+degree+'deg)');
dash.css('-ms-transform', 'rotate('+degree+'deg)');
dash.removeClass('original');
}
$(document).mousemove(mouse);
}
HTML:
<div class="graphic-wave">
<div class="graphic-wave__row">
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
</div>
<div class="graphic-wave__row">
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
</div>
<div class="graphic-wave__row">
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
</div>
</div>
<div class="graphic-wave" style="left: 400px;">
<div class="graphic-wave__row">
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
</div>
<div class="graphic-wave__row">
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
</div>
<div class="graphic-wave__row">
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
<div class="graphic-wave__dash original"></div>
</div>
</div>
https://jsfiddle.net/ob80/7nxf07vo/3/
谁能帮忙?
【问题讨论】:
-
您正在选择具有
.graphic-wave__dash类的每个元素,然后对每个元素应用相同的效果。您需要按行/行组计算它,可能使用 jQuery 的.each()并使用$(this)在函数中选择相关行。
标签: javascript jquery mousemove rotatetransform onmousemove