CSS Sprites - 仅使用一个图像作为元素的一部分的背景

Ale*_*ack 7 html css css-sprites css3

我使用CSS Sprite技术,背景图像看起来像这样:

在此输入图像描述

图标的CSS代码:

div.icon {
    background-color: transparent;
    background-image: url("/images/icons.png");
    background-position: 0 0;
    background-repeat: no-repeat;
    display: inline-block;
    height: auto;
    vertical-align: text-top;
    width: auto;
}
div.icon:empty {
    width:16px;
    height:16px;
}
div.icon:not(:empty) {
    padding-left:20px;
}
div.icon.attenuation {
    background-position: 0 0;
}
Run Code Online (Sandbox Code Playgroud)

我的图标可以像这样使用:

<div class="icon warning"></div>
Run Code Online (Sandbox Code Playgroud)

我想在我的图标中添加一些文字,如:

<div class="icon warning">There is a warning on this page</div>
Run Code Online (Sandbox Code Playgroud)

但问题是背景图像覆盖整个文本区域:

在此输入图像描述

问题是:我如何只使用图像的一部分作为我元素的一部分的背景图像?

笔记:

  • 设置width16pxfor div.icon无济于事.

Ale*_*ain 7

请记住,在可能的情况下,您不应仅为实现设计而更改标记.可以使用您的标记.

div.icon:before {
    content: "";
    background-color: transparent;
    background-image: url("/images/icons.png");
    display: inline-block;
    height: 16px;
    vertical-align: text-top;
    width: 16px;
}

div.icon:not(:empty):before {
    margin-right: 4px;
}

div.icon.attenuation {
    background-position: 0 0;
}
Run Code Online (Sandbox Code Playgroud)


jum*_*ncy 6

你有两种方式:

1)您的标记必须如下:

<div class="icon warning"></div><div class="txt">There is a warning on this page</div>
.icon {width:10px(for ex.)}
Run Code Online (Sandbox Code Playgroud)

2)您必须更改图像.图像中的图标必须低于另一个图标