当你设置一个元素的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;
});
请注意,这使用链接的 href 来指向它们的去向,这将提高非可视浏览器的可访问性。您还应该添加一些代码来查看location.hash
页面加载,如果您在那里看到某些内容,请将该页面滚动到视图中。否则,将无法为您的某个子页面添加书签,或者中键单击新标签链接或类似的东西。