【发布时间】:2013-05-28 19:48:18
【问题描述】:
我是 Javascript 和 Jquery 的新手,我正在编写一个脚本,当鼠标在浏览器窗口中移动以更改图像透视图时,该脚本会更改 CSS 'transform' 值。
一切都很好!我只想简化我的 javascript/jquery 以减少代码量(因为我的 CSS 目标是 -webkit- -moz- -ms- 等),并且还可以更轻松地调整脚本。
好的,这是我要精简的部分:
$('#logo').css({
'-webkit-transform':
"rotateY("
+ (e.pageX-(current_width/2))/150 +
"deg) rotateX("
+ (e.pageY-(e.pageY*2-600)-(current_height/2))/300 +
"deg)",
'-moz-transform':
"rotateY("
+ (e.pageX-(current_width/2))/150 +
"deg) rotateX("
+ (e.pageY-(e.pageY*2-600)-(current_height/2))/300 +
"deg)",
'-ms-transform':
"rotateY("
+ (e.pageX-(current_width/2))/150 +
"deg) rotateX("
+ (e.pageY-(e.pageY*2-600)-(current_height/2))/300 +
"deg)",
'transform':
"rotateY("
+ (e.pageX-(current_width/2))/150 +
"deg) rotateX("
+ (e.pageY-(e.pageY*2-600)-(current_height/2))/300 +
"deg)",
});
正如您所见,4 个中心部分的唯一变化是 CSS 浏览器特定元素(-webkit-、-moz- 等),所以我很自然地想创建一个包含这些变化的数组和然后循环遍历变化。
这是我第一次尝试使用 javascript "for" 循环:
var browserTransitionCSS = [
'-webkit-transition',
'-moz-transition',
'-ms-transition',
'transition'
];
for(var i=0; i < browserTransformCSS.length; i++)
{
$('#logo').css({
browserTransformCSS:
"rotateY("
+ (e.pageX-(current_width/2))/150 +
"deg) rotateX("
+ (e.pageY-(e.pageY*2-600)-(current_height/2))/200 +
"deg)",
});
};
这是我第二次尝试使用 Jquery "each" 循环:
var browserTransitionCSS = [
'-webkit-transition',
'-moz-transition',
'-ms-transition',
'transition'
];
$.each(browserTransitionCSS, function(something) {
$('#logo').css({
something :
"rotateY("
+ (e.pageX-(current_width/2))/150 +
"deg) rotateX("
+ (e.pageY-(e.pageY*2-600)-(current_height/2))/200
+ "deg)",
});
});
现在,经过数小时的挣扎,我正在屈服并询问是否有人可以帮助我。
如果看到我的网址会有所帮助,请询问。
这里的任何帮助将不胜感激。非常感谢。
【问题讨论】:
-
好吧,我还没到那里,所以编写了一个工作示例:jsfiddle.net/asy9u/5。任何帮助将不胜感激。
标签: javascript jquery for-loop each