我有这段HTML代码:
<ul class="custom">
<li data-bullet="a">Item 1</li>
<li data-bullet="aa">Item 2</li>
<li data-bullet="ab">Item 3.1<br/>Item 3.2</li>
<li data-bullet="c">Item 4</li>
<li data-bullet="d">Item 5</li>
<li data-bullet="de">Item 6</li>
</ul>
和CSS:
.custom {
list-style:none;
padding:0;
margin:0;
}
.custom li:before {
display:inline-block;
content:attr(data-bullet);
width:50px;
}
/*
.custom {
list-style:none;
padding:0;
margin:0;
}
.custom li:before {
display:inline-block;
content:attr(data-bullet);
position:relative;
top:0;
left:-50px;
}
.custom li {
padding-left:50px;
}
*/
http://jsfiddle.net/g0w989aa/1/
它在列表项的内容之前使用CSS以创建自定义列表编号。问题是如果列表项的内容长于一行,则文本的对齐不能正常工作。
有没有办法正确对齐线条的内容?我已经尝试将内容定位为相对位置并为列表项添加填充(请参阅示例中的注释掉的css),但这也不起作用。
答案 0 :(得分:7)
尝试将整个div的边距偏移before
的宽度,然后在before
之后取消边距。
像这样:
.custom {
list-style: none;
padding: 0;
margin: 0;
margin-left: 50px;
}
.custom li:before {
display: inline-block;
content: attr(data-bullet);
width: 50px;
margin-left: -50px;
}
<ul class="custom">
<li data-bullet="a">Item 1</li>
<li data-bullet="aa">Item 2</li>
<li data-bullet="ab">Item 3.1
<br/>Item 3.2</li>
<li data-bullet="c">Item 4</li>
<li data-bullet="d">Item 5</li>
<li data-bullet="de">Item 6</li>
</ul>
你也可以选择定位,但是你可能会遇到其他元素受到影响的障碍。
答案 1 :(得分:3)
希望这就是你要找的东西。
<强> CSS 强>
.custom {
list-style: none;
padding: 0;
margin: 0;
}
.custom li {
position: relative;
padding-left: 50px;
}
.custom li:before {
display: inline-block;
content: attr(data-bullet);
width: 50px;
position: absolute;
left: 0;
}
<强> HTML 强>
<ul class="custom">
<li data-bullet="a">Item 1</li>
<li data-bullet="aa">Item 2</li>
<li data-bullet="ab">Item 3.1
<br/>Item 3.2</li>
<li data-bullet="c">Item 4</li>
<li data-bullet="d">Item 5</li>
<li data-bullet="de">Item 6</li>
</ul>
答案 2 :(得分:1)
您可以移除li
元素before
的宽度,并使用padding-left
和position: relative
代替li
制作:before
内容为position:absolute
如下。
.custom {
list-style: none;
padding: 0;
margin: 0;
}
.custom li {
position: relative;
padding-left: 50px;
}
.custom li:before {
display: inline-block;
content: attr(data-bullet);
position: absolute;
left: 0;
}