【问题标题】:How to center a element [duplicate]如何使元素居中[重复]
【发布时间】:2019-04-04 17:20:39
【问题描述】:

如何将水平对齐应用于<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>

【问题讨论】:

  • 请复制问题中的代码,请勿在图片中发布代码
  • 请不要外链和截图。使用 StackOverflow sn-p。
  • p 有默认边距,不是自动边距
  • 外部链接接缝不起作用????
  • 您要水平对齐还是垂直对齐?因为你说的是​​水平的,但从你的代码看来你正在尝试垂直

标签: html css text-align


【解决方案1】:

默认情况下,p 元素是 display: blocklabel 元素是 display: inline

margin: auto 将使块元素居中。它不会使内联元素居中。

在内联元素(在本例中为&lt;div&gt;)的父级上使用text-align: center(而不是right)将内容居中。


您示例中的 p 元素未居中,而是左对齐。如果它有margin: auto,那么它将居中。


如果您在谈论 vertical 对齐(这不是您所说的),那么 p 元素位于垂直中心,但那是因为它具有相同的顶部和底部边距用户代理样式表其内容高度与边距相结合,使其成为那里最高的东西。如果块 3 中的内容更高,则该段落将比其包含的 div 的底部更靠近顶部。

【讨论】:

  • 也许你可以试试flex-flow : row,因为它可以在行上对齐
  • @Quentin Uhm...为什么标签元素无论如何都不会居中? label { display: block; margin: auto; }
  • 默认情况下,块也与包含它的空间一样宽,因此任何方向的对齐都没有可见效果,除非您还更改了width
猜你喜欢
  • 2016-04-29
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
相关资源
最近更新 更多