ant-design/scripts/home.js

137 lines
6.3 KiB
JavaScript
Raw Normal View History

2016-01-06 15:38:36 +08:00
const React = require('react');
const ReactDOM = require('react-dom');
2016-01-07 16:52:27 +08:00
import { QueueAnim, Icon, Button } from '../index';
import ScrollOverPack from 'rc-scroll-anim/lib/ScrollOverPack';
2016-01-19 14:18:57 +08:00
import ScrollLink from 'rc-scroll-anim/lib/ScrollLink';
import ScrollElement from 'rc-scroll-anim/lib/ScrollElement';
2016-01-07 16:52:27 +08:00
import TweenOne from 'rc-tween-one';
2016-01-07 16:56:45 +08:00
2016-01-19 14:25:43 +08:00
module.exports = function() {
InstantClickChangeFns.push(function() {
2016-01-14 02:37:52 +08:00
if (!document.getElementById('banner')) {
return;
}
// 导航处理
function scrollNavEvent() {
const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
const clientHeight = document.documentElement.clientHeight;
if (scrollTop >= clientHeight) {
header.className = header.className.indexOf('home-nav-bottom') >= 0 ? header.className : header.className + ' home-nav-bottom';
} else {
header.className = header.className.replace(/home-nav-bottom/ig, '');
}
}
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
$(window).off('scroll.scrollNavEvent');
$(window).on('scroll.scrollNavEvent', scrollNavEvent);
2016-01-07 16:52:27 +08:00
2016-01-19 14:18:57 +08:00
// list point
ReactDOM.render((
<div>
<ScrollLink className="list-point" location="banner" showHeightActive="50%"/>
<ScrollLink className="list-point" location="page1" showHeightActive="50%"/>
<ScrollLink className="list-point" location="page2" showHeightActive="50%"/>
<ScrollLink className="list-point" location="page3" showHeightActive="50%"/>
<ScrollLink className="list-point" location="page4" showHeightActive="50%"/>
</div>
), document.getElementById('list'));
// banner
2016-01-14 02:37:52 +08:00
class Banner extends React.Component {
constructor() {
super(...arguments);
}
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
typeFunc(a) {
if (a.key === 'line') {
return 'right';
} else if (a.key === 'button') {
return 'bottom';
}
return 'left';
}
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
render() {
return (
2016-01-19 14:18:57 +08:00
<ScrollElement scrollName="banner" style={{height: '100%'}}>
2016-01-14 02:37:52 +08:00
<QueueAnim className="banner-text-wrapper" type={this.typeFunc} delay={300}>
<h2 key="h2">ANT <p>DESIGN</p></h2>
<p key="content">一个 UI 设计语言</p>
<span className="line" key="line"/>
<a key="button" href="/docs/spec/introduce"><Icon type="smile-circle"/>开始探索</a>
</QueueAnim>
<TweenOne className='down' vars={[{opacity: 1},{y: 10, duration: 800, yoyo: true, repeat: -1}]}>
<Icon type="down"/>
</TweenOne>
2016-01-19 14:18:57 +08:00
</ScrollElement>
2016-01-14 02:37:52 +08:00
)
}
}
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
ReactDOM.render(<Banner />, document.getElementById('banner'));
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
// page1
ReactDOM.render((
2016-01-19 14:18:57 +08:00
<ScrollOverPack scrollName="page1" className="content-wrapper" playScale={0.4}>
2016-01-14 02:37:52 +08:00
<TweenOne key="image" className="image1 image-wrapper" vars={{x: 0, opacity: 1, duration: 550}}
2016-01-19 11:12:40 +08:00
style={{transform: 'translateX(-100px)', opacity: 0}} scrollHideProps={{type: 'reverse'}}/>
<QueueAnim className="text-wrapper" delay={300} key="text" duration={550} leaveReverse
scrollHideProps={{child: null}}>
2016-01-14 02:37:52 +08:00
<h2 key="h2">最佳实践</h2>
<p key="p" style={{maxWidth: 310}}>近一年的中后台设计实践积累了大量的优秀案例</p>
2016-01-19 11:12:40 +08:00
<div key="button"><Button type="primary" size="large"
onClick={()=>{window.location.href='/docs/practice/cases'}}>了解更多<Icon
2016-01-14 02:37:52 +08:00
type="right"/></Button></div>
</QueueAnim>
</ScrollOverPack>
), document.getElementById('page1'));
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
//page2
ReactDOM.render((
2016-01-19 14:18:57 +08:00
<ScrollOverPack scrollName="page2" className="content-wrapper" playScale={0.4}>
2016-01-19 11:12:40 +08:00
<QueueAnim className="text-wrapper left-text" delay={300} key="text" duration={550} type='bottom' leaveReverse
scrollHideProps={{child: null}}>
2016-01-14 02:37:52 +08:00
<h2 key="h2">设计模式</h2>
<p key="p" style={{maxWidth: 260}}>总结中后台设计中反复出现的问题并提供相应的解决方案</p>
<div key="button"><Button type="primary" size="large"
2016-01-19 11:12:40 +08:00
onClick={()=>{window.location.href='/docs/pattern/navigation'}}>了解更多<Icon
type="right"/></Button>
2016-01-14 02:37:52 +08:00
</div>
</QueueAnim>
<TweenOne key="image" className="image2 image-wrapper" vars={{x: 0, opacity: 1, delay: 300, duration: 550}}
2016-01-19 11:12:40 +08:00
style={{transform: 'translateX(100px)', opacity: 0}} scrollHideProps={{type: 'reverse'}}/>
2016-01-14 02:37:52 +08:00
</ScrollOverPack>
), document.getElementById('page2'));
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
// page3
ReactDOM.render((
2016-01-19 14:18:57 +08:00
<ScrollOverPack scrollName="page3" className="content-wrapper" playScale={0.4}>
2016-01-14 02:37:52 +08:00
<TweenOne key="image" className="image3 image-wrapper" vars={{x: 0, opacity: 1, duration: 550}}
2016-01-19 11:12:40 +08:00
style={{transform: 'translateX(-100px)', opacity: 0}} scrollHideProps={{type: 'reverse'}}/>
<QueueAnim className="text-wrapper" delay={300} key="text" duration={550} leaveReverse style={{top: '40%'}}
scrollHideProps={{child: null}}>
2016-01-14 02:37:52 +08:00
<h2 key="h2">丰富的基础组件</h2>
<p key="p" style={{maxWidth: 280}}>丰富灵活实用的基础组件为业务产品提供强有力的设计支持</p>
<div key="button"><Button type="primary" size="large"
onClick={()=>{window.location.href='/docs/react/introduce'}}>了解更多<Icon
type="right"/></Button></div>
</QueueAnim>
</ScrollOverPack>
), document.getElementById('page3'));
2016-01-07 16:52:27 +08:00
2016-01-14 02:37:52 +08:00
// page4
ReactDOM.render((
2016-01-19 14:18:57 +08:00
<ScrollOverPack scrollName="page4" className="content-wrapper" playScale={0.4}>
2016-01-19 11:12:40 +08:00
<QueueAnim className="text-wrapper-bottom" delay={300} key="text" duration={550} leaveReverse type="bottom"
scrollHideProps={{child: null}}>
2016-01-14 02:37:52 +08:00
<h2 key="h2">微小·确定·幸福</h2>
<p key="p">这是一套致力于提升用户设计者使用体验的中后台设计语言</p>
</QueueAnim>
<TweenOne key="image" className="image4 bottom-wrapper" vars={{y: 0, opacity: 1, duration: 550, delay: 550}}
2016-01-19 11:12:40 +08:00
style={{transform: 'translateY(50px)', opacity: 0}} scrollHideProps={{type: 'reverse'}}/>
2016-01-14 02:37:52 +08:00
</ScrollOverPack>
), document.getElementById('page4'));
});
}