Vô hiệu hóa các nút quay của bộ webkit trên loại đầu vào = Số thứ tự?


203

Tôi có một trang web chủ yếu dành cho người dùng di động nhưng máy tính để bàn cũng vậy.

Trên Mobile Safari, việc sử dụng <input type="number">hoạt động rất tốt vì nó hiển thị bàn phím số trên các trường nhập chỉ chứa số.

Tuy nhiên, trong Chrome và Safari, sử dụng đầu vào số sẽ hiển thị các nút xoay ở bên phải của trường, trông giống như tào lao trong thiết kế của tôi. Tôi thực sự không cần các nút, bởi vì chúng vô dụng khi bạn cần viết một cái gì đó giống như một số có 6 chữ số.

Có thể vô hiệu hóa điều này với -webkit-appearancehoặc một số thủ thuật CSS khác không? Tôi đã thử mà không gặp nhiều may mắn.


15
Nếu bạn thích sử dụng type="text"vì những lý do khác và chỉ chuyển sang số cho tính năng bàn phím số, bạn có thể sử dụng pattern="[0-9]*"để lấy tính năng bàn phím, cho phép bạn giữ lại type="text". Xem stackoverflow.com/questions/6171903/
Mạnh

Câu trả lời:


114

Css dưới đây hoạt động cho cả Chrome và 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
giải pháp tốt hơn ở trên (đầy đủ hơn)
aqm

-moz-xuất hiện: trường văn bản; Ngoài ra là câu trả lời duy nhất làm việc cho tôi. Cảm ơn!
Nanoripper

283

Tôi phát hiện ra rằng có một phần thứ hai của câu trả lời cho điều này.

Phần đầu tiên đã giúp tôi, nhưng tôi vẫn có một khoảng trống ở bên phải type=numberđầu vào của tôi . Tôi đã loại bỏ lề trên đầu vào, nhưng rõ ràng tôi cũng phải loại bỏ lề trên spinner.

Điều này đã sửa nó:

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

Tuyệt vời. Tôi đã có một vấn đề tương tự , nhưng với một chiến lược CSS hơi khác, dẫn đến những vấn đề hoàn toàn mới ...
Lukas Eder

1
Có ai biết cách khắc phục hành vi cuộn mà bạn có thể cuộn lên xuống vô hạn không? Tôi đã đặt min=0.01(và maxmột số giá trị tùy ý) trong phần tử đầu vào của mình, nhưng tôi muốn có cuộn giấy chỉ cần đi lên và xuống trang. Tôi đang sử dụng AngularJS và tôi không thể tìm thấy bất cứ thứ gì.
JaKXz

2
Liên kết lại với một nguồn có thẩm quyền cho vấn đề cụ thể này và loại thông tin này: css-tricks.com/snippets/css/turn-off-number-input-spinners
Josh Habdas 13/1/2015

1
để rõ ràng, điều này không loại bỏ chức năng cuộn chuột!
babalu

1
-moz-ngoại hình: trường văn bản cho Firefox
Kevin Scos

16

Không chắc đây có phải là cách tốt nhất để làm hay không, nhưng điều này làm cho các spinners biến mất trên Chrome 8.0.552.5 dev:

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

@JethroLarson Nó không hoạt động trên cái gì? Bạn có thể thử -webkit-outer-spin-buttonthay thế.
robertc

cái này hoạt động rất tốt cho type = "date": input [type = date] :: - webkit-outs-spin-button {-webkit-ngoại hình: none; }
uglymunky

11

Dường như không thể ngăn chặn các spinners xuất hiện trong Opera. Như một cách giải quyết tạm thời, bạn có thể nhường chỗ cho các spinners. Theo như tôi có thể nói, CSS sau đây chỉ thêm phần đệm, chỉ trong Opera:

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

4
@Knu Thật vậy, nhưng nó đáng được đề cập ở đây vì mã trong câu trả lời khiến các đầu vào không thể sử dụng được với Opera.
Goulven

4
@Goulvench xin đừng :) Tôi thấy nó rất hữu ích, người khác cũng có thể.
frnhr

-2

Bạn cũng có thể ẩn spinner bằng thủ thuật sau:

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  opacity:0;
  pointer-events:none;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.