我不知道如何在此div中垂直居中放置我的名字。应该是我网站上的主页。 PgOne div应该占据人的屏幕的高度,因此名称应该以div(主)为中心,该div位于PgOne导航栏的正下方。
有效解决方案的问题是,当窗口垂直方向真的很小时,它会进入导航栏。
我已经在.main和.name的CSS中尝试过这些
flex-grow: 1;
display: flex;
align-items: center;
^^可以,但是当窗口垂直方向真的很小时,它会进入导航栏。
transform: translate(-50%, -50%);
position: absolute;
^^这有效,但是当窗口很小时,它们会重叠。
padding-top: 10%; padding-bottom: 10%;
^^不起作用。
display: table-cell;
text-align: center;
vertical-align: middle;
^^不起作用。
这是我的代码:
<div class=PgOne>
<div class="navbar">
<div>
<p>HOME</p>
</div><div>
<p>ABOUT</p>
</div><div>
<p>EXPERIENCE</p>
</div><div>
<p>RESUME</p>
</div><div>
<p>CONTACT</p>
</div>
</div>
<div class=main>
<div class="name">
<p>FirstName<br>LastName</p>
</div>
</div>
</div>
CSS
.navbar div {
margin-top: 13px;
margin-right: 1%;
width: 18%;
font-size: 20px;
display: inline-block;
position: relative;
}
.main {
font-size: 25px;
margin: 0 auto;
text-align: center;
width: 50%;
transform: translate(-50%, -50%);
position: absolute;
top: 50%;
left: 50%;
padding: 20px;
/*flex-grow: 1;
display: flex;
align-items: center;*/
}
答案 0 :(得分:1)
名称 在其容器DIV中垂直居中。您只是没有为div(.main
)设置任何高度,因此DIV本身不会占据整个页面的高度,如果您要这样做的话。在下面的代码修改中,我使用calc
作为高度(展开查看),但是实际方法取决于您真正想要/需要的内容,即页面的完整代码。
.navbar div {
margin-top: 13px;
margin-right: 1%;
width: 18%;
font-size: 20px;
color: white;
display: inline-block;
background: #555;
}
.main {
display: flex;
justify-content: center;
height: calc(100vh - 100px);
background: #eee;
align-items: center;
font-size: 75px;
margin: 0 auto;
}
<div class=PgOne>
<div class="navbar">
<div>
<p>HOME</p>
</div>
<div>
<p>ABOUT</p>
</div>
<div>
<p>EXPERIENCE</p>
</div>
<div>
<p>RESUME</p>
</div>
<div>
<p>CONTACT</p>
</div>
</div>
<div class=main>
<p>FirstName<br>LastName</p>
</div>
</div>
答案 1 :(得分:1)
删除绝对位置transform
后,我将PgOne
设置为flex父级,并添加了min-height: 100vh
(完整视口高度)。接下来,我将flex-grow: 1
应用于main
,指示它占用尽可能多的垂直空间。我没有在navbar
中添加任何内容,因此它会占用剩余的垂直空间。为了显示它占据了正确的空间和垂直居中,我在main
上添加了背景色。
.PgOne {
display: flex;
min-height: 100vh;
flex-direction: column;
}
.navbar div {
margin-top: 13px;
margin-right: 1%;
width: 18%;
font-size: 20px;
display: inline-block;
position: relative;
}
.main {
font-size: 25px;
margin: 0 auto;
text-align: center;
width: 50%;
padding: 20px;
display: flex;
flex-direction: column;
justify-content: center;
flex-grow: 1;
background-color: rgba(0, 0, 0, .1);
}
<div class=PgOne>
<div class="navbar">
<div>
<p>HOME</p>
</div><div>
<p>ABOUT</p>
</div><div>
<p>EXPERIENCE</p>
</div><div>
<p>RESUME</p>
</div><div>
<p>CONTACT</p>
</div>
</div>
<div class=main>
<div class="name">
<p>FirstName<br>LastName</p>
</div>
</div>
</div>