我正在试图弄清楚如何在我的ol中设置样式。我的目标是使最终结果具有水平线,左边的数字在li文本下对齐。
最终结果的外观示例:
项目项目项目项目项目
1 2 3 4 5
答案 0 :(得分:5)
以下是使用伪元素定位自定义计数器来实现此设计的一种方法。
您可以从有序或无序列表开始:
<ol class="list">
<li>Apples</li>
<li>Bananas</li>
<li>Cherries</li>
<li>Durian</li>
</ol>
应用以下CSS:
.list {
counter-reset:itemcounter;
margin: 0;
padding: 0;
}
.list li {
border: 1px dotted gray;
margin-right: 30px;
float: left;
list-style: none;
}
.list li:after {
content:counter(itemcounter);
color:#000;
counter-increment: itemcounter;
display: block;
background-color: pink;
padding: 0px;
text-align: left;
padding-right: 5px;
}
定义自定义计数器并将其放置在伪元素li:after
中。
我浮动列表项以获取水平菜单,但您也可以使用内联块。
请参阅演示:http://jsfiddle.net/audetwebdesign/DgZvg/
向后兼容性
此处的限制设计因素是自定义计数器,IE8将继续支持该计数器:http://caniuse.com/#feat=css-counters
对于不支持计数器和生成内容的旧版浏览器,您可以尝试以下内容:
您需要在列表内容中添加包装元素:
<ol class="list">
<li><p>Apples</p></li>
<li><p>Bananas</p></li>
<li><p>Cherries</p></li>
<li><p>Durians</p></li>
</ol>
然后应用以下CSS:
.list {
margin: 0;
padding: 0;
}
.list li {
list-style-position: inside;
border: 1px dotted gray;
margin-right: 30px;
padding-left: 5px; /* gives you some control... */
float: left;
padding-top: 20px;
line-height: 20px;
width: 100px;
position: relative;
}
.list li p {
height: 20px;
margin: 0;
position: absolute;
bottom: 20px;
left: 0;
}
在这种情况下,您list-style-position: inside
,然后通过指定20px的行高和20px的padding-top来定义两行文本区域。您还需要在列表项上指定宽度。
然后将高度设置为内包装,然后使用绝对定位将底部偏移20px。
由于宽度和高度的长度,这是更多的工作,有点受限制, 但它是一个概念验证。
答案 1 :(得分:0)
我在li中使用了一个span来将文本放在元素上方。您可能需要调整CSS以在实际环境中更好地工作。
<强> HTML 强>
<ol class="example">
<li>
<span>Item</span>
</li>
<li>
<span>Item</span>
</li>
<li>
<span>Item</span>
</li>
<li>
<span>Item</span>
</li>
<li>
<span>Item</span>
</li>
</ol>
<强> CSS 强>
.example li {
float:left;
padding:10px;
}
.example:after{
content:"";
display:block;
clear:both;
}
.example li span {
position:relative;
left:-35px;
top:-20px;
}
答案 2 :(得分:0)
这是我的方式,使用CSS 2.x和跨浏览器:)
<强> HTML 强>
<ol>
<li><span>item</span></li>
<li><span>item</span></li>
<li><span>item</span></li>
<li><span>item</span></li>
<li><span>item</span></li>
</ol>
<强> CSS 强>
ol li {
position:relative;
min-width:100px;
padding:30px 0 0;
float:left;
}
ol li span {
position:absolute;
left:-30px;
top:0px;
}