如何修复HTML5输入框的高度不一致?

Sti*_*ers 7 css html5 google-chrome html-input css3

HTML5中引入的一些新输入类型(例如<input type="date">Google Chrome中较高的输入类型).有没有办法在不设置固定高度的情况下修复不一致的高度?

目标是使下面列出的所有输入类型包括所有提交按钮具有相同的高度.原因:

  • 特别是当它们水平布置时,匹配设计.
  • 灵活性,当我需要一些输入框具有更大的字体大小.

$("input").each(function() {
  h = $(this).outerHeight();
  $(this).parent().append(h);
});
Run Code Online (Sandbox Code Playgroud)
input {
  font: inherit;
  display: inline-block;
  vertical-align: middle;
  box-sizing: border-box;
  border: 1px solid silver;
  padding: 0.5rem;
  margin: 0;
}

[type="search"] {
  -webkit-appearance: textfield;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
  background-color: silver;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Input Heights</h1>
<p><input type="text" placeholder="text"></p>
<p><input type="search" placeholder="search"></p>
<p><input type="tel" placeholder="tel"></p>
<p><input type="url" placeholder="url"></p>
<p><input type="email" placeholder="email"></p>
<p><input type="datetime" placeholder="datetime"></p>
<p><input type="date" placeholder="date"></p>
<p><input type="month" placeholder="month"></p>
<p><input type="week" placeholder="week"></p>
<p><input type="time" placeholder="time"></p>
<p><input type="datetime-local" placeholder="datetime-local"></p>
<p><input type="number" placeholder="number"></p>
<!-- <p><input type="range" placeholder="range"></p> -->
<!-- <p><input type="color" placeholder="color"></p> -->
<p><input type="submit" value="submit"></p>
Run Code Online (Sandbox Code Playgroud)

Tem*_*fif 8

该问题似乎与 Chrome 添加到日期输入的箭头有关:

在此处输入图片说明

这些箭头比文本高,使整个输入比另一个高。它们也被视为文本,因此它们会受到影响font-sizeline-height这使得它有点棘手。

一个想法是将 amin-height应用于所有输入的内容区域,以匹配这些箭头的高度。经过几次测试,如果我们设置min-height:1.5em和制作,我们可以有相同的高度box-sizing:content-box。的使用content-box将确保其他输入的高度不会缩小。

$("input").each(function() {
  h = $(this).outerHeight();
  $(this).parent().append(h);
});
Run Code Online (Sandbox Code Playgroud)
input {
  font: inherit;
  vertical-align: middle;
  border: 1px solid silver;
  padding: 0.5rem;
  margin: 0;
  display:inline-block;
  min-height: 1.5em;
  box-sizing:content-box;
}

[type="search"] {
  -webkit-appearance: textfield;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
  background-color: silver;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Input Heights</h1>
<p><input type="text" placeholder="text"></p>
<p><input type="search" placeholder="search"></p>
<p><input type="tel" placeholder="tel"></p>
<p><input type="url" placeholder="url"></p>
<p><input type="email" placeholder="email"></p>
<p><input type="datetime" placeholder="datetime"></p>
<p><input type="date" placeholder="date"></p>
<p><input type="month" placeholder="month"></p>
<p><input type="week" placeholder="week"></p>
<p><input type="time" placeholder="time"></p>
<p><input type="datetime-local" placeholder="datetime-local"></p>
<p><input type="number" placeholder="number"></p>
<!-- <p><input type="range" placeholder="range"></p> -->
<!-- <p><input type="color" placeholder="color"></p> -->
<p><input type="submit" value="submit"></p>
Run Code Online (Sandbox Code Playgroud)

然后,我们可以调整paddingfont-sizeheight等他们将始终保持相同的高度:

input {
  font: inherit;
  vertical-align: middle;
  border: 1px solid silver;
  padding: 0.5rem;
  margin: 0;
  display:inline-block;
  min-height: 1.5em;
  box-sizing:content-box;
}
.big input{
   padding:20px;
}
.small input{
   padding:2px;
}
.h-big input{
   height:50px;
}
.h-small input{
   height:10px;
}
Run Code Online (Sandbox Code Playgroud)
<p><input type="text" placeholder="text"><input type="date" placeholder="date"></p>
<p style="font-size:25px;"><input type="text" placeholder="text"><input type="date" placeholder="date"></p>
<p style="font-size:10px;"><input type="text" placeholder="text"><input type="date" placeholder="date"></p>

<p class="big"><input type="text" placeholder="text"><input type="date" placeholder="date"></p>
<p class="small"><input type="text" placeholder="text"><input type="date" placeholder="date"></p>

<p class="h-big"><input type="text" placeholder="text"><input type="date" placeholder="date"></p>
<p class="h-small"><input type="text" placeholder="text"><input type="date" placeholder="date"></p>
Run Code Online (Sandbox Code Playgroud)