我正在實施這個「魔線」代碼到我的導航菜單中,但我似乎在添加子菜單時遇到了麻煩。當您將鼠標懸停在任何子菜單項上時,魔術線將一直拍到頁面的左側。我希望它留在子菜單下的菜單項上。魔線CSS/Javascript代碼 - 添加子導航
您可以查看我的網站在這裏:http://www.christmaslightsinstallation.ca/
原來的腳本(不含子NAV):http://css-tricks.com/examples/MagicLine/
(我試過這樣的小提琴,但因爲它是在WordPress它沒有翻譯得非常好)
我的JavaScript如下:
$(function() {
var $el, leftPos, newWidth,
$mainNav = $("#menu-main-menu");
$testing = $(".menu-header");
$testing.append("<span id='magic-line'></span>");
var $magicLine = $("#magic-line");
$magicLine
.width($(".current_page_item").width())
.css("left", $(".current_page_item a").position().left)
.data("origLeft", $magicLine.position().left)
.data("origWidth", $magicLine.width());
$("#menu-main-menu li a").hover(function() {
$el = $(this);
leftPos = $el.position().left;
newWidth = $el.parent().width();
$magicLine.stop().animate({
left: leftPos,
width: newWidth
});
}, function() {
$magicLine.stop().animate({
left: $magicLine.data("origLeft"),
width: $magicLine.data("origWidth")
});
});
});
我嘗試使用「#menu-main-menu li li a」創建第二個懸停功能,並嘗試使用「preventdefault();」事件。這只是造成了很多錯誤。
我對JavaScript相當陌生,所以限於我能想到/知道該怎麼做的事情,爲此嘗試修復。
謝謝@Coby大多數情況下工作。現在唯一的情況是,當你將鼠標懸停在某些東西上時,魔術線佔據了導航欄的整個寬度,而不僅僅是寬度。我可以手動輸入寬度,但有沒有一種動態的方式來做到這一點? –
請參閱我更新的寬度修復答案的第2部分。 – Coby
非常感謝!這工作像一個魅力。 –