나는 previous topic에서 같은 질문을했지만 다른 사람이 이것을 위해 다른 것을 열어야한다고 말했습니다. 그래서 여기에 간다 :이 코드 블록에서 어떻게 hoverIntent를 시뮬레이트 할 수 있습니까?
나는 네비게이션 뒤에 리본을 움직이고 있는데, 문제는 시작 위치로 돌아가서 다음 요소로 돌아가는 대신에 애니메이션 된 요소를 이전 위치에 유지하고 싶다는 것이다. hoverIntent를 사용하지 않고이 작업을 수행 할 수있었습니다. 이제 리본이 탐색에서 매 움직임을 감지합니다. 이 문제를 어떻게 방지 할 수 있습니까?
내가 틀렸지 만 delay() 및 setTimeout()이 정지 지점에 관계없이 마지막 애니메이션을 실행하므로이 시점에서 이해가되지 않으면 수정하십시오. 마우스가 지나가고있는 경우 마우스 센터가 작동하지 않게하려면 어떻게합니까? 아마도 마우스가 300 밀리 초 동안 호버링 블록에서 안정적인 것처럼 mouseover에 if 절이 있을까요?
참고 : noconflict 스크립트를 실행 중이므로 j = $입니다.
function rbHover(){
j("#nav li a")
.on('mouseenter', function() {
var l = j(this).parent().position().left;
var w = j(this).parent().width();
var rbw = Math.round(w/4);
var rbh = Math.round(w/16);
j("#ribbon").stop('ribbon', true, true).animate({
"left" : l,
"width" : w }, {
duration: 600,
easing: 'swing',
queue: 'ribbon'
}).dequeue('ribbon');
j(".rib-left").stop('rib-left', true, true).animate({
"border-right-width": rbw,
"border-left-width": rbw,
"border-top-width": rbh,
"border-bottom-width": rbh,
"bottom": "-" + (2*rbh) + "px"}, {
duration:600,
easing: 'linear',
queue: 'rib-left'
}).dequeue('rib-left');
j(".rib-right").stop('rib-right', true, true).animate({
"border-right-width": rbw,
"border-left-width": rbw,
"border-top-width": rbh,
"border-bottom-width": rbh,
"bottom": "-" + (2*rbh) + "px"}, {
duration:600,
easing: 'linear',
queue: 'rib-right'
}).dequeue('rib-right');
})
.on('mouseleave', function() {
var l = j(".active").parent().position().left;
var w = j(".active").parent().width();
var rbw = Math.round(w/4);
var rbh = Math.round(w/16);
j("#ribbon").stop('ribbon', true).delay(300, 'ribbon').animate({
"left" : l,
"width" : w }, {
duration: 600,
easing: 'swing',
queue: 'ribbon'
}).dequeue('ribbon');
j(".rib-left").stop('rib-left', true, true).delay(300, 'rib-left').animate({
"border-right-width": rbw,
"border-left-width": rbw,
"border-top-width": rbh,
"border-bottom-width": rbh,
"bottom": "-" + (2*rbh) + "px"}, {
duration:600,
easing: 'linear',
queue: 'rib-left'
}).dequeue('rib-left');
j(".rib-right").stop('rib-right', true, true).delay(300, 'rib-right').animate({
"border-right-width": rbw,
"border-left-width": rbw,
"border-top-width": rbh,
"border-bottom-width": rbh,
"bottom": "-" + (2*rbh) + "px"}, {
duration:600,
easing: 'linear',
queue: 'rib-right'
}).dequeue('rib-right');
});
}
당신은 나의 웹 사이트를 찾을 수 있습니다 : 그것은 대기 있도록 www.egegorgulu.com
지금 해보겠습니다. hoverInterval을 변수로 정의해야하는 이유가 궁금합니다. setTimeout에 300을 쓸 수는 없습니까? – Ege
예, 문제가 아닙니다. 나중에 변경하거나 한 곳 이상에서 사용할 수 있으므로 변수를 사용하는 경향이 있습니다. 그것은 "미래 교정"코드의 제 방식입니다. – Archer
필자는 코드에 결함이 있음을 발견했습니다. 기능의 범위를 벗어나지 만 여전히 'this'에 의존하고 있습니다. 나는 고치고보고 할 것이다. – Archer