代码如下:function rotatePlusLink() {
$(".linkDiv").each(function () {
var tr = window.getComputedStyle($(this)[0], null).getPropertyValue("transform");
if (tr == 'none') {
this.css('transform', 'scale(1) rotate(0deg)');
return;
}
var values = tr.split('(')[1].split(')')[0].split(',');
var a = values[0];
var b = values[1];
var c = values[2];
var d = values[3];
var scale = Math.sqrt(a * a + b * b);
var sin = b / scale;
var angle = Math.round(Math.atan2(b, a) * (180 / Math.PI));
this.style.transform = 'rotate(' + (angle + 5) + 'deg) scale(' + scale + ')';
});
}
function rotateReduLink() {
$(".linkDiv").each(function () {
var tr = window.getComputedStyle($(this)[0], null).getPropertyValue("transform");
if (tr == 'none') {
this.css('transform', 'scale(1) rotate(0deg)');
return;
}
var values = tr.split('(')[1].split(')')[0].split(',');
var a = values[0];
var b = values[1];
var c = values[2];
var d = values[3];
var scale = Math.sqrt(a * a + b * b);
var sin = b / scale;
var angle = Math.round(Math.atan2(b, a) * (180 / Math.PI));
this.style.transform = 'rotate(' + (angle - 5) + 'deg) scale(' + scale + ')';
});
}这两个函数中的linkDiv的设置 怎么能封装成一个函数调用啊? 这两个函数只有一个地方不一样 就是设置属性的那里,一个加号,一个减号。
4 回答
HUH函数
TA贡献1836条经验 获得超4个赞
//ES6 函数的解构赋值,赋初值5
function rotateLink(nums = 5) {
$(".linkDiv").each(function () {
var tr = window.getComputedStyle($(this)[0], null).getPropertyValue("transform"); if (tr == 'none') { this.css('transform', 'scale(1) rotate(0deg)'); return; } var values = tr.split('(')[1].split(')')[0].split(','); var a = values[0]; var b = values[1]; var c = values[2]; var d = values[3]; var scale = Math.sqrt(a * a + b * b); var sin = b / scale; var angle = Math.round(Math.atan2(b, a) * (180 / Math.PI)); this.style.transform = 'rotate(' + (angle + nums) + 'deg) scale(' + scale + ')'; });
}
不推荐使用eval
慕侠2389804
TA贡献1719条经验 获得超6个赞
你可以另写一个函数去接受你的angle和scale值,然后再调用此方法,或者直接写到这个方法中来。对于equals,抱歉 忘了js中不用这个了 直接用==就好了
添加回答
举报
0/150
提交
取消