我正在尝试创建一个导航菜单,当将鼠标悬停在子div
项上时,该菜单会更改父li
背景。实际上,我只是想移动父背景。
这是我的代码:
<div id="headerNav">
<li class="navHome"><a href="index.php">Home</a></li>
<li class="navServices"><a href="services.php">Services</a></li>
<li class="navFaq"><a href="faq.php">FAQ</a></li>
<li class="navGallery"><a href="gallery.php">Gallery</a></li>
<li class="navContact"><a href="contact-us.php">Contact</a></li>
</div>
所以,我有#headerNav
显示默认背景。当您将鼠标悬停在“服务”上时,我希望移动#headerNav
背景图片75px。当您将鼠标悬停在常见问题解答后,我想将#headerNav
背景图片向上移动150px等等。
任何人都可以帮助我吗?
答案 0 :(得分:3)
考虑li
元素是列表项,因此其父元素应为例如ul
代码,但不是div
。如果我们想象有效的HTML标记,您可以使用类似下面的内容来操作父元素的background-position
。我使用index()
方法不对逻辑进行硬编码。
$("#headerNav > li").hover(function() {
var pos = "0 -" + ($(this).index() * 75) + "px";
$(this).parent().css("background-position", pos);
}, function() {
$(this).parent().css("background-position", "0 0");
});
答案 1 :(得分:0)
你可以通过在li上放置一个自定义属性来确定要移动的像素数,并在悬停在项目上时使用jquery,获取属性值然后访问它的父级以使用此属性设置它的背景位置,这样它将是可扩展的菜单和强大的
$("#headerNav li").hover(function() {
$(this).parent().css("background-position", $(this).attr("CustomAttributeName"));
})
答案 2 :(得分:0)
jQuery可以使用hover()
函数轻松完成此任务:
$("li").hover(function() {
$(this.parentNode).addClass(this.className);
}, function() {
$(this.parentNode).removeClass(this.className);
});
jsFiddle:http://jsfiddle.net/Zy68z/