使用HTML有序列表编号项目符号

时间:2011-12-30 16:31:20

标签: javascript html css

有人能想出一种方法来使用ol / li列表中的数字来标记图片吗?

<ol>
  <li><img /></li>
  <li><img /></li>
  <li><img /></li>
</ol>

应用一些CSS应该输出以下内容:

------ ------ ------
|    | |    | |    |
|    | |    | |    |
|   1| |   2| |   3|
------ ------ ------

每个方格都是一张小型的图片。

我知道我可以在li中插入一个带有数字的新元素,并根据需要对其进行操作,但我想使用内置的ol编号进行操作。

2 个答案:

答案 0 :(得分:9)

足够简单:

ol {
    counter-reset: listCount;
}
li {
    float: left;
    border: 3px solid #f90;
    counter-increment: listCount;
    position: relative;
}
li:after {
    content: counter(listCount,decimal-leading-zero);
    position: absolute;
    bottom: 0;
    right: 0;
    width: 2em;
    height: 2em;
    color: #fff;
    background-color: rgba(0,0,0,0.5);
    text-align: center;
    line-height: 2em;
}

JS Fiddle demo

当然,这确实要求用户拥有一个能够使用css-generated-content的浏览器,这很好地排除了IE。

参考文献:

答案 1 :(得分:5)

似乎有点hacky恕我直言,但这有效(至少在Firefox中):

http://jsfiddle.net/ztfzt/14/

<ol>
    <li><img src="http://placekitten.com/100/100" /></li>
    <li><img src="http://placekitten.com/100/100" /></li>
    <li><img src="http://placekitten.com/100/100" /></li>
</ol>

ol {}
ol li {
    float: left;
    list-style-position: inside;
    position: relative;
    width: 100px;
    height: 100px;
    margin-right: 5px;
    line-height: 170px;
    text-indent: 85px;
    color: #fff;
}
ol li img {
    position: absolute;
    left: 0;
    top: 0;
    z-index: -1;
}

如果我是你,我会选择其他元素解决方案。

编辑:在chrome,IE9和8中测试过。似乎在两者中都能保持一致。然而,IE7中的问题可能会通过一些额外的浏览器特定的CSS来解决。