选择表单元素内部文本间距

时间:2018-11-01 10:25:24

标签: html css

我在-webkit和其他浏览器之间的select元素上发现了这种不一致的行为。元素内文本的间距与其他输入元素不一致。 (请参见示例)。所选内容的左侧额外有〜2px间距。因此不会与上面的输入元素水平对齐。

Chrome 效果很好,元素中的文本水平对齐。

Chrome select

Firefox 不能与上面的输入完全水平对齐。

Firefox select

元素上的填充相同。除了-webkit浏览器之外,select元素中仅存在我无法解释的间距。我已经检查了它:

  • Safari(没有填充对齐)
  • Chrome浏览器(没有填充对齐)
  • Firefox
  • 边缘
  • IE11

FF,Edge和IE11的间距(对我而言)无法解释。没有文字缩进,没有什么可以解释这个额外的空间。

这是我(简体)的css作为输入,然后选择

html {
    font-size: 93.75%;
    line-height: 2;
    min-height: 100%;
    webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
}

body {
    margin: 0;
    padding: 0;
    position: relative;
    background-color: #fff;
}

* {
    box-sizing: border-box;
}

.form
{
  background: #f1f1f1;
  padding: 15px;
  margin: 30px;
  max-width: 250px;
border-radius: 3px;
}

.form__group + .form__group
{
  margin-top: 10px;
}

input[type="text"], input[type="email"], input[type="tel"], input[type="password"] {
    border: 1px solid #999;
    padding: 6.5px 14px;
    margin: 0;
    width: 100%;
    border-radius: 0;
    -webkit-appearance: none;
    line-height: inherit;
    border-radius: 3px;
    height: 3rem;
    font-size: 14px;
    line-height: 24px;
}

select {
    font-size: 14px;
    line-height: 24px;
    -webkit-appearance: none;
    -webkit-padding-end: 29px !important;
    -webkit-padding-start: 14px !important;
    -moz-appearance: none;
    -o-appearance: none;
    appearance: none;
    border: 1px solid #999;
    padding: 6.5px 29px 6.5px 14px;
    margin: 0;
    width: 100%;
    outline: 0;
    border-radius: 3px;
    background: #fff;
    color: #484A4E;
    cursor: pointer;
    height: 3rem;
    background-size: 30px 50px;
    background-position: right center;
    background-repeat: no-repeat;
    background-image: url(data:image/svg+xml;base64,PHN2ZyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSdub25lJyB2aWV3Q…lsZT0nZmlsbDojREZFNEVDOycgcG9pbnRzPScxNSwxNyAxMCwyMiAyMCwyMicvPjwvc3ZnPg==);
}
<div class="form">
  <div class="form__group">
    <input type="text" name="example-input" value="" placeholder="Example input" />
  </div>
  <div class="form__group">
    <select name="example-select">
      <option value="">Example select</option>
      <option value="example">Example select item</option>
      <option value="another">Another one</option>
    </select>
  </div>
</div>

更新08/2018

经过一番头痛并在网上搜索后,我发现了两个答案herehere,似乎可以“回答”我的问题。答案就像我认为的浏览器渲染不一致一样。不幸的是,没有简单的CSS方法可以解决该问题。

1 个答案:

答案 0 :(得分:0)

请遵循基本准则。

* {box-sizing: border-box; padding: 0;margin: 0;}