css Sprite 作为背景,有限的部分?

标签 css image sprite

我需要放置一个 48x48 的图标作为背景。我的图像 Sprite 中有这个图标,当然还有许多其他图像。

有没有办法只显示图像的一部分作为背景?

谢谢

编辑:有没有办法在不设置背景元素的 width-height 的情况下做到这一点? (我不确定我是否真的可以设置宽高)

Edit2:这是我需要的:http://jsfiddle.net/pdxnj/

谢谢

最佳答案

设置元素的宽高为48px。

.element{
    width: 48px;
    height: 48px;
}

将元素的背景设置为您的图像

.element{
    background-image: url('image.png');
}

移动背景,使图标的左上角位置正确。

.element{
    background-position: 20px 94px;
}

background-position 中的两个数字是 X 和 Y 坐标(分别),其中 48px x 48px 的左上角在 Sprite 图像中。所以也许它实际上是 96px 0px 或其他东西。

编辑

如果您无法控制要放置背景的元素的宽度和高度,但可以添加新的 DOM 元素,则可以尝试在您真正想要放置图像的元素内添加一个 span的背景。

它看起来像:

<div id="noControl">
    <span id="justCreated">
    </span>
</div>

并且 CSS 看起来与上面完全相同,只是您需要将内联跨度视为 block 元素:

#justCreated{
    display: inline-block;
}

编辑2

如果您可以控制新的 DOM 元素,并且想让您的 sprite 成为背景而不弄乱 span,只需在您的原始 div 中添加另一个 div。

最终看起来像:

<div id="noControl">
    <div id="justCreated">
        ALL of the content that used to be inside #noControl
    </div>
</div>

它的 CSS 是

#justCreated{
    width: 48px;
    height: 48px;
    background-image: url('image.png');
    background-position: 96px 0px;

    z-index: -200;
    /* z-index of all the contents needs to be not set, or set to larger than -200 */
}

这都是理论上的,但应该可行。

这样,您就可以将 sprite 大小应用于 block 元素,而不会弄乱内联内容。如果它按子状态(如 #noControl > a)处理元素,这可能会影响 CSS,因为您要在父项和子项之间插入一个 div。

我仍在研究如果您根本无法控制 DOM,是否可以做到这一点。

关于css Sprite 作为背景,有限的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437209/

相关文章:

image - Opera 无法识别链接 — 图像和 css3 列

php - dataurl 到图像以在 php 中下载

python - 我如何在pygame中删除我的 Sprite 表上的黑色背景

CSS Sprite 作为背景

html - 最小化浏览器时 div 重叠

css - 与 block 引用中的文本关联的不透明度

html - 背景图像未在 css 中显示

java - 如何用双缓冲在Java中显示Pacman的张嘴/闭嘴动画?

css - 使用 CSS 避免在第一行断字

python - 我怎样才能像这样对齐文本和图像?