在每个列表项后插入图像

Zac*_*Zac 137 css

在每个列表元素之后插入小图像的最佳方法是什么?我用伪类尝试了它,但有些事情是不对的......

ul li a:after {display: block;
width: 3px;
height: 5px;
background: url ('../images/small_triangle.png') transparent no-repeat;}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

jim*_*myi 319

更简单的方法就是:

ul li:after {
    content: url('../images/small_triangle.png');
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,IE7很糟糕. (201认同)
  • 请注意,内容属性在IE7中不起作用. (9认同)
  • 开玩笑在IE 5中不起作用 - 开个玩笑:P (7认同)
  • 对我来说甚至不是IE 8 (2认同)
  • 您需要一个doctype才能在IE8中工作. (2认同)
  • 但是您不能使用此方式为图像提供高度/宽度。 (2认同)

Tys*_*son 76

试试这个:

ul li a:after {
    display: block;
    content: "";
    width: 3px;
    height: 5px;
    background: transparent url('../images/small_triangle.png') no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

您需要content: "";声明来提供生成的元素内容,即使该内容为"无".

另外,我修改了background声明的语法/顺序.

  • 我比较简单的技术喜欢这种技术,因为它可以让你使用background-image-size控制图像的大小. (12认同)
  • 如果要水平居中图像,还需要此选项.你不能将它定位于'left:50%`,因为它不会与中间对齐.使用`left:0; width:100%`并将背景位置设置为50%.对我来说效果很好.感谢有关所需`content`属性的提示. (2认同)

小智 11

对于IE8支持,"content"属性不能为空.

为了解决这个问题,我做了以下工作:

.ul li:after {
    content:"icon";
    text-indent:-999em;
    display:block;
    width:32px;
    height:32px;
    background:url(../img/icons/spritesheet.png) 0 -620px no-repeat;
    margin:5% 0 0 45%;
}
Run Code Online (Sandbox Code Playgroud)

注意:这也适用于图像精灵


Gab*_*ley 5

我认为您的问题是 :after psuedo-element 需要在其中设置 content: 属性。你需要告诉它插入一些东西。你甚至可以让它直接插入图像:

ul li:after {
    content: url('../images/small_triangle.png');
}
Run Code Online (Sandbox Code Playgroud)