我试图垂直对齐文本块。我有一个:before
伪元素,而我想要实现的是两个对齐到中间。
是否有可能在没有额外包装的情况下实现它?这是我的问题所在:
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
来实现完美中间吗?
答案 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;
}