【问题标题】:How to vertically align an icon inside a span如何垂直对齐跨度内的图标
【发布时间】:2016-08-19 17:35:33
【问题描述】:

我有一个这样的span

<span class="indicator"></span>

在这个span 里面有时我有这样的数字:

<span class="indicator">
    <span>10</span>
</span>

而且,有时还有一些 Kendo-UI 图标,像这样:

<span class="indicator">
    <span class="k-font-icon k-i-checkmark"></span>
</span>

还有,这是我的 CSS:

span.indicator {
    position: relative;
    border: 1px solid #8a8a8a;
    background: #8a8a8a;
    color: #ffffff;
    font-size: 0.85em;
    font-family: helvetica;
    padding: 2px;
    margin: 2px;
    width: 30px;
    overflow: visible;
    text-decoration: none;
    text-align: center;
    display: inline-block;
    border-radius: 4px;
}

.k-font-icon {
    font-family: KendoUIGlyphs;
    speak: none;
    font-style: normal;
    font-weight: 400;
    font-variant: normal;
    text-transform: none;
    font-size: 1.3em;
    line-height: 1;
    opacity: 1;
    text-indent: 0;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    background-image: none;
    font-size: 16px;
}

有两个问题:

  1. 我希望两个span 指示器具有相同的高度。的高度 带有图标的那个比另一个多一个像素。
  2. span 中带有图标的图标未垂直对齐。

更新:

我意识到如果我将.k-font-iconfont-size更改为1em,这两个问题都会解决,但是图标太小了。

更新 2:

这是一个剑道用户界面Dojo

【问题讨论】:

  • 你能添加一支包含所有必要资源的笔吗?否则很难调查 1px 的差异。
  • @memo,1px 的差异并不像图标没有垂直对齐那么重要。事实上,我设法通过为.indicator 提供固定高度来解决 1px 的差异。
  • @memo,我添加了一个剑道 UI 道场。

标签: html css kendo-ui


【解决方案1】:

尝试使用line-heightvertical-align css:

  span.indicator {
      position: relative;
      border: 1px solid #8a8a8a;
      background: #8a8a8a;
      color: #ffffff;
      font-size: .85em;
      font-weight: 400;
      font-family: helvetica;
      padding: 2px;
      margin: 2px;
      width: 30px;
      height: 20px;
      line-height: 20px;
      vertical-align: middle;
      overflow: visible;
      text-decoration: none;
      text-align: center;
      display: inline-block;
      border-radius: 4px;
  }
  span.indicator .k-font-icon {
    line-height: 20px !important;
  }

DEMO

【讨论】:

  • 这也有效。谢谢!我选择了其他解决方案作为答案,因为它不需要样式 .k-font-icon
【解决方案2】:
.k-font-icon {
    vertical-align: middle;
}

最简单的方法,希望对您有所帮助。

【讨论】:

    【解决方案3】:

    如果您要设置 .indicator 的高度和尺寸,有几种方法可以做到这一点,但最简单的方法可能是将显示更改为 flex 而不是 inline-box 并添加一对属性(我没有添加供应商前缀,主要是因为我很懒……):

    .indicator {
        display: flex;
        align-items: center;
        justify-content: center;
        border: 1px solid #8a8a8a;
        background: #8a8a8a;
        color: #ffffff;
        font-size: .85em;
        font-weight: 400;
        font-family: helvetica;
        padding: 2px;
        margin: 2px;
        width: 30px;
        height: 20px;
        border-radius: 4px;
    }
    

    不相关的旁注: 除非您有一个 .indicator 类,该类的行为方式取决于它所在的 HTML 元素(如果是这种情况,您可能应该重构它)您不应该在 CSS 规则的开头添加 span。它无缘无故地增加了特异性,并使您的 CSS 不那么灵活/面向未来。

    【讨论】:

      【解决方案4】:

      更新

      这个呢?

      span.indicator {
         background: #8a8a8a;
         color: #ffffff;
         font-size: 1.35em;
         font-family: helvetica;
         padding: 2px;
         margin: 2px;
         width: 30px;
         overflow: visible;
         text-decoration: none;
         text-align: center;
         display: inline-block;
         border-radius: 4px;
      }
      
      .k-font-icon {
          font-family: KendoUIGlyphs;
          font-style: normal;
          font-weight: 400;
          -webkit-font-smoothing: antialiased;
          -moz-osx-font-smoothing: grayscale;
       }
      

      【讨论】:

      • 我不想为数字使用那个字体大小。这个太大了。我可以使用字体大小使其垂直对齐,但这不是我正在寻找的解决方案。我需要一个无需更改字体大小即可工作的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多