在背景图像上使用伪元素之前和之后

时间:2012-06-03 14:56:13

标签: html background-image pseudo-element

我想从三个(背景)图像构建导航项目,第一个和最后一个是固定宽度,中心是可变宽度,具体取决于导航项目中文本的宽度。我被引导相信使用前后的伪元素将是最好的方法。当我尝试这个时,导航项的主(中央)背景图像与前后图像重叠。

您可以在this page上看到我的意思。

这是CSS:

.box {
   background-image: url(nav/images/nav_02.png);
   background-repeat: repeat;
   height:20px;
   position: absolute;
   padding: 10px 13px;
}


.box:before {
    left: 0;
    background-image: url(nav/images/nav_01.png);
}

.box:after {
    right: 0;
    background-image: url(nav/images/nav_03.png);
}

.box:before,
.box:after {
    content: ' ';
    width: 13px;
    height:40px;
    position: absolute;
    top: 0;
    background-repeat: no-repeat
}

以及HTML:

<div class="box">here is some text</div>

我可以使用伪元素以这种方式使用背景图像吗?

谢谢,

尼克

1 个答案:

答案 0 :(得分:5)

是,您必须使用左右属性将伪元素移动到正确的位置。主框定位的填充不正确。更好地利用保证金。

.box {
    background-repeat-x: repeat;
    background-image: url(nav/images/nav_02.png);
    background-repeat: repeat;
    height: 40px;
    position: absolute;
    margin: 0 13px;
    line-height: 40px;
}

.box:before, .box:after {
    content: ' ';
    display:block;
    width: 13px;
    height: 40px;
    position: absolute;
    top: 0;
    background-repeat: no-repeat;
}

.box:before {
    left: -13px;
    background-image: url(nav/images/nav_01.png);
}

.box:after {
    right: -13px;
    background-image: url(nav/images/nav_03.png);
}