Web sitemde sayfamın ilgi alanımın kimliğine kaydırılmasını istiyorum. neden yerine bu kodusetTimeout'a çoklu komut nasıl ayarlanır
setTimeout(function(){
window.scrollTo(0, leapY);
}, timer*speed);
yazarsanız: İhtiyacım tam olarak ne
var $scope, $location;
var headerHeigh = 50;
angular.module('allApps').service('anchorSmoothScroll', function(){
this.scrollTo = function(eID) {
var startY = currentYPosition();
var stopY = elmYPosition(eID)-headerHeigh;
var distance = stopY > startY ? stopY - startY : startY - stopY;
if (distance < 100) {
scrollTo(0, stopY); return;
}
var speed = Math.round(distance/50);
if (speed >= 20) speed = 20;
var step = Math.round(distance/25);
var leapY = stopY > startY ? startY + step : startY - step;
var timer = 0;
if (stopY > startY) {
for (var i=startY; i<stopY; i+=step) {
setTimeout("window.scrollTo(0, "+leapY+")", timer*speed);
leapY += step; if (leapY > stopY) leapY = stopY; timer++;
} return;
}
for (var i=startY; i>stopY; i-=step) {
setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
leapY -= step; if (leapY < stopY) leapY = stopY; timer++;
}
function currentYPosition() {
// Firefox, Chrome, Opera, Safari
if (self.pageYOffset) return self.pageYOffset;
// Internet Explorer 6 - standards mode
if (document.documentElement && document.documentElement.scrollTop)
return document.documentElement.scrollTop;
// Internet Explorer 6, 7 and 8
if (document.body.scrollTop) return document.body.scrollTop;
return 0;
}
function elmYPosition(eID) {
var elm = document.getElementById(eID);
var y = elm.offsetTop;
var node = elm;
while (node.offsetParent && node.offsetParent != document.body) {
node = node.offsetParent;
y += node.offsetTop;
} return y;
}
};
});
angular.module('allApps').controller('menuCtrl', function($scope, $location, anchorSmoothScroll) {
$scope.gotoElement = function (eID){
$location.hash(eID);
anchorSmoothScroll.scrollTo(eID);
};
});
Benim sorum (Sadece orijinal bazı küçük düzenlemeler yapılmış) anlamına stackoverflow burada bu güzel kodunu buldum
"Kaydırma efekti" ni kaybediyorum?
Bunu yapmak istememin nedeni, kaydırma işlemi ile birlikte, kaydırma sırasında bir opaklığın değişmesi gibi bir efektin olmasını istiyorum, bu yüzden bunu setTimeout içine koymak istiyorum, birden fazla işlemle bir işlev olabilir.
sen * Hız 'de – gurvinder372
' zamanlayıcı artırmak gerekir? – Andy
Anlamıyorum. Eğer orijinal setTimeout ("window.scrollTo (0," + leapY + ")", zamanlayıcı * hız) gibi yazıyorsam, "çalışıyor. Farkı göremiyorum –