使用HTML的有序列表数字标志进行排版设计

4

有没有人能想到一种方法,利用ol/li列表中的数字来标记图片?

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

应用一些CSS后,应输出以下内容:
------ ------ ------
|    | |    | |    |
|    | |    | |    |
|   1| |   2| |   3|
------ ------ ------

每个方格都是一个小的个人资料图片。

我知道我可以在 li 中插入一个带数字的新元素并根据需要进行操作,但我希望使用内置的 ol 编号来完成它。

2个回答

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演示

当然,这需要用户使用具备使用css生成内容能力的浏览器,这基本上排除了IE。

参考资料:


5

我认为这个方法有点难以理解,但至少在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进行修复。


我认为你应该在“ol li”条目上加上float:left,因为他提交的图片看起来条目是水平排列而不是垂直排列。 - Zack Macomber
我之前不知道有list-style-position这个属性。非常棒的答案。 - lostinplace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接