3

关于居中的问题和答案并不缺乏,但考虑到我的具体情况,我无法让它发挥作用,这涉及到浮动。

我想将包含三个浮动输入元素(拆分按钮、文本、复选框)的容器 DIV 居中,这样当我的页面被调整得更宽时,它们会从这里开始:

  ||.....[      ][v]     [            ]       [ ] label .....||

对此

  ||......................[      ][v]     [            ]       [ ] label.......................||

它们漂浮得很好,但是当页面变宽时,它们会停留在左侧:

  ||.....[      ][v]     [            ]       [ ] label .......................................||

如果我删除浮动,以便输入元素堆叠而不是并排:

  [      ][v]   
  [            ]  
  [ ] label

然后在调整页面大小时它们会正确居中。因此,将浮动应用于容器内的 DIV#hbox 的元素会打乱居中。 由于浮动的设计方式,我想做的事情是不可能的吗?

这是我的 DOCTYPE,标记确实在 w3c 验证:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

这是我的标记:

 <div id="term1-container">
 <div class="hbox">
    <div>
        <button id="operator1" class="operator-split-button">equals</button>
        <button id="operator1drop">show all operators</button>
    </div>
    <div><input type="text" id="term1"></input></div>
    <div><input type="checkbox" id="meta2"></input><label for="meta2" class="tinylabel">meta</label></div>
 </div>
</div>

这是(不工作的)CSS:

  #term1-container {text-align: center}
  .hbox {margin: 0 auto;}
  .hbox div {float:left; }

我还尝试将display: inline-block应用于浮动按钮、文本输入和复选框;即使我认为它仅适用于文本,我也尝试将white-space: nowrap应用于 #term1-container DIV,基于我在 SO 上看到的帖子。

为了更完整一点,这里是创建拆分按钮的 jQuery:

$(".operator-split-button").button().click( function() {
alert( "foo" );
}).next().button( {
text: false,
icons: {
   primary: "ui-icon-triangle-1-s"
    }
}).click( function(){positionOperatorsMenu();} )
})
4

1 回答 1

3

CSS:

body {
    text-align: center;
}
#term1-container {
    width: 500px;
    text-align: center;
    margin: 0 auto;
}
.hbox div {
    float: left;
}

HTML

   <div id="term1-container">
     <div class="hbox">
        <div>
         <button id="operator1" class="operator-split-button">equals</button>
         <button id="operator1drop">show all operators</button>
        </div>
       <div><input type="text" id="term1"/></div>
       <div><input type="checkbox" id="meta2"/>
      <label for="meta2" class="tinylabel">meta</label></div>
     </div>
    </div>

更新

如果您在设置固定时遇到问题width:

你可以使用这样的东西

body {
    text-align: center;
}
#term1-container {
    display: table;
    white-space: nowrap;
    text-align: center;
    margin: 0 auto;
}
.hbox div {
    display: table-cell;
    display: inline
}
于 2010-05-29T17:51:04.050 回答