如何对<label>
元素应用水平对齐?如果我这样做<label><p>3</p></label>
,则一切正常。我不明白为什么<p>
没有<label>
元素时具有自动边距(居中)。
html
body {
background: #2b2b2b;
font-size: 36px;
font-family: Helvetica neue, roboto;
color: white;
}
.main {
display: flex;
flex-wrap: wrap;
justify-content: center;
width: 75%;
margin: 0 auto;
background: black;
}
.common {
width: 45%
}
#div1 {
background: purple;
text-align: right;
}
#div2 {
background: orange;
}
#div3 {
background: olive;
text-align: right;
}
#div4 {
background: gray;
}
label {
}
<div class="main">
<div id="div1" class="common">1</div>
<div id="div2" class="common">2</div>
<div id="div3" class="common"><label for="name-label">3</label></div>
<div id="div4" class="common"><p>4</p></div>
</div>
答案 0 :(得分:2)
默认情况下,p
元素是display: block
,而label
元素是display: inline
。
margin: auto
将使块元素居中。它不会使内联元素居中。
在嵌入式元素(在本例中为text-align: center
)的 parent 上使用right
(而不是<div>
)将内容居中。
示例中的p
元素未居中,但保持左对齐。如果它有margin: auto
,则它将居中。
如果您谈论的是垂直对齐方式(不是您所说的),那么p
元素位于垂直中心,但这是因为它的顶部和底部相等用户代理样式表中的页边空白 和其内容高度以及页边空白使它成为最高的内容。如果第3块中的内容更高,则该段落比其包含div的底部更靠近顶部。