【发布时间】:2014-03-03 04:48:07
【问题描述】:
我想在用户点击 div 时对其进行反馈。 div 将迅速褪色为另一种颜色,然后再次恢复为原始颜色。
我的第一个选择是使用 spritesheet,我将在其中更改 div 的背景位置属性。 部分实现如下所示:
pos = 0;
function fadeAction(el){
if (pos != 100){
pos += 10;
$(el).css("background-position","0% "+pos+"%");
setTimeout(function(){fadeAction(el);},10);
}else
pos=0;
}
我的第二个选择是根据颜色数组更改背景颜色:
colors = ["#FF00FF","#443322", etc];
i = 0;
function fadeAction(el){
if (pos != 10){
i += 1;
$(el).css("background-color",colors[i]);
setTimeout(function(){fadeAction(el);},10);
}else
i=0;
}
我的第三个选项(由于设备不兼容将被废弃)是使用 jquery.color。
function fadeAction(el){
$(el).css("background-color",fadeColor);
$(el).animate({
backgroundColor: "#E9E9E9"
}, 150 );
}
这两种方法中的哪一种(放弃第三种)最有效?页面上会有多个按钮 (div) 使用此功能,主要用于带有 webkit 浏览器的移动设备。
【问题讨论】:
-
您是否也考虑过为此使用 css-transitions 或动画?
-
如果只是颜色,为什么需要spritesheet?它比 CSS 类更难改变。此外,CSS 动画(仅限现代浏览器)比 JS 效果更快
-
我还没有考虑过 css 过渡,我现在就去阅读一下
标签: javascript jquery html css