@yuhunglin @shacker follow up at #464 - basically if it's possible with CSS, we should do it that way, if not, we might have to do it with JavaScript.
The biggest reason why I did it with CSS is because of accessibility, now the `hover` and `focus` state will be the same.