【问题标题】:centering li:before content with text居中 li: 在文本内容之前
【发布时间】:2013-08-11 19:57:27
【问题描述】:

所以我有一个<ul> 需要设置样式。我正在使用 + 来设置它的样式。它看起来像这样:

+ abc
+ 123
+ hello

我遇到的问题是我无法将 + 与实际的 li 居中。就像,所以当我需要它们与li 文本垂直对齐时,这些优点会略微偏离。有人知道我在做什么错吗?

这是小提琴的link

CSS

ul {
    list-style: none;
    display: table-cell;
    padding: 0;
    margin: 0;
}

li {
    padding-left: 1em;
    text-indent: -1em;
}

li:before {
    content: "+";
    padding-right: 5px;
    vertical-align: middle;
    display: inline;
    padding-top: 0;
    margin-bottom: .5em;

}

编辑

好的,我的意思不是将#content 与另一个ul 对齐。我的意思是将+abc 垂直居中。

【问题讨论】:

  • 为什么您的ul 显示为表格单元格?
  • padding-left:2.5em;
  • @BoltClock 我正在尝试我发现的不同的东西。当然,这没有用。
  • 如果您内联显示它们,您不需要做任何特殊的事情来对齐它们,因为它们会自然地在实际内容后面流动。此外,display: inline 无论如何都是生成内容的默认值。您是否试图以不同的方式将它们置于中心位置?

标签: html css css-selectors html-lists


【解决方案1】:

如果不使用Eric MeyersNormalize.css 等重置样式表,您的浏览器会自动添加默认样式。在我的例子中,chrome 为你的 UL 添加了 40px。

我明确地将内边距设置为 20 像素,看起来不错,但如果可以的话,我会实现一个重置样式表,以免以后头疼。

JsFiddle

ul {
    padding-left:20px;
    margin:0;
}

【讨论】:

    【解决方案2】:
    vertical-align: text-bottom;
    

    http://jsfiddle.net/2FZx6/4/

    您不希望+ 位于li 的中间,但与小写字母的高度相同。这就是为什么你必须使用text-bottom 而不是middle。如果您要使用带有下划线的字母(例如gy),您会注意到实际的点也不在元素/文本的中间,而是在text-bottombaseline

    (Actually, the default value baseline works pretty well.)

    资源

    【讨论】:

    • 完美。这正是我想要的。你是圣人。
    • 等等。大写字母呢?
    • @irosenb:你的一个例子包括字符串“hello world”,它包含五个带升序的字母,因此大写字母根本不成问题。
    • 嗯,这不是它在我的真实 HTML 中的实际样子。在我的实际情况中,所有lis 都是大写的。
    【解决方案3】:

    在你的 li 上使用背景图片而不是使用“+”可能会更好 - 这样你可以随意放置“+”(作为背景图片)。

    http://css.maxdesign.com.au/listutorial/master.htm

    【讨论】:

      【解决方案4】:

      此方法为您提供了更多微调。

      http://jsfiddle.net/2FZx6/9/

      li:before { // add these bits
          position: relative;
          top: -.2em ; // fine tune this however you want
      }
      

      【讨论】:

        【解决方案5】:

        可能不适用于所有人,但根据我的情况,我通过将 lineheight 添加到 li(文本)和 li:before(字体真棒图标)进行相应调整:

        li {
          /* li css */
          line-height: 16px;
        
        li:before {
          /* li before css */
          line-height: 12px;
        }
        

        希望对其他人也有帮助!

        【讨论】:

          猜你喜欢
          • 2019-09-27
          • 2016-01-08
          • 1970-01-01
          • 2014-11-15
          • 1970-01-01
          • 2017-01-23
          • 2012-12-07
          • 2012-08-05
          • 1970-01-01
          相关资源
          最近更新 更多