You cannot actually do a whole lot with native HTML <select> as the style implementations are different everywhere and are dependent on the browser/OS of the user. I would actually recommend using a <ul> instead as it would give you a lot of flexibility in terms of styling.
That said, one way you can style a select is by using appearance property, give the <select> tag an appearance:none; so the default styles are stripped off.
Then you can wrap it inside a div and style that div instead. here's a quick pen I made for the demo: codepen.io/alkshendra/pen/gPyEOo
The browser support for appearance is quite good, you can use the usual vendor prefixes and it'd work across most browsers. Check caniuse for a detailed support guide.
Alkshendra Maurya
Frontend Engineer | Hashnode Alumnus