定位两个子div,一个居中,另一个右上/右下放在另一个div内

时间:2013-02-27 15:26:34

标签: css css3 positioning

我在容器div内有两个div&我试图将其中一个子div放在中心(垂直和水平),另一个放在容器的左上角/右下角。

div只包含文本。我尝试了一些东西,并且能够单独应用这两种样式,即如果只有两个div中的一个存在,它将按要求工作。我无法弄清楚如何同时应用这两种样式。我试着玩位置和z-index,但由于我有限的CSS知识,我无法取得突破。

更新:我希望文本以w.r.t为中心到外部容器。

HTML

Top left works
<div class="container">
    <div class="topLeft">value</div>
</div>
Center Works
<div class="container">
    <div class="center">label</div>
</div>
Both don't work simulaneously
<div class="container">
    <div class="topLeft">value</div>
    <div class="center">label</div>
</div>

CSS

.container {
    border-width:1px;
    width:200px;
    border-style:solid;
    display:table;
    height:300px;
}
.center {
    text-align:center;
    display:table-cell;
    vertical-align:middle;
    z-index:5;
}
.topLeft {
    text-align:left;
    display:table-cell;
    vertical-align:top;
    z-index:10;
}

演示

http://jsfiddle.net/jugal/E5zGw/

我主要针对IE8 +和Chrome,并且可以根据需要灵活地更改html和css

2 个答案:

答案 0 :(得分:1)

只需将.container div position: relative;然后position: absolute;提供给子div,即可使用lefttop属性同时定位它们:

JsFiddle:http://jsfiddle.net/E5zGw/14

如果你选择这条路线,你只需要摆脱display: table-cell

答案 1 :(得分:0)

您的单元格在<TD>中的行为类似于<TR>

将DIVS封装在像TableRow

这样的内容中

http://jsfiddle.net/E5zGw/6/

jsFiddle with background-colors

CSS补充道:

.table-row {
    display:table-row;
    clear:both;
}

HTML添加:

<div class="container">
    <div class="table-row">
        <div class="topLeft">value</div>
    </div>
    <div class="table-row">
        <div class="center">label</div>
    </div>
</div>

女巫就像:

<table style="width:100%">
    <tr>
        <td valign="top" align="left">value</td>
    </tr>
    <tr>
        <td valign="middle" align="center">label</td>
    </tr>
</table>

现在,让我尝试按照您认为您希望它适合的方式来适应它:

jsfiddle.net/E5zGw/15/

<div class="container">
    <div class="topLeft">value</div>
    <div class="center">label</div>
</div>

.topLeft {
    background-color:blue;
    text-align:left;
    display:table-cell;
    vertical-align:top;
    z-index:999;
    position:absolute;
    width:200px;
}