在输入类型=“数字”上禁用Webkit的旋转按钮?


203

我有一个主要针对移动用户的网站,但也针对台式机。

在Mobile Safari上,使用<input type="number">效果很好,因为它会在只能包含数字的输入字段上弹出数字键盘。

但是,在Chrome和Safari中,使用数字输入会在字段的右侧显示旋转按钮,这在我的设计中看起来像废话。我真的不需要按钮,因为当您仍然需要编写6位数字之类的东西时,它们是无用的。

是否可以通过-webkit-appearance其他CSS技巧来禁用此功能?我尝试了很多运气。


15
如果您type="text"出于其他原因更喜欢使用,而仅将数字键盘功能切换为数字,则可以使用pattern="[0-9]*"获取键盘功能,以保留type="text"。见stackoverflow.com/questions/6171903/…–
joshuahedlund

Answers:


114

下面的CSS适用于Chrome和Firefox

input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type=number] {
    -moz-appearance:textfield;
}

8
比上面更好的解决方案(更完整)
aqm 2015年

-moz-appearance:textfield; 另外,这是唯一对我有用的答案。谢谢!
Nanoripper

283

我发现答案的第二部分。

第一部分为我提供了帮助,但我在type=number输入内容的右侧仍然有一个空格。我已经将输入的余量清零了,但是显然我也不得不将微调器的余量清零了。

这修复了它:

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

太棒了 我遇到了类似的问题,但是CSS策略略有不同,这导致了全新的问题……
Lukas Eder

1
有谁知道一种解决滚动行为的方法,使您可以无限地上下滚动?我已经在输入元素中设置了min=0.01(并设置max了一些任意值),但是我更希望使滚轮仅在页面上上下移动。我正在使用AngularJS,但找不到任何atm。
JaKXz 2014年

2
链接回有关此特定问题和此类信息的权威信息源:css-tricks.com/snippets/css/turn-off-number-input-spinners
Josh Habdas,2015年

1
需要明确的是,这不会删除鼠标滚动功能!
babalu 2015年

1
-moz-appearance:Firefox的文本字段
Kevin Suttle

16

不确定这是否是最好的方法,但这会使微调框在Chrome 8.0.552.5 dev上消失:

input[type=number]::-webkit-inner-spin-button {
    -webkit-appearance: none;
}

@JethroLarson什么不起作用?您可以尝试-webkit-outer-spin-button代替。
robertc 2010年

这对于type =“ date”效果很好:input [type = date] ::-webkit-outer-spin-button {-webkit-appearance:none; }
uglymunky 2011年

11

似乎不可能阻止微调器出现在Opera中。作为临时的解决方法,您可以为微调器腾出空间。据我所知,以下CSS仅在Opera中添加了足够的填充:

noindex:-o-prefocus,
input[type=number] {
    padding-right: 1.2em;
}

4
@Knu确实,但是在这里值得一提,因为答案中的代码使输入无法在Opera中使用。
Goulven

4
@Goulvench,请不要:)我发现它非常有用,其他人也可以。
2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.