居中元素使用jQuery位置+变量
Centering Element using jQuery Position + Variable
我有下面的代码,它是从(CSS-Tricks Link)修改的。它工作得很好,但是我的网站的魔法线(导航栏下的浮动元素)是40像素宽。
我想永久居中对齐(无论它是否处于悬停状态),目前它在元素的左侧对齐。因为它是使用jQuery .position()从左计算,我所有的努力添加'forceRight',但否定jQuery .position()。
变量'forceRight',查找40px栏两侧的差异。但是,我需要强制执行这个侧间隙,因为菜单项的宽度不同。
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
});
});
多谢!
我已经修复了代码中的错误,我还添加了一个文档,准备让代码在浏览器呈现上运行。当代码加载时,我还创建了一个延迟,然后添加了一个类来消除故障(在0 ->所需轴值之间的左侧动画)。
在这种情况下,我使用不透明度0,作为默认值。1、on . addclass ('found').
var forceRight,
$el,
$calcuateForceDistance,
$magicLine_width = 40,
$mainNav = $("#main-navigation"),
$currentPosition = $(".current-menu-item"),
$currentPosition_width = ($currentPosition.outerWidth() - $magicLine_width),
$off_hover_left = Math.floor( $currentPosition.position().left + ($currentPosition_width / 2) );
// Create HTML ELEMENT
$mainNav.append("<span id='magic-line'></span>");
// Target -> Variable
var $magicLine = $("#magic-line");
// Apply attr's
$magicLine.css("left", $(".current-menu-item").position().left);
$(document).ready(function(){
// Enforce Code On Load
$magicLine.stop().animate({
// not selected outerwidth !!! sort out variables above!
left: $off_hover_left
}).promise().done(function(){
// Once Positioned - Then add class (changes opacity) !
$(this).addClass('found');
});
$("#main-navigation a").hover(function(){
// current element
$el = $(this),
// Calcuate Distance
$calcuateForceDistance = Math.floor( ( $el.outerWidth() - $magicLine_width ) / 2 );
forceRight = ( $el.position().left + $calcuateForceDistance );
$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
});
});
});
我希望这能帮助到别人,而不仅仅是我!
在你的javascript中,你只设置你的#magic-line
的左侧位置。你还需要设置线条的宽度。下面代码中的示例(只是要修改的行):
// On the initialization
$magicLine
.css({
"left": $(".current-menu-item").position().left,
"width" : $(".current-menu-item").outerWidth()
});
// On modification
$magicLine.stop().animate({
left: leftPos,
width: $el.outerWidth()
});
这应该能解决问题。
相关文章:
- 将位置变量从Javascript传递到PHP函数
- 如何在字符串中的特定位置插入变量
- javascript 中的全局变量来获取地理位置
- 使用变量的位置值向HERE javascript api添加一个航路点
- Javascript i(index,iterator):如果用作变量,它将始终被解释为索引位置
- 将PHP变量传递给javascript,以显示IP在谷歌地图上的位置
- 将 JavaScript 与 GWT 结合使用来获取用户位置,但变量不会被传递
- 我的变量保存在 URL/位置中,如何从另一个页面读取它
- 传递 PHP 变量 JavaScript 窗口位置
- 将 PHP 变量发送到 JavaScript.<脚本>标记的位置
- 画布的奇怪行为 上下文变量定义位置导致选项卡处于非活动状态时画布呈现冻结
- 用于更改背景位置的动态变量
- Javascript多次搜索新的位置变量
- 在单独文件夹/位置中的.js文件之间共享变量
- 咖啡脚本变量声明放在错误的位置
- 全局变量存储在 Node.JS 中的什么位置?节点中是否有类似窗口的对象
- 如何将地理位置变量从客户端传递到服务器端
- Javascript位置变量更改网页地址
- 居中元素使用jQuery位置+变量
- Backbone Js-设置地理位置变量[未定义变量]