我的页面非常简单:它由导航栏和两个面板组成。
我试图将导航栏固定在顶部,两个面板垂直居中(适用于任何屏幕尺寸或浏览器)。
将这两个面板放在一个容器中。
到目前为止,我没有成功地将容器垂直居中。
以下是我现在所拥有的:
这是我想要实现的目标:
这是我的代码:
html {
overflow: hidden;
height: 100%;
}
body {
overflow: hidden;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
.panel-default1 {
padding-top: 8px;
border-radius: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.10);
height: 400px;
width: 100%;
overflow: hidden;
margin: 0 auto;
position: relative;
}
.panel-default2 {
padding-top: 10px;
padding-right: -15px;
border-radius: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.10);
height: 400px;
width: 100%;
margin: 0 auto;
position: relative;
}

<body>
<nav class="navbar transparent navbar-static-top">
<div class="navbar-header">
<p>Welcome</p>
</div>
</nav>
<div class="container d-flex h-100">
<div class="row justify-content-center align-self-center">
<!-- 1st panel -->
<div class="col-md-4 mb-4" id="panel">
<div class="panel panel-default1">
<div class="panel-body">
<p>Blablabla</p>
</div>
<!-- panel body -->
</div>
<!-- panel-default1-->
</div>
<!-- col md 4 -->
<!-- 2nd panel -->
<div class="col-md-8 col-md-8" id="panel2">
<div class="panel panel-default2">
<div class="panel-body">
<p>Blablabla</p>
</div>
<!-- panel-body -->
</div>
<!-- panel-default2-->
</div>
<!-- col md 8 -->
</div>
<!-- row -->
</div>
<!-- container-->
</body>
&#13;
从HTML中可以看出,我试图在容器和行上使用Bootstrap的flexbox,但没有成功。
除了导航栏外,请告知工作解决方案垂直居中我的容器。
答案 0 :(得分:0)
根据我的注意,您希望元素居中,但不要使用所有12列,因此您可以使用mx-auto
来居中一个少于12列的元素。你也说过
.noMX {
background-color: red;
}
.withMX {
background-color: green;
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="row">
<div class="noMX col-8">awts</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="withMX col-8 mx-auto">awts</div>
</div>
</div>
&#13;
要将其垂直居中,您可以试试这个。首先将height: 100%
添加到正文和html
,因为我注意到您使用了h-100
,这意味着您希望容器上有100%的高度。您还需要将面板包装到另一个div
中,以便将居中的元素是div包装器而不是面板。我还删除了列中的md
,以便您可以在较小的视口中显示结果
html,
body {
height: 100%;
}
.wrapper {
background-color: Red;
}
#panel {
background-color: blue;
}
#panel2 {
background-color: green;
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar transparent navbar-static-top">
<div class="navbar-header">
<p>Welcome</p>
</div>
</nav>
<div class="wrapper container h-100">
<div class="row d-flex align-items-center h-100">
<div class="col-12">
<div class="row">
<div class="col-4 mb-4" id="panel">
<div class="panel panel-default1">
<div class="panel-body">
<p>Blablabla</p>
</div>
</div>
</div>
<div class="col-8" id="panel2">
<div class="panel panel-default2">
<div class="panel-body">
<p>Blablabla</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
&#13;
答案 1 :(得分:0)
您应该只能将col-4
和col-8
用于容器内row
内的列
见here
请参阅example
编辑: 要将它们垂直对齐,您应该只能在一行中添加align-items-center类,而无需额外的css。 更新了示例
答案 2 :(得分:0)
试试这个
html {
overflow: hidden;
height: 100%;
}
body {
overflow: hidden;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
.panel-default1 {
padding-top: 8px;
border-radius: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.10);
height: 400px;
width: 100%;
overflow: hidden;
margin: 0 auto;
position: relative;
background:red;
}
.panel-default2 {
padding-top: 10px;
padding-right: -15px;
border-radius: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.10);
height: 400px;
width: 100%;
margin: 0 auto;
position: relative;
background:green;
}
.navbar-header{
float: none;
padding: 20px;
background:black;
}
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<body>
<nav class="navbar transparent navbar-static-top text-center">
<div class="navbar-header">
<p>Welcome</p>
</div>
</nav>
<div class="container">
<div class="row">
<!-- 1st panel -->
<div class="col-md-4 mb-4" id="panel">
<div class="panel panel-default1">
<div class="panel-body">
<p>Blablabla</p>
</div>
<!-- panel body -->
</div>
<!-- panel-default1-->
</div>
<!-- col md 4 -->
<!-- 2nd panel -->
<div class="col-md-8 col-md-8" id="panel2">
<div class="panel panel-default2">
<div class="panel-body">
<p>Blablabla</p>
</div>
<!-- panel-body -->
</div>
<!-- panel-default2-->
</div>
<!-- col md 8 -->
</div>
<!-- row -->
</div>
<!-- container-->
</body>