【问题标题】:How do I center (vertically and horizontally) buttons in a div tag?如何在 div 标签中居中(垂直和水平)按钮?
【发布时间】:2010-11-20 13:38:09
【问题描述】:

我正在尝试确定如何将 div 标签中的按钮居中(垂直和水平)。

给定以下 CSS:

div.listBoxMoverUserControl
{
    width: 350px;
    height: 175px;
}

div.listBoxMoverUserControl div 
{
    height: 150px;
}

div.listBoxMoverUserControl div select
{
    width: 150px;
    height: 150px;
}

div.listBoxMoverUserControl div.listBoxMoverUserControl_column1
{
    float: left;
    width: 150px;
}

div.listBoxMoverUserControl div.listBoxMoverUserControl_column2
{
    float: left;
    width: 50px;
}

div.listBoxMoverUserControl div.listBoxMoverUserControl_column3
{
    float: left;
    width: 150px;
}

我想让这个标记中的按钮居中。如何修改 CSS 来实现这一点?

<div class="listBoxMoverUserControl">
    <div class="listBoxMoverUserControl_column1">
        <label>Test1</label>
        <asp:ListBox runat="server"></asp:ListBox>
    </div>
    <div class="listBoxMoverUserControl_column2">
        <input id="btnMoveRight" type="button" value="->" /> <br />
        <input id="btnMoveLeft" type="button" value="<-" /> <br />
    </div>
    <div class="listBoxMoverUserControl_column3">
        <label>Test2</label>
        <asp:ListBox runat="server"></asp:ListBox>
    </div>
</div>

【问题讨论】:

    标签: css html center


    【解决方案1】:

    设置对象周围的边距以占据其余空间。如果您想将 50 x 50 像素的 div 居中在 100 x 100 像素的 div 中,那么您将在 50 像素的 div 周围设置 25 像素的边距。

    【讨论】:

    • ...如果你的盒子的宽度是可变的,你可以设置 margin-left:25% 和 margin-right:25%,它工作正常。
    【解决方案2】:

    像这样设置 div 中的项目:

    边距:0px 自动 0px 自动; 文本对齐:居中;

    <div class="listBoxMoverUserControl_column1" style="margin: 0px auto 0px auto; text-align: center;">
    

    ** 我刚刚做了一个内联示例来向您展示我的意思。

    【讨论】:

    • 它也会垂直居中吗?
    • 这只会水平对齐文本。
    • 哎呀..对不起。我想我回答得太快了。
    【解决方案3】:

    Vertical Centering in CSS

    您可以使用水平居中文本

    text-align: center;
    

    【讨论】:

      【解决方案4】:

      这是一个使用 CSS 转换的解决方案(必须为中间列中的两个输入元素添加一个容器 class="button_group" 以便正确居中):

      div,
      label,
      button_group {
        border: 1px solid blue;
      }
      
      *,
      *:before,
      *:after {
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
      }
      
      div.listBoxMoverUserControl {
        width: 352px;
        height: 150px;
      }
      
      div.listBoxMoverUserControl div {
        height: 150px;
      }
      
      div.listBoxMoverUserControl div select {
        width: 150px;
        height: 150px;
      }
      
      div.listBoxMoverUserControl div.listBoxMoverUserControl_column1 {
        float: left;
        width: 150px;
      }
      
      div.listBoxMoverUserControl div.listBoxMoverUserControl_column2 {
        float: left;
        width: 50px;
      }
      
      div.listBoxMoverUserControl div.listBoxMoverUserControl_column3 {
        float: left;
        width: 150px;
      }
      
      div.listBoxMoverUserControl_column1,
      div.listBoxMoverUserControl_column2,
      div.listBoxMoverUserControl_column3 {
        /* centering */
        position: relative;
      }
      
      
      /* centering */
      .button_group {
        height: auto !important;
      }
      
      div label,
      .button_group {
        /* centering */
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        -webkit-transform: translate(-50%, -50%);
        -moz-transform: translate(-50%, -50%);
        -o-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
      }
      <div class="listBoxMoverUserControl">
        <div class="listBoxMoverUserControl_column1">
          <label>Test1</label>
        </div>
        <div class="listBoxMoverUserControl_column2">
          <div class="button_group">
            <input id="btnMoveRight" type="button" value="->" /> <br />
            <input id="btnMoveLeft" type="button" value="<-" /> <br />
          </div>
        </div>
        <div class="listBoxMoverUserControl_column3">
          <label>Test2</label>
        </div>
      </div>

      【讨论】: