mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 19:21:34 +08:00
57 lines
1.3 KiB
TypeScript
57 lines
1.3 KiB
TypeScript
import {ElementRef, Component, Directive} from 'angular2/angular2';
|
|
import {FormBuilder, Control, ControlGroup, Validators} from 'angular2/angular2';
|
|
|
|
import {App, Modal, Animation, Content} from 'ionic/ionic';
|
|
import {NavController, NavParams, IonicView} from 'ionic/ionic';
|
|
import {dom} from 'ionic/util';
|
|
|
|
|
|
@Directive({
|
|
selector: '[parallax]',
|
|
inputs: [
|
|
'parallax',
|
|
'counter'
|
|
]
|
|
})
|
|
export class ParallaxEffect {
|
|
constructor(
|
|
content: Content,
|
|
elementRef: ElementRef
|
|
) {
|
|
this.ele = elementRef.nativeElement;
|
|
this.scroller = this.ele.querySelector('scroll-content');
|
|
this.scroller.addEventListener('scroll', (e) => {
|
|
//this.counter.innerHTML = e.target.scrollTop;
|
|
dom.raf(() => {
|
|
this.parallax.style[dom.CSS.transform] = 'translateY(' + -Math.min(300, (e.target.scrollTop / 4)) + 'px) scale(1)';
|
|
|
|
if(e.target.scrollTop < 0) {
|
|
this.parallax.style[dom.CSS.transform] = 'translateY(0) scale(' + (1 + Math.abs(e.target.scrollTop / 500)) + ')';
|
|
}
|
|
})
|
|
|
|
});
|
|
|
|
setTimeout(() => {
|
|
console.log('Watching', this.target, this.counter);
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
@App({
|
|
templateUrl: 'main.html',
|
|
directives: [ParallaxEffect]
|
|
})
|
|
class IonicApp {
|
|
constructor() {
|
|
|
|
this.items = [];
|
|
for(let i = 0; i < 100; i++) {
|
|
this.items.push({
|
|
title: 'Item ' + i
|
|
})
|
|
}
|
|
}
|
|
}
|