CSS:水平和垂直页面的中心形式

waw*_*los 21 html css css3

如何在我的页面中水平和垂直居中名为form_login的表单?

这是我正在使用的HTML:

<body>
    <form id="form_login">
        <p>
            <input type="text" id="username" placeholder="username" />
        </p>
        <p>
            <input type="password" id="password" placeholder="password" />
        </p>
        <p>
            <input type="text" id="server" placeholder="server" />
        </p>
        <p>
            <button id="submitbutton" type="button">Se connecter</button>
        </p>
    </form>
</body>
Run Code Online (Sandbox Code Playgroud)

我试过做以下css,但我的表格永远不会集中:

#form_login {
    left: 50%;
    top: 50%;
    margin-left: -25%;
    position: absolute;
    margin-top: -25%;
}
Run Code Online (Sandbox Code Playgroud)

G-C*_*Cyr 46

你可以display:flex这样做:http://codepen.io/anon/pen/yCKuz

html,body {
  height:100%;
  width:100%;
  margin:0;
}
body {
  display:flex;
}
form {
  margin:auto;/* nice thing of auto margin if display:flex; it center both horizontal and vertical :) */
}
Run Code Online (Sandbox Code Playgroud)

display:table http://codepen.io/anon/pen/LACnF/

body, html {   
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    display:table;
}
body {
    display:table-cell;
    vertical-align:middle;
}
form {
    display:table;/* shrinks to fit content */
    margin:auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 显示:flex; 石头! (3认同)

A.M*_*ara 23

如果要进行水平居中,只需将表单放在DIV标记内并对其应用align ="center"属性即可.因此,即使更改了表格宽度,您的居中也将保持不变.

<div align="center"><form id="form_login"><!--form content here--></form></div>
Run Code Online (Sandbox Code Playgroud)

UPDATE

@ G-Cyr是对的.align="center"属性现已过时.您可以使用text-align以下属性.

<div style="text-align:center"><form id="form_login"><!--form content here--></form></div>
Run Code Online (Sandbox Code Playgroud)

这将使父DIV中的所有内容居中.可选方法是使用margin: auto具有预定义宽度和高度的CSS属性.请按照以下主题获取更多信息.

如何在另一个水平居中?

垂直定心比这困难.为此,您可以执行以下操作.

HTML

<body>
<div id="parent">
    <form id="form_login">
     <!--form content here-->
    </form>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

CSS

#parent {
   display: table;
   width: 100%;
}
#form_login {
   display: table-cell;
   text-align: center;
   vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

  • 哦,天哪,还在使用align属性? (8认同)

fca*_*ran 8

如果你使用负translateX/Y宽度和高度是不必要的,风格真的很短

#form_login {
    left: 50%;
    top: 50%;
    position: absolute;
    -webkit-transform: translate3d(-50%, -50%, 0);
    -moz-transform: translate3d(-50%, -50%, 0);
    transform: translate3d(-50%, -50%, 0);
}
Run Code Online (Sandbox Code Playgroud)

codepen上的示例:http://codepen.io/anon/pen/ntbFo

支持:http://caniuse.com/transforms3d


小智 6

接受的答案不适用于我的表单,即使我将其剥离到最低限度并复制并粘贴代码.如果其他人遇到此问题,请试试我的解决方案.基本上,你将Top和Left设置为50%,但是偏移了窗体的容器,顶部和左边的负边距分别等于div的高度和宽度的50%.这会将Top和Left坐标的中心点移动到窗体的中心.我将强调必须指定表单的高度和宽度(不是相对的).在这个例子中,无论窗口大小如何,顶部和左侧的边距为-150px的300x300px格式div完全居中:

HTML

<body>
    <div class="login_div">
        <form class="login_form" action="#">
        </form>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

CSS

.login_div {
    position: absolute;

    width: 300px;
    height: 300px;

    /* Center form on page horizontally & vertically */
    top: 50%;
    left: 50%;
    margin-top: -150px;
    margin-left: -150px;
}

.login_form {
    width: 300px;
    height: 300px;

    background: gray;
    border-radius: 10px;

    margin: 0;
    padding: 0;
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

现在,对于那些想知道为什么我在表格中使用容器的人来说,这是因为我喜欢选择将其他元素放置在附近的表格中并让它们居中.在此示例中,表单容器是完全不必要的,但在其他情况下肯定会有用.希望这可以帮助!


Ale*_*sco 5

使用网格怎么样?现在是 2019 年,支持是合理的

body {
  margin: 0;
  padding: 0;
  background-color: red;
}

.content {
  display: grid;
  background-color: bisque;
  height: 100vh;
  place-items: center;
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
<body>
<div class="content">
  <form action="#" method="POST">
    <fieldset>
      <legend>Information:</legend>
      <label for="name">Name:</label>
      <input type="text" id="name" name="user_name">
    </fieldset>
    <button type="button" formmethod="POST" formaction="#">Submit</button>
  </form>
 </div>
 </body>
 </html>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

137077 次

最近记录:

6 年,5 月 前