【发布时间】:2011-11-16 16:24:16
【问题描述】:
我正在尝试找到一个在任何背景下看起来都不错的像样的透明 ajax 微调器。我访问了 ajaxload.info 和其他各种生成器站点,但它们在深色背景下都不好看。有谁知道我在哪里可以得到一个透明的微调器?
【问题讨论】:
我正在尝试找到一个在任何背景下看起来都不错的像样的透明 ajax 微调器。我访问了 ajaxload.info 和其他各种生成器站点,但它们在深色背景下都不好看。有谁知道我在哪里可以得到一个透明的微调器?
【问题讨论】:
这是因为要使它们看起来不错,您需要 alpha 透明度(即基于每个像素的部分透明度),GIF 格式(浏览器中唯一支持的常见动画图像格式)仅支持二进制透明度(每个像素100% 不透明或透明)。
我为 GIF 想出的唯一解决方案是根据背景颜色动态生成加载器 - 即使这样它也不适用于非纯色。
最好的解决方案是要么使用不需要 alpha 透明度的动画(Facebook 的三个块就是一个很好的例子),要么尝试一个新奇的基于 CSS3/Javascript/Canvas 的微调器 - 因为那些动画通过实际上移动(即旋转)单个帧,它可以是具有 alpha 透明度的 PNG。
【讨论】:
docs 中描述的光环功能提供了解决此问题的临时解决方案
【讨论】:
我最近切换到支持 Alpha 通道透明度的 PNG 精灵:
(使用 http://preloaders.net/ 生成)
尽管它们需要一个小的 javascript 循环来更改背景图像的偏移量,但我发现它们非常有用,尤其是在向服务器提交 (POST) 表单时(普通 GIF 的动画通常在这种情况下停止)。此外,与旋转或绘制自定义元素相比,旧版浏览器对它的支持更好。
var counter = 0;
setInterval(function() {
var frames=12; var frameWidth = 15;
var offset=counter * -frameWidth;
document.getElementById("spinner").style.backgroundPosition=offset + "px 0px";
counter++; if (counter>=frames) counter =0;
}, 100);
【讨论】:
使用字体。
代码看起来像这样,使用 CSS 旋转字体的单个字符:
<i class="icon-spin3 animate-spin"></i>
查看Fontello 以获得“图标”字体。例如,以下是“Fontelico”字体中提供的一些不错的“可旋转”字符:
使用字体还可以让您非常轻松地设置大小、颜色和透明度(它只是 CSS)。它被渲染为矢量图形,因此无论大小如何,您都将始终获得干净的边缘。很不错。
ps - 关于 Fontello 的一个好处是它可以让您手动选择您想要的字符,然后您下载一个包含精简字体文件和所需 css 的 zip 文件。要使用 animate-spin 类,请务必包含/使用 animation.css 文件。
【讨论】:
animation 和 transform 旋转字符。对animation 属性的支持将是最大的限制因素,需要IE10 或更高版本。请参阅:caniuse.com/#feat=css-animation。
同时,由于 CSS 动画支持变得越来越可用,这里有一组令人印象深刻的 10 个纯 CSS 加载指示器: http://tobiasahlin.com/spinkit/
【讨论】: