Can I hide the HTML5 number input’s spin box?

后端 未结 17 1274
感动是毒
感动是毒 2020-11-22 05:08

Is there a consistent way across browsers to hide the new spin boxes that some browsers (such as Chrome) render for HTML input of type number? I am looking for a CSS or Jav

相关标签:
17条回答
  • 2020-11-22 05:22

    I found a super simple solution using

    <input type="text" inputmode="numeric" />
    

    This is supported is most browsers: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode

    0 讨论(0)
  • 2020-11-22 05:26

    This CSS effectively hides the spin-button for webkit browsers (have tested it in Chrome 7.0.517.44 and Safari Version 5.0.2 (6533.18.5)):

    input::-webkit-outer-spin-button,
    input::-webkit-inner-spin-button {
        /* display: none; <- Crashes Chrome on hover */
        -webkit-appearance: none;
        margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
    }
    
    input[type=number] {
        -moz-appearance:textfield; /* Firefox */
    }
    <input type="number" step="0.01" />

    You can always use the inspector (webkit, possibly Firebug for Firefox) to look for matched CSS properties for the elements you are interested in, look for Pseudo elements. This image shows results for an input element type="number":

    Inspector for input type=number (Chrome)

    0 讨论(0)
  • 2020-11-22 05:28

    This like your css code:

    input[type="number"]::-webkit-outer-spin-button,
    input[type="number"]::-webkit-inner-spin-button {
      -webkit-appearance: none;
      margin: 0;
    }
    
    0 讨论(0)
  • 2020-11-22 05:30

    input[type=number]::-webkit-inner-spin-button, 
    input[type=number]::-webkit-outer-spin-button {
         -webkit-appearance: none;
    <input id="test" type="number">

    0 讨论(0)
  • 2020-11-22 05:31

    Short answer:

    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;
    }
    <input type="number" />

    Longer answer:

    To add to existing answer...

    Firefox:

    In current versions of Firefox, the (user agent) default value of the -moz-appearance property on these elements is number-input. Changing that to the value textfield effectively removes the spinner.

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

    In some cases, you may want the spinner to be hidden initially, and then appear on hover/focus. (This is currently the default behavior in Chrome). If so, you can use the following:

    input[type="number"] {
        -moz-appearance: textfield;
    }
    input[type="number"]:hover,
    input[type="number"]:focus {
        -moz-appearance: number-input;
    }
    <input type="number"/>


    Chrome:

    In current versions of Chrome, the (user agent) default value of the -webkit-appearance property on these elements is already textfield. In order to remove the spinner, the -webkit-appearance property's value needs to be changed to none on the ::-webkit-outer-spin-button/::-webkit-inner-spin-button pseudo classes (it is -webkit-appearance: inner-spin-button by default).

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

    It's worth pointing out that margin: 0 is used to remove the margin in older versions of Chrome.

    Currently, as of writing this, here is the default user agent styling on the 'inner-spin-button' pseudo class:

    input::-webkit-inner-spin-button {
        -webkit-appearance: inner-spin-button;
        display: inline-block;
        cursor: default;
        flex: 0 0 auto;
        align-self: stretch;
        -webkit-user-select: none;
        opacity: 0;
        pointer-events: none;
        -webkit-user-modify: read-only;
    }
    
    0 讨论(0)
  • 2020-11-22 05:33

    This is more better answer i would like to suggest on mouse over and without mouse over

    input[type='number'] {
      appearance: textfield;
    }
    input[type='number']::-webkit-inner-spin-button,
    input[type='number']::-webkit-outer-spin-button,
    input[type='number']:hover::-webkit-inner-spin-button, 
    input[type='number']:hover::-webkit-outer-spin-button {
    -webkit-appearance: none; 
     margin: 0; }
    
    0 讨论(0)
提交回复
热议问题