javascript - spritesheet 和 css 类哪个更高效

标签 javascript jquery html css

我想在用户点击 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 浏览器的移动设备。

最佳答案

使用 CSS3 可以实现最佳性能。这是因为它的浏览器使用硬件加速。

编辑:我错了(感谢 Zougen Moriver)它不会自动触发(请参阅评论),但它仍然 better performance over the javascript solutions .

这是一个示例:

.test {
    height: 100px;
    width: 100px;
    background-color: #eee;
    -webkit-transition: all 1s ease-in-out;
    -moz-transition: all 1s ease-in-out;
    -o-transition: all 1s ease-in-out;
    transition: all 1s ease-in-out;
  }
.test:hover {
    background-color: #fc3;
}

http://jsfiddle.net/Vandeplas/LZNZb/

我使用悬停是因为它不需要 javascript,但是如果您更改颜色(通过 javascript,通过添加类或更改样式),它会淡出为该颜色。

缺点是它isn't supported on legacy browsers ..

以下是使用点击处理程序的示例:

$('.test').on('click', function() {
    $(this).css('background-color', 'green');
    //$(this).addClass('otherColor');
});

http://jsfiddle.net/Vandeplas/LZNZb/1/

正如你所看到的,我使用类注释掉了另一个选项...两者都可以工作...

关于javascript - spritesheet 和 css 类哪个更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21599545/

相关文章:

javascript - 如何使用javascript更改或替换div、row下的文本

Javascript - 让一个 div 淡入,停留一段时间,淡出然后删除它

javascript - `$.post` 有多少是阻塞的?

html - 电晕sdk网站背景

javascript - 根据所选框单击提交按钮时网址未打开

javascript - 如何覆盖 Material UI 工具提示内联样式?

javascript - 如何将 jquery 函数/回调移动到准备好的文档中

html - 高度为 div 的 100%

javascript - 在新部分中使用 CSS 维护事件按钮的解决方案

javascript - 为什么表格排序在我的 table 上不起作用? ( Ajax 表)