一尘不染

在HTML中选择输入和文本输入-使宽度相等的最佳方法?

css

我有一个像这样的简单表格(仅用于说明目的)…

<form>

   <div class="input-row">
      <label>Name</label>
      <input type="text" name="name" />
   </div>

   <div class="input-row">
      <label>Country</label>
      <select name="country">
         <option>Australia</option>
         <option>USA</option>
      </select>
   </div>

</form>

我使用CSS的布局方法如下…

form  {
    width: 500px;
}

form .input-row {
    display: block;
    width: 100%;
    height: auto;
    clear: both; 
    overflow: hidden; /* stretch to contain floated children */
    margin-bottom: 10px;
}

form .input-row label {
    display: block;
    float: left;
}

form .input-row input,
form .input-row select {
    display: block;
    width: 50%;
    float: right;
    padding: 2px;
}

所有这些都很好地对齐了,除了我的select元素(无论如何在Firefox中)并不总是与其他input元素相同。通常,它会缩小几个像素。

我尝试过将宽度更改为像素大小(例如200px),但并没有改变。

使它们全部具有相同宽度的最佳方法是什么?我希望这不会再打我设置selectwidth单独,或将它们放入表…


阅读 261

收藏
2020-05-16

共1个答案

一尘不染

解决方案是为表单元素指定盒子模型,当您使用border-box时,浏览器通常会达成共识:

input, select, textarea {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

有normalize.css项目,它汇总了这些技巧。

2020-05-16