2017-10-18 1 views
0

Ich habe ein Skript, das abhängig von der ausgewählten Box verschiedene Bereiche öffnet und schließt.Mittlere Ausrichtung des Ansichtsfensters mit Scroll-Effekt auf Abschnitt

brauche ich diese Abschnitte in der Mitte des Bildfensters sein einmal geklickt (mit einer glatten Animation wenn möglich)

Hier ist meine aktuelle Skript:

$(function() { 
    $('.box').each(function() { 
    var targetElement = $($(this).data('target')); 
    targetElement.slideUp() 
    $(this).click(function() { 
     if(targetElement.is(':visible')) { 
     targetElement.slideUp(); 
     adjustHeight(); 
     $("element").paroller(); 
     } else { 
     targetElement.slideDown() 
     targetElement.siblings('.section').slideUp() 
     adjustHeight(); 
     $("element").paroller(); 
     } 
    }) 
    }) 
}); 

Ich brauche ‚target‘ zentriert werden im Ansichtsfenster nach dem Öffnen.

Antwort

0

Ich benutze eine Funktion, die ich gefunden habe, um das Scrollen zu animieren, übergeben Sie es das Element, das Sie scrollen möchten und den Scroll-Offset, um zu scrollen.

function scrollTo (element, to, duration) { 
    var start = element.scrollTop, 
     change = to - start, 
     currentTime = 0, 
     increment = 20; 

    var animateScroll = function() { 
     currentTime += increment; 
     element.scrollTop = Math.easeInOutQuad(currentTime, start, change, duration); 
     if (currentTime < duration) { 
      setTimeout(animateScroll, increment); 
     } 
    }; 
    animateScroll(); 
}; 

var targetElement = $($(this).data('target')).offset().top; 
scrollTo(document.body, targetElement, 1000); 
+0

Gibt es keine Möglichkeit, dies innerhalb der Funktion, die ich bereits habe, zu haben und es durch die targetElement Variable ziehen zu lassen? –

+0

nehmen Sie die Funktion scrollTo und legen Sie sie außerhalb des Bereichs jquery ab, und diese zwei Zeilen werden in den Code eingefügt, an dem Sie die Aktion aufrufen möchten: 'var targetElement = $ ($ (this) .data ('target')).).oben; scrollTo (document.body, targetElement, 1000); ' –

Verwandte Themen