aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/module/Select.jsx8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/module/Select.jsx b/src/module/Select.jsx
index b386d07..0b91ac5 100644
--- a/src/module/Select.jsx
+++ b/src/module/Select.jsx
@@ -3,6 +3,10 @@ import ReactDom from 'react-dom';
3import classnames from 'classnames'; 3import classnames from 'classnames';
4 4
5const scrollTo = (element, to, duration) => { 5const scrollTo = (element, to, duration) => {
6 const requestAnimationFrame = window.requestAnimationFrame ||
7 function requestAnimationFrameTimeout() {
8 return setTimeout(arguments[0], 10);
9 };
6 // jump to target if duration zero 10 // jump to target if duration zero
7 if (duration <= 0) { 11 if (duration <= 0) {
8 element.scrollTop = to; 12 element.scrollTop = to;
@@ -11,11 +15,11 @@ const scrollTo = (element, to, duration) => {
11 const difference = to - element.scrollTop; 15 const difference = to - element.scrollTop;
12 const perTick = difference / duration * 10; 16 const perTick = difference / duration * 10;
13 17
14 setTimeout(() => { 18 requestAnimationFrame(() => {
15 element.scrollTop = element.scrollTop + perTick; 19 element.scrollTop = element.scrollTop + perTick;
16 if (element.scrollTop === to) return; 20 if (element.scrollTop === to) return;
17 scrollTo(element, to, duration - 10); 21 scrollTo(element, to, duration - 10);
18 }, 10); 22 });
19}; 23};
20 24
21const Select = React.createClass({ 25const Select = React.createClass({