在DIV中将标签对齐到中心和左侧位置

14
我有一个这样的DIV:
    <div id="mydiv">
        <label id="orderName" style="align:center;">Order Name</label>
        <label id="orderNo" style="align:left;">Order No</label>  
    </div>

我想要做到以下两点:
- 将OrderName水平垂直居中对齐在此div中。
- 将OrderNo水平左对齐于此div(且垂直居中)。

如何实现?

    ----------------------------------
   |                                 |
   | OrderNo     OrderName           |
   |                                 |
    ----------------------------------

"align" 不是 CSS 属性,请使用 "text-align"。而对于垂直对齐,请使用 "line-height" 属性。 - Marc Bellêtre
2个回答

24

以下 CSS 将会得到您所期望的结果:

div {
    text-align: center;
}
#orderName {
    vertical-align: middle;
}
#orderNo {
    float: left;
}
 <div id="mydiv">
        <label id="orderName" >Order Name</label>
        <label id="orderNo">Order No</label>  
    </div>

解决方案2:

另一种方法是使用 display:flex。在这里,我添加了heightborder来显示垂直居中。

并且给予margin:0 auto;用于居中。

div {
    align-items: center;
    display: flex;
    height: 40px;
    border: 1px solid;
}


#orderName {
    order: 2;
    margin:0 auto;
}
<div id="mydiv">
        <label id="orderName" >Order Name</label>
        <label id="orderNo">Order No</label>  
    </div>


尽管现在垂直对齐已经起作用 - 但是订单名称现在仅从中心位置(50%)开始,而不是水平居中。 - Jasper
是的,那个方法可行,但是订单名称会随着订单号长度的变化而向右移动(即如果订单号是3位数与10位数,我会动态更新订单号,但订单名称保持不变)- 如果有一种简单的方法来处理这个问题,请告诉我 - 即便如此,非常感谢。 - Jasper
@Jasper 嗯,因为它在中心位置,所以它正在移动。将两个标签的宽度都设置为“50%”。 - ketan

0
名称
将标签和文本字段对齐 -

.search-box-container{

  display:flex;
  width:60%
  background: black;
  margin:0 auto;
  font-size:25px;
}

.label{
  margin:auto;
}

input[type=text]{
  height:20px;
}
<html>
    <body>
        <div class="search-box-container">
            <label for="" class="label">Name</label>
            <input type="text" class="searchbox"/>
        </div>
    </body>
</html>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接