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.