【问题标题】:Align list item numbers with surrounding paragraphs将列表项编号与周围段落对齐
【发布时间】:2017-05-29 01:29:55
【问题描述】:

列表项可能包含几个段落、图像等。它们都应位于项目编号的右侧。

#page {
  width: 200px;
}

li {
  margin: 1em 0;
}
ol {
  padding: 0;
}
<div id="page">
  <p>Some text</p>
  <ol>
    <li>A list item</li>
    <li>A multiline list item another line</li>
    <li>
      <p>A list item containing blocks such as example images:</p>
      <div style="width:128px;height:48px;background:#CCC">Example<br/>Image</div>
    </li>
  </ol>
  <p>Some more text</p>
</div>

理想情况下,我宁愿保留列表标签,而不是使用表格或其他一组定位的通用块。

【问题讨论】:

    标签: html css


    【解决方案1】:

    查看list-style-positionproperty

    #page {
      width: 200px;
    }
    li {
      margin: 1em 0;
      /* this is what you want ↓ */
      list-style-position: inside;
    }
    ol {
      padding: 0;
    }
    <div id="page">
      <p>Some text</p>
      <ol>
        <li>A list item</li>
        <li>A multiline list item another line</li>
      </ol>
      <p>Some more text</p>
    </div>

    【讨论】:

    【解决方案2】:

    您可以在ol 元素中添加一些左填充。

    #page {
      width: 200px;
    }
    ol {
      padding: 0 0 0 1em;
    }
    ol li {
      margin: 1em 0;
    }
    <div id="page">
      <p>Some text</p>
      <ol>
        <li>A list item</li>
        <li>A multiline list item another line</li>
      </ol>
      <p>Some more text</p>
    </div>

    您也可以使用 CSS 计数器并通过伪元素添加列表编号。

    #page {
      width: 200px;
    }
    ol {
      list-style: none;
      padding: 0;
    }
    ol li {
      margin: 1em 0;
      counter-increment: number;
      display: flex;
    }
    ol li:before {
      content: counter(number)".";
      margin-right: 5px;
    }
    <div id="page">
      <p>Some text</p>
      <ol>
        <li>A list item</li>
        <li>A multiline list item another line</li>
      </ol>
      <p>Some more text</p>
    </div>

    【讨论】:

    • 没想到em 水平单位和像素需要奇怪的值。 1em 是否肯定与其他字体/大小/等对齐。还是这只是运气?
    • @FireLancer 它工作得很好,只是要注意当列表编号> = 10时你希望它看起来如何,我只是使用伪元素添加了另一种方法,所以你不需要声明任何宽度或填充。
    • 仍然不完全确定为什么1em 恰好是几乎正确的,但它似乎确实与具有不同数字大小的字体相同(1 可能更靠右一个像素,但是那不明显)。伪元素绝对是一种有趣的方法,如果我使用width 而不是margin-right,则适用于不同的长度点(例如910
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多