【发布时间】:2011-06-30 10:08:26
【问题描述】:
我想将我所有的小图像保存在一个 sprite 文件中,例如:
现在假设我想添加一个薄的背景图像,它意味着在元素宽度的 100% 上重复 x:
这是否必须作为单独的实体存储,或者我可以以某种方式将其存储在精灵图像中?我不知道是否可以对精灵的一部分进行背景重复,我认为不是,但我很确定我已经在某处看到它。
【问题讨论】:
标签: html css css-sprites
我想将我所有的小图像保存在一个 sprite 文件中,例如:
现在假设我想添加一个薄的背景图像,它意味着在元素宽度的 100% 上重复 x:
这是否必须作为单独的实体存储,或者我可以以某种方式将其存储在精灵图像中?我不知道是否可以对精灵的一部分进行背景重复,我认为不是,但我很确定我已经在某处看到它。
【问题讨论】:
标签: html css css-sprites
我不确定这是否已经在 CSS3 中,但 Gecko 引擎 (Firefox 4 ...) 将 image-rect 添加为 -moz-image-rect,它允许您选择图像的特定部分以供使用。这样你就可以选择你的精灵的一部分作为背景图像,然后重复它。
虽然它绝对不是广泛传播或标准的。
我喜欢做 3 种精灵。一种带有图标,您根本不使用重复,一种用于水平重复图像,一种用于垂直重复图像。
这样你可以为一个精灵添加多个重复的背景,但使用起来不会那么麻烦。
【讨论】:
您必须将其设置为精灵图像的全宽。否则在重复时可能会泄漏其他图像或空白。
请记住,重复非常小的背景图片(1-2 像素宽)会对性能产生可怕的影响 - 最好使用大一点的图片,因此即使它会很宽 - 实际上它可以更好地呈现页面明智的,然后是 1px 宽的。
编辑:(关于您的编辑)
如果您的元素是固定高度,您可以将其放在您的精灵宽度 100% 宽度的精灵上,并具有所需的元素最大高度。或者,如果您知道它的最大宽度小于精灵的宽度,则将其设为具有元素最大宽度和高度的矩形。
如果你不知道最大高度并且你想把它放在最上面以便渐变缓和成纯色,如果你把你重复的图像放在精灵的最底部并用负定位它可以做到最高值background-position: 0px -300px,其中 300px 是精灵顶部到精灵背景图像顶部的距离。
看看谷歌如何在精灵上定位重复的BG:
【讨论】: