Vous pourriez utiliser une ombre portée plutôt qu'une bordure pour ce type de fonctionnalité.
Cela fonctionne parce que votre ombre ne "prend pas de taille dans le DOM" et n'affecte donc pas le positionnement, contrairement à une bordure.
Essayez d'utiliser une déclaration comme
box-shadow:0 0 1px 1px #102447;
au lieu de votre
border:1px solid #102447;
sur votre état de survol.
Vous trouverez ci-dessous une démonstration rapide de ce système en action :
DEMO
#homeheader a:visited,
#homeheader a {
text-decoration: none;
color: black;
margin-right: 5px;
}
#homeheader a:hover {
background-color: #D0DDF2;
border-radius: 5px;
box-shadow: 0 0 1px #102447;
}
#homeheader li {
padding: 0;
margin: 0px 10px;
display: inline;
font-size: 1em;
}
<div id="homecontainer">
<div id="homeheader">
<ul>
<li><a href="#">this</a>
</li>
<li><a href="#">that</a>
</li>
<li><a href="#">this again</a>
</li>
<li><a href="#">that again</a>
</li>
</ul>
</div>
</div>