mirror of
https://github.com/koodiklinikka/koodiklinikka.fi.git
synced 2026-02-27 21:58:05 +00:00
implement faider functionality
This commit is contained in:
@@ -57,7 +57,7 @@ html
|
||||
a(href='https://github.com/koodiklinikka/koodiklinikka.fi')
|
||||
i.fa.fa-github
|
||||
|
||||
#fade.fader
|
||||
#fader
|
||||
|
||||
|
||||
script(src='js/bundle.js')
|
||||
|
||||
45
src/js/components/fader.jsx
Normal file
45
src/js/components/fader.jsx
Normal file
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
var React = require('React');
|
||||
|
||||
function clamp(min, max, value) {
|
||||
return Math.min(Math.max(value, min), max);
|
||||
}
|
||||
|
||||
module.exports = React.createClass({
|
||||
getDefaultProps() {
|
||||
return {
|
||||
threshold: 100
|
||||
};
|
||||
},
|
||||
getInitialState() {
|
||||
return {
|
||||
opacity: 0
|
||||
};
|
||||
},
|
||||
onScroll() {
|
||||
var scrollableDistance = document.body.scrollHeight - window.innerHeight,
|
||||
scrollTop = window.pageYOffset || document.documentElement.scrollTop,
|
||||
distanceToBottom = scrollableDistance - scrollTop;
|
||||
|
||||
this.setState({
|
||||
opacity: clamp(0, 1, distanceToBottom / this.props.threshold)
|
||||
});
|
||||
},
|
||||
componentDidMount() {
|
||||
window.addEventListener('scroll', this.onScroll);
|
||||
this.onScroll();
|
||||
},
|
||||
componentWillUnmount() {
|
||||
window.removeEventListener('scroll', this.onScroll);
|
||||
},
|
||||
render() {
|
||||
var style = {
|
||||
opacity: this.state.opacity
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="fader" style={style}></div>
|
||||
)
|
||||
}
|
||||
});
|
||||
@@ -7,3 +7,6 @@ React.render(
|
||||
require('./components/inviteForm')(),
|
||||
document.getElementById('invite-form'));
|
||||
|
||||
React.render(
|
||||
require('./components/fader')(),
|
||||
document.getElementById('fader'));
|
||||
|
||||
Reference in New Issue
Block a user