我有以下HTML代码:
p.error {
color: red;
padding: 5%;
margin-left: 20%;
margin-right: 20%;
font-size: 300%;
height: 100%;
box-shadow: 3px 3px 20px 3px #545454;
text-align: center;
background-color: #f1f1f1;
}
div.alert {
padding-top: 50%;
}
<div class="alert">
<p class="error">Error: Permission denied!</p>
</div>
我的浏览器(Google Chrome版本57.0.2987.133)编译为: 我终于通过使用:
使它垂直居中 divdiv.alert{
padding-top: 22.5%;
}
通过进一步测试,我注意到浏览器使用宽度而不是 padding-top 的高度。
我的问题:为什么浏览器会像这样编译HTML代码?如何使用 50%使div
垂直居中? ?
答案 0 :(得分:2)
Padding-top百分比是指元素的宽度。它是W3 CSS Box模型规范的一部分:
http://www.w3.org/TR/CSS2/box.html#padding-properties
您将无法使用填充百分比来引用高度。它总是指宽度。
答案 1 :(得分:1)
对于居中,我建议你参考这篇CSS-Tricks文章: https://css-tricks.com/centering-css-complete-guide/
我已经使用了这个,但是我跳过了父元素部分,因为父元素是正文:
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.alert {
position: absolute;
top: 50%;
transform: translateY(-50%);
/* for Safari */
-webkit-transform: translateY(-50%);
}
p.error{
color: red;
padding: 5%;
margin-left: 20%;
margin-right: 20%;
font-size: 300%;
box-shadow: 3px 3px 20px 3px #545454;
text-align: center;
background-color: #f1f1f1;
height: 100%;
}
&#13;
<div class="alert">
<p class="error">Error: Permission denied!</p>
</div>
&#13;
注意:我只对元素进行垂直居中,而不是水平居中。
答案 2 :(得分:0)
要垂直居中,您希望使用top: 50%; left: 50%; transform: translate(-50%,-50%);
的绝对位置将其置于死点。
p.error {
color: red;
padding: 5%;
margin-left: 20%;
margin-right: 20%;
font-size: 300%;
height: 100%;
box-shadow: 3px 3px 20px 3px #545454;
text-align: center;
background-color: #f1f1f1;
}
div.alert {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
}
&#13;
<div class="alert">
<p class="error">Error: Permission denied!</p>
</div>
&#13;
您还可以在父母身上使用display: flex; justify-content: center; align-items: center;
将儿童置于死点中心。
body {
margin: 0;
}
p.error {
color: red;
padding: 5%;
margin-left: 20%;
margin-right: 20%;
font-size: 300%;
height: 100%;
box-shadow: 3px 3px 20px 3px #545454;
text-align: center;
background-color: #f1f1f1;
}
div.alert {
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
&#13;
<div class="alert">
<p class="error">Error: Permission denied!</p>
</div>
&#13;