var sse1 = function() {
상기 var currentSelected;
추가 및 currentSelected
현재 선택된 목록의 인덱스를 밀어 버린다
for (var i = 0; i < a.length; i++) {
if (url.indexOf(a[i].href.toLowerCase()) != -1 && a[i].href.length > nLength) {
k = i;
nLength = a[i].href.length;
}
}
아래 블록 currentSelected=k;
추가. |
그래서 customHandleMenu
기능
var navigations=[
/* Nav 1 style */
{floatColor: '#0f0',
borderColor: '#0f0'},
/* Nav 2 style */
{floatColor: '#ee0',
borderColor: '#ee0'},
/* Nav 3 style */
{floatColor: '#05f',
borderColor: '#05f'},
];
function customHandleMenu() {
// get nav selector
var nav = $('#sses1 > ul');
// get float line selector
var floatLine = $('.highlight'); // .hightlight must exist at this point
// get colors for the current page
var defaultBGcolor = navigations[currentSelected]["borderColor"];
var defaultBorderColor = navigations[currentSelected]["borderColor"];
var defaultNavBorderColor = navigations[currentSelected]["borderColor"];
// change background-color and border-color on mouseenter event
$('.nav-item-1').on({
mouseenter: function() {
setColors({
floatColor: navigations[0]["floatColor"],
borderColor: navigations[0]["borderColor"]
});
}
});
$('.nav-item-2').on({
mouseenter: function() {
setColors({
floatColor: navigations[1]["floatColor"],
borderColor: navigations[1]["borderColor"]
});
}
});
$('.nav-item-3').on({
mouseenter: function() {
setColors({
floatColor: navigations[2]["floatColor"],
borderColor: navigations[2]["borderColor"]
});
}
});
/*
...
*/
// put back default colors on the mouseleave event
$('#sses1 > ul > li').on({
mouseleave: function() {
setColors({floatColor:defaultBGcolor, borderColor:defaultNavBorderColor});
}
});
setColors({floatColor:defaultBGcolor, borderColor:defaultNavBorderColor});
function setColors(args) {
if (typeof args.floatColor != "undefined") {
floatLine.css('background-color', args.floatColor);
}
if (typeof args.borderColor != "undefined") {
floatLine.css('border-color', args.borderColor);
nav.css('border-bottom-color', args.borderColor);
}
}
}
Live demo을에서 사용 Demo source
그냥
//slip.style.left = items[k].offsetLeft + "px";
sse1.move(items[k]); //comment out this line and uncomment the line above to disable initial animation
생성하는 코드 내부에 주석의 지시에 따라, 온로드 애니메이션에서 플로트 라인을 방지하기 위해 : 또한
slip.style.left = items[k].offsetLeft + "px";
// sse1.move(items[k]); comment out this line and uncomment the line above to disable initial animation.
을, 당신은 선택적으로 추가 할 수 있습니다
$('#sses1 li, #sses1 a').on('click',function(){
$('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseout");
$('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseleave");
$('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseenter");
$('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mousein");
$('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseover");
sse1={};
});
customhandlemenu
함수의 경우 페이지로드가 준비되는 동안 원하지 않는 애니메이션을 완전히 비활성화하십시오.
Live demo | Demo source
안녕하세요 Extramonster, 도와 주셔서 대단히 감사합니다. 메뉴 항목 1이 선택되면 마우스가 메뉴 3으로 이동하여 메뉴 3을 클릭하면 잠깐 동안 플로트 선이 메뉴 1로 돌아간 다음 다시 메뉴 3으로 이동한다는 것을 알 수 있습니다. 이 여분의 거래를 피할 수있는 방법이 있습니까? 한 메뉴 항목을 클릭하고 클릭 할 때 플로트 선은 이전 메뉴로 돌아가서 선택한 메뉴 항목으로 다시 돌아가는 대신 선택한 메뉴 항목 아래에 머물러 있습니다. 감사합니다. – grumpypanda
요구 사항을 충족시키기 위해 제 대답이 업데이트되었습니다. – extramaster
Extramonster에 감사드립니다. 자바 스크립트 전설입니다. 내가 이해하기 전에 네가 한 일을 자세히 살펴 봐야 할 것이다. 마지막 질문 하나, 클릭 후 플로트 라인을 애니메이션으로 유지할 수 있습니까 (왼쪽 및 오른쪽으로 한 번 이동 한 다음 그대로 유지)? 현재이 메뉴는 각 메뉴를 클릭 한 후에도 그대로 유지됩니다. 나는 어떻게 그것을 성취합니까? 고마워요! – grumpypanda