【问题标题】:How to center a form using Bootstrap?如何使用 Bootstrap 使表单居中?
【发布时间】:2015-09-24 04:09:39
【问题描述】:

我想将包含两个输入(用户名和密码)的表单居中:

<h2 align="center" >Authentication</h2>
<form method="post" action="/signin"  class="form-horizontal" role="form" align="center">
    <div class="form-group" align="center">
        <label class="control-label col-sm-2"  for="username">username<em>*</em></label>
        <div class="col-sm-6">
            <input type="text" name="username" id="username" placeholder="username" required="true" class="form-control"/>
        </div>
    </div>  
    <div class="form-group">
        <label class="control-label col-sm-2" for="password">password<em>*</em></label>
        <div class="col-sm-6">            
            <input type="password" name="password" id="password" required="true" class="form-control"/> 
        </div>
    </div>
    <div class="form-group"> 
        <div class="col-sm-offset-2 col-sm-8">  
            <input type="submit" name="signin" id="signin" value="sign in" class="btn btn-default"/>
         </div>
     </div>     
</form>

但是当我运行页面时,表单不在页面的中心。我在style.css中添加了:

.form-horizontal{
    display:block;
    margin-left:auto;
    margin-right:auto;
}

但这没有用。

【问题讨论】:

  • 将边距设置为自动当然只有在元素的宽度小于容器元素的宽度时才有效。

标签: html css twitter-bootstrap


【解决方案1】:

Slim Hmidi 您好,您与.form-horizontal 的班级关系密切。

使用它会将表单居中在页面的中间。

.center {
  position: absolute;
  left: 0;
  right: 0;
  margin: auto;  
}

您现在需要调整表单中的col-sm-xx 以在所有屏幕尺寸下正确填写和工作。

这是一个屏幕截图,包含表单的蓝色 div 水平居中。

这是表单,其中的类已更改为填充并适用于所有屏幕尺寸。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="../../favicon.ico">

    <title>How to center a form using Bootstrap</title>

    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<style>
body {
  padding-top: 50px;
}
.spacer {
  margin-top: 2%;
  margin-bottom: 2%;
}      
.block {
  height: 300px;
  padding-top: 15px;  
  background-color: darkorange;
}  
.block2 {
  min-height: 160px;
  padding-top: 15px; 
} 
.center {
  position: absolute;
/*  top: 0;
  bottom: 0; */
  left: 0;
  right: 0;
  margin: auto;  
}
</style>

</head>

<body>

    <nav class="navbar navbar-inverse navbar-fixed-top ">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand " href="#">Project name</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav navbar-right">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

<div class="container col-lg-12 spacer"></div>
    


    <div class="container col-lg-12 block">
        
        <div class="row col-xs-6 block2 bg-primary center">
            
            <form method="post" action="/signin"  class="form-horizontal" role="form" align="center">
            <div class="form-group" >
                <label class="control-label col-sm-3"  for="username">username<em>*</em></label>
                <div class="col-sm-8 col-xs-12">
                    <input type="text" name="username" id="username" placeholder="username" required="true" class="form-control"/>
                </div>
            </div>  
            <div class="form-group">
                <label class="control-label col-sm-3" for="password">password<em>*</em></label>
                <div class="col-sm-8 col-xs-12">            
                    <input type="password" name="password" id="password" required="true" class="form-control"/> 
                </div>
            </div>
            <div class="form-group"> 
                <div class="col-sm-offset-2 col-sm-8">  
                    <input type="submit" name="signin" id="signin" value="sign in" class="btn btn-default"/>
                </div>
            </div>     
        </form>
        </div>
            
    </div><!-- /.container -->


    <!-- Bootstrap core JavaScript -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    
</body>
</html>

【讨论】:

    【解决方案2】:

    要在页面上居中 div,您需要设置容器的宽度,然后对其应用margin:0 auto;,它将在页面上左右居中。

    .form-horizontal{
        display:block;
        width:50%;
        margin:0 auto;
    }
    

    如果你想使文本居中,只需将 text-center 添加到你的文本所在的 div 的类中即可。其余的工作将由 Bootstrap 完成。

    编辑 1

    <div class="contact-form">
        <h2 align="center" >Authentication</h2>
        <form method="post" action="/signin"  class="form-horizontal" role="form" align="center">
            <div class="form-group" align="center">
                <label class="control-label col-sm-2"  for="username">username<em>*</em></label>
                <div class="col-sm-6">
                    <input type="text" name="username" id="username" placeholder="username" required="true" class="form-control"/>
                </div>
            </div>  
            <div class="form-group">
                <label class="control-label col-sm-2" for="password">password<em>*</em></label>
                <div class="col-sm-6">            
                    <input type="password" name="password" id="password" required="true" class="form-control"/> 
                </div>
            </div>
            <div class="form-group"> 
                <div class="col-sm-offset-2 col-sm-8">  
                    <input type="submit" name="signin" id="signin" value="sign in" class="btn btn-default"/>
                </div>
            </div>     
        </form>
    </div>
    

    【讨论】:

    • 我现在遇到了h2标签的问题。与表单相比,它发生了变化
    • 您需要将表单和 h2 包装在一个 div 中,然后将样式应用于该 div。
    【解决方案3】:

    将整个表单包裹在&lt;div class="container"&gt;your form HTML&lt;/div&gt;中。

    像这样:http://codepen.io/anon/pen/pJLrOq。代码中心形成容器到站点的中间。编辑 CSS 并输入文本的类以获得所需的布局。

    【讨论】:

      【解决方案4】:

      您可以在 css 中添加text-align: center;

      【讨论】:

      • 好的,试试 .form-group{text-align:center; }当你有好的答案时,请关闭问题。
      猜你喜欢
      • 2012-03-17
      • 2016-12-14
      • 1970-01-01
      • 2013-01-24
      • 2021-09-04
      • 1970-01-01
      • 2012-11-12
      • 2021-09-06
      • 1970-01-01
      相关资源
      最近更新 更多