Когда вы устанавливаете элемент style.backgroundPosition
, это то же самое, что и встроенный атрибут style="background-position: ..."
. Поскольку встроенные атрибуты стиля переопределяют правила таблицы стилей, правила наведения / не наведения больше никогда не могут влиять на положение фона.
Вы можете удалить правило backgroundPosition
для невыбранных элементов, чтобы правила таблицы стилей могли просвечивать. Но на самом деле ваш код нуждается в серьезном рефакторинге: ручная установка каждой фоновой позиции в onclick
уродлива и не поддерживается.
Вместо этого переключите класс, чтобы пометить выбранную ссылку, например. в стиле так:
.c { background: url(...); }
#c1.selected, #c1:hover { background-position: -276px 0; }
#c2.selected, #c2:hover { background-position: -276px -61px; }
...
Разметка:
<h2><a class="c selected" id="c1" href="#productcats">Products</a></h2>
<a class="c" id="c2" href="#rice">Rice</a>
...
(a
-inside- h2
, потому что обратный путь недопустим.)
сценарий:
var selected= $('#c1');
$('.c').click(function() {
// Move the 'selected' class to the new element
//
selected.removeClass('selected');
selected= $(this);
$(this).addClass('selected');
// Scroll target element into view
//
var y= $(this.hash).offset().top-$('#slide').offset().top;
$('#slide').animate({top: -y+'px'}, {duration: 450, queue: false});
return false;
});
Обратите внимание, что здесь используется ссылка на ссылки, указывающая, куда они идут, что улучшит доступность в невизуальных браузерах. Вы также должны добавить код, чтобы посмотреть на location.hash
при загрузке страницы, и если вы что-то там увидите, прокрутите эту страницу в поле зрения. В противном случае будет невозможно добавить в закладки одну из ваших подстраниц или щелкнуть средней кнопкой мыши на новой вкладке ссылки или что-то в этом роде.