垂直对齐:文本节点

时间:2015-09-02 07:51:58

标签: css vertical-alignment pseudo-element

我试图垂直对齐文本块。我有一个:before伪元素,而我想要实现的是两个对齐到中间。

是否有可能在没有额外包装的情况下实现它?这是我的问题所在:

Vertical align

HTML:

<div class="fail">Something's wrong</div>
<div class="success">
    <span>Perfect middle</span>
</div>

CSS失败:

.fail
{
    background: orange;
    font-size: 30px;
    display: inline-block;
}

.fail:before
{
    background: red;
    content: '✗';
    text-align: center;
    display: inline-block;
    line-height: 60px;
    margin-right: 10px;
    vertical-align: middle;
    width: 60px;
}

CSS成功:

.success
{
    font-size: 30px;
    background: lime;
    display: inline-block;
}

.success:before
{
    background: green;
    content: '✓';
    text-align: center;
    display: inline-block;
    line-height: 60px;
    margin-right: 10px;
    vertical-align: middle;
    width: 60px;
}

.success span {
    vertical-align: middle;
}

从这张照片中可能不是那么明显,但是左边的太高了,大约2-3个像素差异。这对于较小的元素尤其重要。

所以我的问题是:我可以只用一个HTML标签+ :before来实现完美中间吗?

1 个答案:

答案 0 :(得分:0)

因为我不太喜欢内联元素,所以我会这样做:

.fail {
    position: relative;
    float:left;
    padding-right: 10px;
    line-height: 60px;
    font-size: 30px;
    background: orange;

}

.fail:before {
    content: '✗';
    display: inline-block;
    width: 60px;
    margin-right: 10px;
    text-align: center;
    background: red;
}