【问题标题】:Wrong vertical align of text in Google Chrome browserGoogle Chrome 浏览器中的文本垂直对齐错误
【发布时间】:2015-06-04 16:33:59
【问题描述】:

我在创建“按钮”元素(带边框的内联块容器中的文本)时遇到问题,因为在某些字体大小的文本中垂直对齐错误(不是完美的中间)。

我想使用Raleway(Google Web 字体)和Bootstrap。 文本容器的高度由 line-height 设置。

我正在 Windows 7...

上对其进行测试

Firefox(版本 36)上一切都很完美

但问题出在 Google Chrome(版本 41)上

实时预览:http://biznes-dynamit.pl/test/marcin-dobroszek/font/

部分 CSS 代码:

/*Bootstrap default style*/
* {
    box-sizing: border-box;
}
.btn {
    display: inline-block;
    vertical-align: middle;
}

/*custom style*/
body {
    font-family: "Raleway";
}
.btn {
    padding-top: 0;
    padding-bottom: 0;
    line-height: 16px;
    font-size: 11px; /*real height: 8*/
}
.btn-sm {
    font-size: 10px; /*real height: 7*/
    line-height: 15px;
 }
.btn-lg {
    font-size: 12px; /*real height: 8-9*/
    line-height: 16px; /*light, normal*/
 }

正如您在 Chrome 预览中看到的某些字体大小和字体粗细 文本向上 相对容器。

3 倍缩放示例,字体大小:11 像素(行高:16 像素)和字体粗细:半粗体。

顶部和底部空间(文本和顶部/底部边框之间)应该相同:4px,但如您所见,顶部空间为 3px,底部为 5px。

是否可以修复这个浏览器问题?

【问题讨论】:

  • 我在一个项目中遇到同样的问题,很烦。

标签: css google-chrome fonts vertical-alignment google-webfonts


【解决方案1】:

这个非常烦人的问题是由于chrome没有考虑text-transform: uppercase造成的。使用以下方法在全大写文本的 Chrome 中正确居中:

text-transform: lowercase;
font-variant: small-caps;

小提琴:http://jsfiddle.net/fyvyB/76/

非常适合按钮,对于其他用例,您可能会遇到文本是小型大写字母而不是真正的大写字母的问题。

【讨论】:

    【解决方案2】:

    自定义字体也有类似问题。在尝试了一些文本元素上的所有不同显示属性之后,我注意到垂直对齐问题只影响父级为display: block; 的文本元素,尽管所述文本元素设置为display: inline;。我通过将父母更改为 display: table; 并将子文本 elem 更改为 display: inline; 来解决问题,例如下面...我无法解释为什么会这样,但在这里发布以防它帮助其他人...

    <style>
      div {
        display: table;
      }
      span {
        display: inline;
        padding: 5px 10px; /* to make v-alignment clearer */
      }
    </style>
    <div>
      <span>Some text here</span>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多