内联块的中心背景

时间:2014-05-11 09:58:53

标签: css

给定HTML:

<div id="title">Text</div>
<div class="circlecontainer">
    <div class="circle">Hello</div>
</div>

和CSS:

div {
    display: inline-block;
}
.circlecontainer {
    background: #E0E;
    text-align:center;
    line-height:200px;
    width:200px;
    height:200px;
}
.circle {
    width:100px;
    height:100px;
    border-radius: 50px;
    font-size:20px;
    color:#fff;
    background:#000
}
.circle:hover {
    width:200px;
    height:200px;
    border-radius: 100px;
}

JSFiddle:http://jsfiddle.net/S329D/4/

我希望黑色圆圈在没有悬停时垂直居中。

但是当我设置vertical-align:middle时,文字看起来搞砸了:

http://jsfiddle.net/S329D/5/

为什么会这样?

4 个答案:

答案 0 :(得分:2)

这是因为线高仍然是200px。试试这个:

div {
    display: inline-block;
}
.circlecontainer {
    background: #E0E;
    text-align:center;
    line-height:200px;
    width:200px;
    height:200px;
}
.circle {
    line-height: 100px;
    position: relative;
    vertical-align: middle;
    width:100px;
    height:100px;
    border-radius: 50px;
    font-size:20px;
    color:#fff;
    background:#000
}
.circle:hover {
    width:200px;
    line-height: 200px;
    height:200px;
    border-radius: 100px;
}

http://jsfiddle.net/S329D/7/

答案 1 :(得分:0)

如果删除边框半径,则框不居中,因此圆圈也不居中

您需要使用margin-top。我已编辑your fiddle

答案 2 :(得分:0)

只需在circle div元素中添加span标签,其样式为“vertical-align:middle;”并删除“vertical-align:middle;”圈子类。

<div class="circle">
    <span style=" vertical-align: middle;">Hello</span>
</div>
问题是因为圆类改变的高度也会影响文本元素。有了跨度,它没有。

答案 3 :(得分:0)

只需在.circle中设置一个行高,然后按.circle:hover将其设置为行高。

http://jsfiddle.net/S329D/13/

.circle {
    line-height:100px;

.circle:hover {
    line-height:200px;