CSS3多个背景,一个在ul中重复

时间:2012-11-20 06:39:06

标签: html css wordpress html-lists background-image

我正在使用Wordpress模板。我正在尝试实现3个背景图像,用于导航菜单中的每个<li>,这是动态生成的。看看这两个例子。

http://preahkumpii.com/misc/test01/hi.html
http://preahkumpii.com/misc/test02/hi.html

第一个示例CSS:

.menu-item li {
  background-image: url(images/menu-left.png), url(images/menu-right.png), url(images/menu-center.png);
  background-position: left, right, center;
  background-repeat: no-repeat, no-repeat, no-repeat;
}

第二个例子CSS:

.menu-item li {
  background-image: url(images/menu-left.png), url(images/menu-right.png), url(images/menu-center.png);
  background-position: left, right, center;
  background-repeat: no-repeat, no-repeat, repeat-x;
}

HTML:

<ul class="menu-item">
  <li>ItemNumber1</li>
  <li>ItemNumber2</li>
  <li>ItemNumber3</li>
</ul>

我希望两个外部bg图像保持在没有重复的位置。但是,我希望中间的bg图像沿x轴重复,但只扩展到其他bg图像。正如您在第二个示例中所看到的,当中间图像被赋予repeat-x时,它会扩展到整个<li>。据我所知,我不能使用<div>来实现这一点,因为菜单的文本是动态生成的。所以,我认为我必须一个<ul>而没有一堆<div>。有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

嘿,您可以使用after-before 伪类来获得所需的结果。

请参阅 CSS 我是如何做到的: -

<强> CSS

.menu-item li:after {
    background: url("images/menu-center.png") repeat-x scroll 0 0 transparent;
    bottom: 0;
    content: " ";
    left: 20px;
    position: absolute;
    right: 20px;
    top: 0;
    z-index: -1;
}
.menu-item li {
    background-image: url("images/menu-left.png"), url("images/menu-right.png");
    background-position: left center, right center;
    background-repeat: no-repeat, no-repeat;
    display: inline-block;
    height: 56px;
    line-height: 56px;
    min-width: 60px;
    padding: 0 20px;
    position: relative;
    text-align: center;
    z-index: 1;
}

查看输出我是如何做到的 enter image description here