css - 在 h1 内垂直居中跨度/文本

标签 css center html

我想将 span 元素置于 h1 标签的中心。我试图设置一个行高,但它似乎只使跨度居中,而不是旁边的文本。注意:我可能不能使用绝对位置,因为“图标”并不总是显示,它可以有不同的宽度。

查看我创建的 fiddle :http://jsfiddle.net/JJhCY/1/

html:

<h1>
    <span class="icon">Icon</span>
    Some Text related to the icon 
</h1>  

CSS:

  .icon 
    {
    background: aqua;
    border: 1px solid blue;
    font-size: 80%;
    border-radius: 3px;
    width: 40px;
    line-height: 13px;
    padding: 2px;
    display: inline-block;
    text-align: center;
    }


    h1
    {
    background: red;
    font-size: 11px;
    line-height: 18px;
    }

有什么想法吗?

最佳答案

您的 CSS 基本上可以正常工作。如果增加行高会更明显:

http://jsfiddle.net/audetwebdesign/PUeaY/ 查看演示

h1 {
    background: red;
    font-size: 40px;
    line-height: 80px;
}
.icon {
    background: aqua;
    border: 1px solid blue;
    border-radius: 3px;
    padding: 0px 4px;
    width: auto;
    display: inline-block;
    font-size: 20px;
    line-height: 40px;
    vertical-align: 7px;
}

在这个例子中,span 和文本都在中心垂直对齐,我认为这是你想要的。

这是如何工作的...

CSS 引擎使用垂直对齐属性来对齐文本段的基线。

在这种情况下,我将 h1 的默认字体大小和行高分别设置为 40px 和 80px。

对于 .icon,我将字体大小和行高减少了 50%。如果 vertical-align 设置为 baseline0,较小和较大的文本都会沿字母底部对齐,但它看起来不会居中,因为图标文本的字体较小。

通过将 vertical-align 调整为 7px,我得到了一个看起来不错的居中。这不是一个精确的过程,但它可能工作得很好。

关于css - 在 h1 内垂直居中跨度/文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616621/

相关文章:

css - 为什么我的 UL 不会以及如何将其置于导航栏 DIV 的中心?

html - 垂直和水平居中文本,无需绝对定位

python - 如何从 urlib2 请求中获取完整的 header 信息?

css - Bootstrap - 导航栏大小设置

css - Twitter Bootstrap 3 导航栏

javascript - 使用 javascript 随着时间的推移改变背景图像?

javascript - 无法获取 jquery 中单选按钮的值 : 'Syntax error, unrecognized expression'

html - Jade,Gulp,遍历数组以在样式标签中创建媒体查询

html - 在 Bootstrap 中居中一个 4 列的 Div

html - Shopify 更改集合的布局