我正在寻找一个漂亮的透明ajax加载图标,该图标在任何背景下看起来都很好。我已经去了ajaxload.info和其他各种生成器网站,但是它们在暗色背景上都不好看。有人知道哪里可以获取到透明的加载图标吗?
我最近改用支持 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);
这是因为要使它们看起来好看,需要Alpha透明度(即每个像素的部分透明度),而GIF格式(浏览器支持的唯一常见动画图像格式)只支持二进制透明度(每个像素要么完全不透明,要么透明)。
我想到的关于GIF的唯一解决方案是根据背景颜色动态生成加载器 - 即使如此,它也无法处理非纯色。
最佳解决方案是使用不需要Alpha透明度的动画(Facebook的三块就是一个很好的例子),或者尝试使用一些新的基于CSS3/Javascript/Canvas的炫酷旋转图标 - 因为这些图标通过实际移动(即旋转)单个帧进行动画处理,所以可以使用带有Alpha透明度的PNG格式。
他们的文档中描述的光环功能提供了解决此问题的解决方案。
使用字体。
代码将类似于以下内容,使用CSS旋转字体的单个字符:
<i class="icon-spin3 animate-spin"></i>
请查看Fontello,以获取“图标”字体。例如,在“Fontelico”字体中提供了一些好的“可旋转”的字符:
使用字体也让您可以非常轻松地设置大小、颜色和透明度(只需CSS)。并且它被渲染为矢量图形,因此无论大小如何,都会获得清晰的边缘。相当不错。
ps - Fontello的一个好处是,它允许您手动选择所需的字符,然后下载一个包含简化字体文件和所需CSS的zip文件。要使用animate-spin类,请确保包含/使用animation.css文件。
animate-spin
类所做的事情。Fontello甚至为你提供了所需的CSS。 - broc.seibanimation
和transform
。请参考我之前关于这个限制的评论。 - broc.seib