【发布时间】:2014-08-16 09:17:58
【问题描述】:
我有下面的代码,它是从 (CSS-Tricks Link) 修改的。它工作正常,但是我网站中的魔术线(导航下的浮动元素)是 40 像素宽。
我想永久居中对齐栏(无论它是否处于悬停状态),目前它在元素的左侧对齐。由于它使用 jQuery .position() 从左侧计算,我所有的努力都添加了 'forceRight' 但否定了 jQuery .position()。
变量 'forceRight' 找出 40 像素条两侧的差异。但是,由于菜单项的宽度不同,我需要强制执行此侧间隙。
var forceRight,
off_hover_left,
$el,
$calcuateForceDistance,
$magicLine_width = 40,
$mainNav = $("#main-navigation"),
$currentPosition = $(".current-menu-item"),
$currentPosition_width = ($currentPosition.outerWidth() - $magicLine_width);
$mainNav.append("<span id='magic-line'></span>");
var $magicLine = $("#magic-line");
$magicLine
.css("left", $(".current-menu-item").position().left)
.data("origLeft", $magicLine.position().left);
$("#main-navigation a").hover(function(){
// current element
$el = $(this),
// Calcuate Distance
$calcuateForceDistance = Math.floor( ( $el.outerWidth() - $magicLine_width ) / 2 );
forceRight = ( $el.position().left + $calcuateForceDistance );
off_hover_left = Math.floor( $currentPosition.position().left + ($currentPosition_width / 2) );
$magicLine.stop().animate({
left: forceRight
});
}, function() {
// On Hover Out - Return to DOM LOAD (.current-menu-item)
$magicLine.stop().animate({
// not selected outerwidth !!! sort out variables above!
left: off_hover_left
});
});
非常感谢!
【问题讨论】:
-
请提供小提琴
-
这里是一个例子 - codepen.io/Ne-Ne/pen/wglBL。你可以看到我的意思是关于在悬停/加载(.current-menu-item)上居中栏
标签: javascript jquery html position menuitem