html - 在元素符号之前将列表项与自定义 CSS 内容对齐

标签 html css html-lists

我有这段 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)但这也不起作用。

最佳答案

尝试将整个 div 的边距偏移 before 的宽度,然后在 before after 上取消边距。

像这样:

.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>

您也可以通过定位来做到这一点,但您可能会遇到其他元素受到影响的障碍。

关于html - 在元素符号之前将列表项与自定义 CSS 内容对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246689/

相关文章:

html - SVG 高度元素不是动态的?

html - 为什么我的列表左侧比右侧大?

html - 将 <li> 中的文本基线向上移动 2 px

Jquery Li 图片库

javascript - Uniform.js 样式替代 SexyCombo 表单选择

javascript - 如何通过 JavaScript 查看上次修改的 HTML 日期

html - SWF 文件未在 IE 上加载

html - 如何在表中嵌套表?

html - 带有 flexbox 的流体宽度文本区域;百分比被忽略

html - 隐藏滚动条但保留以原生感觉滚动的能力