Установите ширину и высоту элемента на 48 пикселей.
.element{
width: 48px;
height: 48px;
}
Установите фон элемента для вашего изображения
.element{
background-image: url('image.png');
}
Переместите фон так, чтобы верхний левый угол значка располагался правильно.
.element{
background-position: 20px 94px;
}
Два числа в background-position являются координатами X и Y (соответственно), где левый верхний угол вашего 48px на 48px находится в вашем изображении спрайта. Так что, может быть, это на самом деле 96px 0px
или что-то.
EDIT
Если вы не можете контролировать ширину и высоту элемента, в который вы пытаетесь поместить фон, но вы можете добавить новые элементы DOM, вы можете попробовать добавить диапазон внутри элемента, для которого вы действительно хотите поместить изображение как фон для.
Это будет выглядеть примерно так:
<div id="noControl">
<span id="justCreated">
</span>
</div>
и CSS будет выглядеть точно так же, как указано выше, за исключением того, что вам потребуется обрабатывать встроенный интервал как элемент блока:
#justCreated{
display: inline-block;
}
РЕДАКТИРОВАТЬ 2
Если у вас есть контроль над новыми элементами DOM и вы хотите, чтобы ваш спрайт был фоновым, не мешая промежутку, просто добавьте еще один 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 */
}
Это все теоретически, но ДОЛЖНО работать.
Таким образом, вы можете применить размер спрайта к элементу блока, не вмешиваясь во встроенные элементы. Это может повлиять на CSS, если он обращается к элементам по дочернему статусу (например, #noControl > a
), потому что вы вставляете div между родителем и дочерним элементом.
Я все еще исследую, можете ли вы сделать это вообще, если у вас вообще нет контроля над DOM.