Unfortunately, there is no CSS property that defines the vertical alignment of <button>
text and it is handled differently depending on the browser it's viewed in. Most solutions involve line-height
or padding
fixes for quick and dirty, but ultimately it seems best to go with alternatives such as using styled <div>
elements.
This post was helpful for me about button text: Position of text in a submit button
Here is the W3C spec on the vertial-align
property, which points out that it applies to "inline-level and 'table-cell' elements": http://www.w3.org/TR/CSS2/visudet.html
If you're looking for how browsers decide where the text lies, then the comments on this are correct. It's up to the browser and it's going to be hidden in the code and unmanipulable.