社交图标的 CSS Image Sprites 与 UI 字体——从页面加载速度的 Angular 来看

标签 css fonts sprite page-load-time

我很好奇为我的社交媒体图标使用 CSS 图像 Sprite 与使用自定义 UI 字体的优缺点。

哪一个将在页面加载速度方面提供卓越的性能?

在我看来,CSS Sprite 可能更好 - 因为只有一个 HTTP 请求,文件大小可能比社交图标的自定义 UI 字体更小。

有人对此有见解吗?

最佳答案

这两种技术中的一种会略微“在页面加载速度方面表现出色”,但大多数时候元素要求和开发时间远比加载速度重要。

图像 Sprite vs 图标字体 和页面加载速度

请求数:两种技术都需要 CSS 并加载一个文件。您需要生成多种字体,但只请求并使用了一种字体。

CSS 数量:大致相同。 @font-face 是更多的初始代码,但更少应用图标。

文件大小:大致相同,但取决于图标大小。更大的图标需要更大的图像 Sprite 。字体使用矢量并将保持相同的大小。我查了一个有 300 个字形的字体,它是一个 25KB 的 WOFF(SVG 是大小的两倍)。包含一个字形的字体为 4KB。为了比较这两者,我应该在 sprite 中将所有字形透明渲染为黑色。但是图标大小是多少?

渲染速度:可以忽略不计。

缓存:可以忽略不计。有图标字体的 CDN。

我认为这两种技术得分相同。差异可以忽略不计。当然,一个会比另一个稍微快一点。但是你应该根据你的具体情况来衡量。无论如何,我们知道多个请求是瓶颈。而且字体和 Sprite 都只需要一个请求。

Image spriteIcon font 和重要的东西!

颜色: Sprite 可以在同一个图标中使用所有 RGBA 颜色。字体只有一种颜色。您可以应用效果使字体更加特殊(并且这些效果将与其他页面元素上的相同效果相匹配)。

形状/大小:如果您想应用不同大小的图标(例如高分辨率显示器),图像 Sprite 需要重复的图标。可以应用任何大小的字体。

渲染:图像 Sprite 渲染像素完美。字体由渲染引擎应用,导致每个平台的差异。 Windows 使用内置的提示指令。创建好的提示需要很多技巧。

使用区域:图像 Sprite 也可以被其他页面元素(背景)使用。由于字体作为文本应用,因此它们的使用区域较小。

可维护性:图标需要大一个像素。这种变化使您生成 Sprite 并更新 CSS。通过更改字体,只需更改一个字体大小值即可完成工作。

开发时间:以上几点是创建您自己的图标时的重要设计决策。也就是说,大多数开发人员只是使用他们觉得舒服的技术。或者选择其中一种可能的 Sprite 或字体。

回到你的问题。您想在单个图像中使用多种颜色吗?比图像 Sprite 是要走的路。我会将每个图标作为单独的 Base64 图像包含在内。它使维护变得容易。尽管这是有代价的:非常粗略地说,Base64 编码的二进制数据的最终大小等于原始数据大小的 1.37 倍 + 814 字节(对于 header )。

我很好奇你的考虑是什么。期待您的评论!

关于社交图标的 CSS Image Sprites 与 UI 字体——从页面加载速度的 Angular 来看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20849578/

相关文章:

html - 如何停止列表项换行

jquery - 在选择下拉列表中设置标题样式

html - 创建一个 DIV,填充可变高度标题下方的屏幕剩余部分

iOS,在 UIImage 上绘制带笔划的文本

android - AndEngine 同时移动两个对象

unity-game-engine - Unity - 如何在运行时更改玩家 Sprite 表?

jquery - Bootstrap 轮播指示器 > 事件指示器不会改变

javascript - 如何在 Three.js 中设置自定义字体渲染到离屏 Canvas 的大小?

javascript - html canvas字体缩放问题,文字无故闪烁

ios - 如何向另一个节点的方向移动节点