2017-02-28 25 views
6

W aplikacji reagowania, mam metodę wywoływaną, aby wyświetlić określony węzeł w następujący sposób.jak zrobić javascript scrollIntoView smooth?

scrollToQuestionNode(id) { 
     const element = document.getElementById(id); 
     element.scrollIntoView(false); 
} 

Przewiń dzieje się dobrze, ale akcja przewijania jest trochę nierówna. Jak mogę to zrobić płynnie? Nie widzę żadnych opcji, które mogę dać scrollIntoView dla tego samego.

+0

Jest teraz obsługiwane przez Chrome (od Chrome 61) –

Odpowiedz

11

To może pomóc.

Z dokumentacji mdn przewijaniaIntoView Można przekazać opcję zamiast wartości logicznej.

scrollIntoViewOptions Optional 
A Boolean or an object with the following options: 
{ 
    behavior: "auto" | "instant" | "smooth", 
    block: "start" | "end", 
} 

Można więc po prostu przekazać taki parametr.

scrollToQuestionNode(id) { 
     const element = document.getElementById(id); 
     element.scrollIntoView({block: 'end', behaviour: 'smooth'}); 
} 

referencyjny: https://developer.mozilla.org/en/docs/Web/API/Element/scrollIntoView

+2

Dzięki rozrzutny, ale ja już próbowałem. Jak widać w linku, o którym wspomniałeś, scrollIntoViewOptions nie jest obsługiwane w chrome (uważam to za dziwne, ale to jest rzeczywistość). –

+0

To dziwne. Czy używasz jquery? Jeśli tak, to jest to łatwe, inaczej może być konieczne inne podejście. – lavish

+0

To jest teraz obsługiwane przez Chrome (z Chrome 61) –

Powiązane problemy