- How to Remove Arrows (spinner) from Number Input using CSS
- How to Hide the HTML5 Number Input’s Arrow Buttons
- Example of hiding the arrow button with the CSS display property:
- Example of hiding the arrow button with the CSS appearance property:
- Example of hiding the arrow button from the number input:
- The display and appearance properties
- Css input number remove arrows
- How To Remove Arrows on a Number Input?
- Using WebKit Properties
- Using an inputmode Attribute
- Extended Example
- References
- Similar Articles
- Turn Off Number Input Spinners
- Comments
How to Remove Arrows (spinner) from Number Input using CSS
The HTML5 number input field is supported by most modern browsers. The browser adds a spinner control to the number input field to increase or decrease the input value. The up and down arrows in the number input help to control the field’s value without manually typing.
The arrows of number input make it easier to increase and decrease value. But it may create some design issues in the custom form design. Because, when you use the input type=»number» field, the spinner control (arrows) is automatically added to this field. The arrows can be easily removed from the number field with CSS.
You can use CSS pseudo-element to hide or disable up and down arrows from number input. In the following code snippets, w will show you how to remove arrows from number input using CSS.
Use ::-webkit-inner-spin-button and ::-webkit-outer-spin-button Pseudo-elements to hide arrows from number input field using CSS. The following CSS will work for all the major browsers (Chrome, Internet Explorer & Edge, Safari, etc).
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button < -webkit-appearance: none; margin: 0; >
Use the following CSS for Firefox.
input[type=number] < -moz-appearance:textfield; >
How to Hide the HTML5 Number Input’s Arrow Buttons
As there is no longer a problem in Chrome, you can only set the display property to “none” to hide the arrow buttons.
Example of hiding the arrow button with the CSS display property:
html> html> head> style> input::-webkit-outer-spin-button, input::-webkit-inner-spin-button < display: none; > style> head> body> input type="number" /> body> html>
There is another method using the appearance property.
Example of hiding the arrow button with the CSS appearance property:
html> html> head> style> input::-webkit-outer-spin-button, input::-webkit-inner-spin-button < -webkit-appearance: none; margin: 0; > input[type=number] < -moz-appearance: textfield; /* Firefox */ > style> head> body> input type="number" /> body> html>
In Firefox versions, the default value of the -moz-appearance property on these elements is number-input . Changing it to the value textfield removes the spinner.
And if you want the spinner to be hidden initially, and then appear on hover or focus.
Example of hiding the arrow button from the number input:
html> html> head> style> input[type="number"] < -moz-appearance: textfield; >input[type="number"]:hover, input[type="number"]:focus style> head> body> input type="number" /> body> html>
The display and appearance properties
The display property defines the type of the box used for an HTML element. The none value specifies that the element should not be displayed at all.
The appearance property displays an element using a platform-native styling based on the users’ operating system’s theme. The -moz-appearance property is used in Firefox. The -webkit-appearance property is designed to work on browsers powered by the WebKit, such as Safari and Chrome.
Css input number remove arrows
There is a big question web developers often ask and search for when using an HTML input type number.
How To Remove Arrows on a Number Input?
There are two methods for removing arrows from an HTML input type number. The first method uses a -webkit-inner-spin-button and -webkit-outer-spin-button selector, while a second method uses an HTML inputmode attribute.
As in the image below, let’s explore these two methods to achieve an input without arrows.
Using WebKit Properties
First, we create an HTML input with an attribute type of “number”. These input fields are typically used in a form. By using the type attribute, it defines a number picker element as an HTML numeric input field.
As you see below, the HTML code for a number picker is small and straightforward.
Secondly, we need to add some CSS styles to remove the appearance of arrow buttons. This can be achieved by using some WebKit CSS pseudo-elements selectors, for example, ::-webkit-inner-spin-button and ::-webkit-outer-spin-button . These pseudo-elements select the arrows on an input. The pseudo-elements must be used in conjunction with a CSS element selector input[type=number] . The full string would look something like this… input[type=number]::-webkit-inner-spin-button .
Last, we use a CSS appearance property and the WebKit version and set a value of “none”. These properties effectively hide the arrow buttons on a number picker. In a short summary, the arrows can be hidden with CSS styles, and no JavaScript is needed.
/* Chrome, Safari, Edge, Opera */ input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button < -webkit-appearance: none; appearance: none; >/* Firefox */ input[type=number]
Using an inputmode Attribute
The second method involves using an inputmode=»numeric» attribute and changing a number input to type=»text» .
Note: It’s essential to understand that using an inputmode attribute doesn’t force form validity on user input. Form validity should be performed using JavaScript or choosing an appropriate data type that conforms to the particular user input, such as .
An inputmode attribute tells a browser or app what kind of mechanism should be used to help a user enter content. For example, when using an inputmode=»numeric» , the user agent should display a number keypad if a user is entering a numeric data type.
Let’s demonstrate the type»text» method and the inputmode attribute written in HTML.
Extended Example
References
Similar Articles
Turn Off Number Input Spinners
WebKit desktop browsers add little up down arrows to number inputs called spinners. You can turn them off visually like this:
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button
Note that some other functionality still exists, like being able to increment the number via the scroll wheel on a mouse. David blogged another method in June 2021:
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button
Psst! Create a DigitalOcean account and get $200 in free credit for cloud-based hosting and services.
Comments
Anyone have any idea of how to add styles to the spin buttons besides turning them off? I have a taller-than-default text box and I’d like to make the spinners a little bigger and easier to click…
Yes, where margin:0 is, you should be able to just style the element from there. I am looking to find the documentation on this element. I want to turn the spinners on in mobile.
Can we stop modifying values when we keep mouse cursor on focused element and scroll mouse wheel ? If yes, please provide solution.
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button
I found that increasing line-height value makes the arrow buttons larger, while simply height attribute keeps the box itself the desired size:
You can also style the buttons to your liking, by using :before and :after Here’s a very simple example and a fiddle (also includes a styled search input)
input[type=number]::-webkit-inner-spin-button < -webkit-appearance: none; cursor:pointer; display:block; width:8px; color: #333; text-align:center; position:relative; >input[type=number]::-webkit-inner-spin-button:before, input[type=number]::-webkit-inner-spin-button:after < content: "^"; position:absolute; right: 0; font-family:monospace; line-height: >input[type=number]::-webkit-inner-spin-button:before < top:0px; >input[type=number]::-webkit-inner-spin-button:after
This stopped working in Chrome a while ago. It seems you are no longer able to add pseudo elements to those selectors, which is a shame, since there’s only 1 selector for both up and down button
$(':input[type=number]').on('mousewheel', function(e)< $(this).blur(); >);