HasLayout отсутствует в IE8 и выше (но вы можете запустить его, переведя IE в режим Quirks, IE7 compat или любой другой ...): http://msdn.microsoft.com/en-us/library/ff405844(v=vs.85).aspx
Вы запускаете режим Quirks или аналогичный?
Можете ли вы решить проблему, если вместо псевдокласса вы стилизуете прямой элемент? IE был довольно известен тем, что испытывал зуд при изменении состояний отображения между псевдоклассами. Кроме того, после того, как на якорь нажали, он больше не: ссылка, а: посещен, и стилизация самого элемента естественным образом распространяется на: ссылку, посещение и т. Д. Затем: hover,: active и: focus нужно только переопределить «a».
a.vaOn, a.vaOff {
margin: 0 10px 10px 0;
display: inline-block;
width: 200px;
height: 95px;
background: #fff url(../images/logos_va_on.gif) no-repeat 0 -8px;
...etc...
}
a.vaOff {
background-position: 0 -110px;
}
Это устанавливает основу для самих элементов: состояние отображения (встроенный блок, для чего бы то ни было в IE7), ширина и высота. Если бы были задействованы IE6 и абсолютное позиционирование, вам нужно было бы просто смириться с этим и снова указать высоту: hover, но вы не упомянули об этом.
a.vaOff:hover, a.vaOff:focus {
background-position: 0 -8px;
}
То, что я говорю, по крайней мере, в более старых версиях IE (6, 7), где вы устанавливаете размеры и состояния отображения, так что, если вы попробуете этот стиль настройки, проблема исчезнет или изменится?
IE8 и 9 делают это интересным, потому что ни один из них больше не имел Layout, и ни один из них не был так разборчив в отношении того, где вы указали состояния отображения.