В моем файле css у меня есть одно правило: два добавляют два фоновых изображения до и после текстового элемента. Раньше я использовал два изображения, и все было в порядке. Но теперь я использую спрайты: поэтому мне нужно получить область большого изображения и опубликовать его в элементе (background-position), но у меня есть одна проблема: если я установил положение фона: я не мог бы придерживаться его положения, например, слева по центру и справа от центра :
background: url(../images/png/elements.png) no-repeat -5px -152px, url(../images/png/elements.png) no-repeat -5px -104px;
Как я могу разместить первую часть слева, а вторую справа от элемента?
Раньше было:
background: url(../images/png/mail.png) no-repeat left center, url(../images/png/edit.png) no-repeat right center;
Это реально делать?
Также: я использую его с :hover
3 ответа
Боюсь, что невозможно ограничить видимую область изображений спрайтов, если не ограничен размер самого элемента.
Однако, возможно, вы могли бы назначить фоновые изображения псевдоэлементам ::before
и ::after
, которые правильно расположены слева / справа от родительского блока (либо с помощью float
, либо {{X3 }} позиционирование).
Так что вы можете обрабатывать положение каждого значка независимо друг от друга.
Например:
.box:before, .box:after {
content: "";
display: inline-block; /* or position these elements by floats, etc. */
width: 48px; /* for instance */
height: 48px; /* for instance */
}
.box:before {
background: url(../images/png/elements.png) no-repeat -5px -152px;
}
.box:after {
background: url(../images/png/elements.png) no-repeat -5px -104px;
}
<div class="box"></div>
Не используйте для этого Shorthand
(особенно в свойстве position):
попробуйте что-то вроде:
div {
width: 100%;
height: 190px;
border: 1px solid red;
background: url(http://alt-web.com/Images/CSSSprite.jpg), url(http://alt-web.com/Images/CSSSprite.jpg);
background-position: left top, right bottom;
background-repeat: no-repeat;
}
<div></div>
Изменить: пример с пикселями, нулем и%.
div {
width: 100%;
height: 190px;
border: 1px solid red;
background-image: url(http://alt-web.com/Images/CSSSprite.jpg), url(http://alt-web.com/Images/CSSSprite.jpg);
background-position: 0 0, 100% -1215px;
background-repeat: no-repeat;
}
<div></div>
Используемые вами left
и right
принадлежат background-position
. Определения пикселей имеют приоритет над ними.
Вы должны разделить изображения на два разных элемента.
Похожие вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].