【发布时间】:2016-06-27 14:48:23
【问题描述】:
我有一个关于文本输入和填充的 IE 10 特定问题,这让我很头疼。这是设置和正在发生的事情的文字描述,但这里也有一个运行示例:
https://jsfiddle.net/41nq3pt1/5/
我省略了下面的 CSS,因为它有点大,请看 JSFiddle。非常感谢您的帮助,我不仅在寻找解决方案,而且还在寻找 IE 10 行为怪异的原因。
说明
这是我的输入元素的 HTML 结构:
<div class="input">
<label class="input__label" for="input">Floating label</label>
<input class="input__input" type="text" id="input">
</div>
初始状态:在输入字段的初始状态,有一个绝对定位的标签,以input的垂直中间为中心。这是通过给它一个padding-top 来完成的。调整输入本身的填充,使闪烁的光标出现在与标签相同的高度。
输入有内容:当在字段中输入内容时,通过减小其padding-top 向上移动标签,同时增加输入的padding-top 使其向下移动一点。通过 Javascript 添加一个类来交替填充:
// jQuery 1.12.4
$('.input__input').on('keyup input', function() {
if (!$(this).val() || $(this).val() == "") {
$(this).closest('.input').removeClass('input--has-content');
} else {
$(this).closest('.input').addClass('input--has-content');
}
});
删除内容后:当发现输入为空时,改变填充的类被移除,输入应处于初始状态。现在,尽管在所有当前的浏览器中工作,甚至低至 IE 8(我没有测试旧版本),IE 10 显然不会改变 input 元素的填充,请看这个截图: IE 10 vs. other browsers after step 4.
重现步骤
- 点击输入框,看到光标在标签所在的同一行闪烁
- 键入内容,标签应向上移动,光标略微向下移动
- 按退格键删除所有输入
- 标签再次向下移动,光标应在与步骤 1 相同的行上闪烁。
感谢您的帮助!
【问题讨论】:
-
这可能与设置的高度以及 IE10 如何处理填充有关。您可以尝试使用: box-sizing: border-box;此外,您可以尝试绝对/相对定位以及 line-height 来调整偏移量,看看您是否可以在 IE10 中取得进展。
-
谢谢,马克!我已经对 line-heights 进行了一些测试,并得出了一个涉及透明边框的解决方案:stackoverflow.com/a/38072818/5695127
标签: javascript jquery html css internet-explorer