CSS:两个背景图像,位置在一个元素上

axkjgtzd  于 2023-10-21  发布在  其他
关注(0)|答案(4)|浏览(118)

在我的CSS文件中,我有一个规则:在文本元素前后添加两个背景图像。之前我用了两张图片,一切都很好。但现在我使用精灵:所以我需要得到大图像的区域,并将其发布到元素(背景位置),但我有一个麻烦:如果我设置背景位置:我不能坚持它的位置,像左中心和右中心:
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

6uxekuva

6uxekuva1#

我担心这是不可能的,以限制可视区域的精灵图像,除非元素本身的大小是有限的。
然而,也许你可以将背景图像分配给::before::after伪元素,它们被正确地定位在父框的左侧/右侧(通过floatabsolute定位)。
这样你就可以独立地处理每个图标的位置。
例如:

.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>
plupiseo

plupiseo2#

您正在使用的leftright属于background-position。像素定义覆盖了它们。
你应该把图像分成两个不同的元素。

0yg35tkg

0yg35tkg3#

不要使用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>
mwg9r5ms

mwg9r5ms4#

section.homepage.customer{
    background-image: url('/assets/img/homepage/top-left.png'), url('/assets/img/homepage/bottom-right.png');
    background-position: top left, bottom right;
    background-repeat: no-repeat;
    background-size: 672px;
}

相关问题