Так как вы сказали в комментарии, что чем больше вариантов у вас есть, тем лучше, вот еще один.
В CSS3 есть две разные так называемые «блочные модели». Один добавляет границу и отступ к ширине элемента блока, а другой - нет. Вы можете использовать последний, указав
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
Тогда в современных браузерах элемент всегда будет иметь одинаковую ширину. То есть, если вы примените к нему границу при наведении, ширина границы не добавится к общей ширине элемента; граница будет добавлена "внутри" элемента, так сказать. Однако, если я правильно помню, вы должны явно указать width
, чтобы это работало. Это, вероятно, не вариант для вас в данном конкретном случае, но вы можете помнить об этом в будущих ситуациях.