Spinner vs. native input[type=number]

Click the up/down controls (native on the left, the spinner on the right) and compare. Both fields carry the same attributes. The stepping base is min, otherwise the value attribute, otherwise 0; valid values are base + n·step.

About manual typing: native Chrome accepts an off-grid value that is typed in and only flags it as invalid on form validation. The spinner likewise leaves a typed value untouched, but a button click snaps it, like the native arrows, to the nearest valid grid value in the click direction.