相对于div块居中

时间:2013-12-11 12:21:13

标签: html css

我有div块,其中包含以下形式:

<div class="divClass">
    <form id="frm" method="post" action="/NotDefinedYet/index.xhtml" class="frmClass">
        <input type="text" name="j_idt9:j_idt10:Username" placeholder="Username">
    </form>
</div>

相应的css - 样式表

.divClass{
    width: 350px;
    height: 450px;
}
.frmClass{
    position: relative;        
    margin:auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 280px;
    height: 150px;
}

最终我只有相对于div块的水平居中形式。但我需要将纵向和横向集中在一起。如何实施?

4 个答案:

答案 0 :(得分:0)

试试这个:(fiddle

.divClass{
    position: relative;
    width: 350px;
    height: 450px;
}
.frmClass{
    position: absolute;        
    top: 50%;
    left: 50%;
    margin-top: -75px;
    margin-left: -140px;
    width: 280px;
    height: 150px;
}

它的工作原因是:

  1. absolute容器内的relative组件相对于容器布置,因此指定top为50%会将组件的顶部位置放在容器的中间位置;
  2. 鉴于我们知道组件的高度,一旦我们将margin-top指定为半高度,组件将完全位于容器的中心。
  3. 同样适用于水平居中组件。

答案 1 :(得分:0)

.divClass{
    width: 350px;
    height: 450px;
    text-align:center;
}
.frmClass{
    position: relative;        
    margin:0 auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 280px;
    height: 150px;
    vertical-align: middle;
    top: 50%;
}

请参阅此链接http://jsfiddle.net/bipin_kumar/DmMVd/2/

答案 2 :(得分:0)

我最喜欢的方式如果您不需要旧版浏览器支持。我喜欢它,因为它独立于父容器和子容器大小。

http://jsfiddle.net/samih/K4kLj/

.divClass{
    position: relative;
    background-color: grey;
    width: 350px;
    height: 450px;
}
.frmClass{
    width: 280px;
    height: 150px;
    position: absolute;
    top: 50%;
   left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    background-color: white;
}

适用于IE9 +,chrome和firefox。有关浏览器支持的完整列表,请参阅http://caniuse.com/#search=transform

答案 3 :(得分:-2)

将表单放在中心标记内。

DIV

中心

形式

表格将在div中间对齐