首页 > 解决方案 > 如何将一个引导列/表单居中在屏幕的正中心?

问题描述

我已经尝试了几个小时但找不到解决方案,我的问题:

我试图创建一个页面登录页面,其中登录表单在页面中水平和垂直居中。我正在使用 syncfusion blazor 并创建了容器全屏:

HTML:

<div class="control-section" style="min-height: 100vh !important; background-color: red !important;">
    
</div>

CSS:

body, html {
   margin: 0 !important;
   padding: 0 !important;
}

.container {
 max-width: 100% !important;
 width: 100% !important;
 height: 100% !important;
 padding-right: 0px !important;
 padding-left: 0px !important;
}

.pb-3 {
  padding-bottom: 0rem !important;
}

这有效,容器设置为全宽和全高,没有任何滚动条。

但是,我试图在此页面中创建一个垂直和水平居中在页面中心的列。

注意:我想保持容器的背景为红色,因为我想在列/登录表单完成后在那里显示全屏图像。因此我认为我无法使用行?

到目前为止我已经尝试过:

<div class="control-section" style="min-height: 100vh !important; background-color: red !important;">
     <div class="col-xs-12 col-sm-2 offset-5" style="background-color: blue !important;">Test</div>
</div>

这创建了一个宽度为 2 且偏移量为 5 的列,因此其居中水平,但是我无法居中或垂直.. 谁能帮我解决这个问题?

回答后更新

我使用了 centerArea 答案代码并将表格放在我的行中:

.HTML:

<div class="control-section centerArea">
    <div class="col-xs-12 col-sm-2" style="background-color: blue !important;">
        <section>
            <form id="account" method="post">
                <hr />
                <div asp-validation-summary="All" class="text-danger"></div>
                <div class="form-group" style="margin-top: 150px !important;">
                    <label asp-for="Input.Email"></label>
                    <input asp-for="Input.Email" class="form-control" />
                    <span asp-validation-for="Input.Email" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="Input.Password"></label>
                    <input asp-for="Input.Password" class="form-control" />
                    <span asp-validation-for="Input.Password" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <div class="checkbox d-inline-block">
                        <label asp-for="Input.RememberMe">
                            <input asp-for="Input.RememberMe" />
                            @Html.DisplayNameFor(m => m.Input.RememberMe)
                        </label>
                    </div>
                    <div class="d-inline-block">
                        <a id="forgot-password" asp-page="./ForgotPassword">Password?</a>
                    </div>
                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-primary">Log in</button>
                </div>
                <div class="form-group">
                    <p>
                        <a id="forgot-password" asp-page="./ForgotPassword">Password?</a>
                    </p>
                    <p>
                        <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">Register as a new user</a>
                    </p>
                    <p>
                        <a id="resend-confirmation" asp-page="./ResendEmailConfirmation">Resend email confirmation</a>
                    </p>
                </div>
            </form>
        </section>
    </div>
</div>

.CSS:

<style>
body, html {
    margin: 0 !important;
    padding: 0 !important;
}

.container {
    max-width: 100% !important;
    width: 100% !important;
    height: 100% !important;
    padding-right: 0px !important;
    padding-left: 0px !important;
}

.pb-3 {
    padding-bottom: 0rem !important;
}

.centerArea {
    min-height: 100vh !important;
    background-color: red !important;
    color: white;
    display: flex;
    justify-content: center;
}

img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.form-group {
    display: block !important;
    margin: 0 auto !important;
    max-width: 90% !important;
    margin-bottom: 1% !important;
}

.d-inline-block {
    display: inline-block !important;
}
</style>

这将输出以下内容:

在此处输入图像描述

如您所见,内容是水平居中但不是垂直的?我正在尝试做这样的事情:

在此处输入图像描述

提前致谢

标签: csstwitter-bootstrapbootstrap-4centercol

解决方案


试试这个:

.html

<div class="control-section centerArea">
  <div class="col-xs-12 col-sm-2 offset-5 centerAreaChild">Test</div>
</div>

.css

.centerArea {
    margin: 0px;
    padding: 0px;
    border-width: 0px;
    background-color: blue;
    min-height: 800px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.centerAreaChild {
    text-align: center;
    height: 300px;
    background-color: red;
    justify-content: center;
    align-items: center;
    color: white;
    width: 200px;
    display: flex;
}

推荐阅读