我没有得到它,为什么我不能在%
中使用top
值?由.bg h1
为元素定义了高度,因此听起来像设置高度的正式事物。是否有任何解决方法,但没有使它绝对,所以它会响应。
padding-bottom

html,
body {
margin: 0;
padding: 0;
}
.bg {
background: #333;
text-align: center;
position: relative;
height: auto;
padding-bottom: 20%;
}
.bg h1 {
color: #eee;
margin: 0;
padding: 0;
position: relative; //change to absolute to ensure
//there is height value set without text inside
top: 50%; //50px DOES work
}

答案 0 :(得分:1)
html, body {
margin:0;
padding:0;
}
.bg {
background:#333;
//text-align:center;
//position:relative;
//height: auto;
//padding-bottom: 20%;
display: flex;
justify-content: center;
align-items: center;
height: 100px;
}
.bg h1 {
color:#eee;
margin:0;
padding:0;
//position: absolute; //change to absolute to ensure
//there is height value set without text inside
//top:50%; //50px DOES work
}

<div class="bg">
<h1>text</h1>
</div>
&#13;
我建议display: flex
;
html, body {
margin:0;
padding:0;
}
.bg {
background:#333;
text-align:center;
position:relative;
//height: auto;
//padding-bottom: 20%;
height: 100px;
}
.bg h1 {
color:#eee;
//margin:0;
padding:0;
position: absolute; //change to absolute to ensure
//there is height value set without text inside
top: 0;
bottom: 0;
left: 0;
right: 0;
}
&#13;
<div class="bg">
<h1>text</h1>
</div>
&#13;
答案 1 :(得分:1)
请检查一下。在.bg
课程中根据需要提供高度。在课程.bg h1
中,为top:50%; -webkit-transform: translateY(-50%); transform: translateY(-50%);
提供居中文字。
html, body {
margin:0;
padding:0;
}
.bg {
background:#333;
text-align:center;
position:relative;
height: 100px;
}
.bg h1 {
color:#eee;
margin:0;
padding:0;
position:relative;
top:50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
<div class="bg">
<h1>text</h1>
</div>
答案 2 :(得分:0)
使用内联块和伪元素。因为.bg
与html,body{
height:100%;
}
.bg{
background: #333;
text-align: center;
position: relative;
height: auto;
/* padding-bottom: 20%; */
/* height:100px; */
padding:10% 0;
}
.pseudo{
display: inline-block;
width:1px;
height:100%;
vertical-align:middle;
background:#cccccc;
}
.bg h1{
display: inline-block;
vertical-align:middle;
color: #eee;
margin: 0;
padding: 0;
}
匹配的背景太薄而且太明显了。
<div class="bg">
<div class="pseudo"></div>
<h1>text</h1>
</div>
email