正如李斯特先生所指出的,
max-height
min-height
,表示为
em
,似乎是你最好的选择。我经常在生产系统中使用它,没有任何投诉:
function updateInputs() {
$("input").each(function() {
$('span', $(this).parent()).remove();
$('<span />', {
text: $(this).outerHeight()
}).appendTo($(this).parent())
});
}
$('#fontSizer').on('input', function() {
$('body').css('font-size', $(this).val() + 'px');
updateInputs();
});
$(window).on('load',updateInputs);
body {
font-size: 16px
}
input {
font: inherit;
display: inline-block;
vertical-align: middle;
box-sizing: border-box;
border: 1px solid silver;
padding: 0.5rem;
margin: 0;
max-height: 2.25em;
min-height: 2.25em;
}
[type="search"] {
-webkit-appearance: textfield;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
background-color: silver;
}
.fixed-top {
background-color: rgba(255, 255, 255, .85);
display: flex;
align-items: center;
justify-content: center;
top: 0;
width: 100%;
left: 0;
position: fixed;
}
<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>
<div class="fixed-top">
<input type="range" step="0.01" id="fontSizer" max="54" min="10" value="16">
</div>
注意:范围滑块仅更改
font-size
在
<body>
一个完全不同的方法是增加正常的填充值,使它们达到与具有微调器的大小相同的大小。我最接近体面的事就是
:root {
--input-padding: 0.5rem;
}
input {
padding: calc(var(--input-padding) + .1475em) var(--input-padding);
line-height: 1.225em
}
input[type="date" i], input[type="datetime-local" i], input[type="month" i], input[type="time" i], input[type="week" i] {
padding: var(--input-padding)
}
函数updateInputs(){
$(“输入”).each(function(){
$('span',$(this.parent()).remove();
$('<span/>'{
}).appendTo($(this).parent())
});
}
$('#fontSizer').on('输入',函数(){
$('body').css('font-size',$(this).val()+'px');
updateInputs();
$(window).on('load',updateInputs);
body {
font-size: 16px
}
input {
font: inherit;
display: inline-block;
vertical-align: middle;
box-sizing: border-box;
border: 1px solid silver;
margin: 0;
}
[type="search"] {
-webkit-appearance: textfield;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
background-color: silver;
}
.fixed-top {
background-color: rgba(255, 255, 255, .85);
display: flex;
align-items: center;
justify-content: center;
top: 0;
width: 100%;
left: 0;
position: fixed;
}
:root {
--input-padding: 0.5rem;
}
input {
padding: calc(var(--input-padding) + .1475em) var(--input-padding);
line-height: 1.225em
}
input[type="date" i], input[type="datetime-local" i], input[type="month" i], input[type="time" i], input[type="week" i] {
padding: var(--input-padding)
}
<<h1>输入高度</h1>
<p>&书信电报;输入type=“tel”placeholder=“tel”></p>
<p>&书信电报;输入type=“url”placeholder=“url”></p>
<p>&书信电报;输入type=“email”placeholder=“email”></p>
<p>&书信电报;输入type=“date”placeholder=“date”></p>
<p>&书信电报;输入type=“month”placeholder=“month”></p>
<p>&书信电报;输入type=“time”placeholder=“time”></p>
<p>&书信电报;输入type=“number”placeholder=“number”></p>
<!--&书信电报;p>&书信电报;输入type=“range”placeholder=“range”></p>--&燃气轮机;
<!--&书信电报;p>&书信电报;输入type=“color”placeholder=“color”></p>--&燃气轮机;
<p>&书信电报;输入type=“submit”value=“submit”></p>
<div class=“固定顶”>
<输入type=“range”step=“0.01”id=“fontSizer”max=“54”min=“10”value=“16”>
</部门>
然而,这并不完美。这些误差不是线性的,我怀疑其中涉及到一些舍入。有时在上面,有时在下面。