我尝试使用 js 和 jquery 制作下划线菜单项。
这是我的代码http://jsfiddle.net/naXja/9/
但我的许多项目没有固定宽度,所以下划线看起来不对。
有人可以解释我如何计算currpos
正确的方法吗?
问问题
682 次
5 回答
2
我已经修改了您的脚本的一部分,以便它查看当前项目的位置和宽度,而不是“第一个”项目(您在悬停事件之外计算的项目(即只有一次)。
$('.nav > li').hover(function() {
animatepos = $(this).position().left;
thisWidth = $(this).width();
$('.menu-hover').stop().animate({left:animatepos, width:thisWidth}, 300);
}
, function() {
$('.menu-hover').stop().animate({left:currpos, width:0}, 300);
});
于 2013-09-02T11:00:42.647 回答
1
每个元素都有不同的宽度。您必须获取每个元素的实际宽度,而不仅仅是第一个元素。
于 2013-09-02T11:00:55.907 回答
1
您可以使用offset() jQuery api 来查找元素位置(非绝对元素)
var currpos = $('.nav > li.active').offset().left
于 2013-09-02T10:58:00.283 回答
0
您能否删除底部悬停图像并改用此 CSS:
border-bottom: 1px solid red;
图像在图像加载中需要更多时间。
于 2013-09-02T11:05:35.077 回答
0
您的代码的问题是您正在准备好初始化 menuitemwidth 并假设菜单项的所有宽度都相同
以下是具有动态项目宽度和位置的更新代码:
var animatepos = $(this).offset().left;
$('.menu-hover').stop().animate({left:animatepos, width:$(this).width()}, 300);
更新了 jsFiddle 链接:http: //jsfiddle.net/naXja/16/
于 2013-09-02T11:06:14.383 回答