`; this.DOM.el.insertBefore(this.DOM.svg, this.DOM.nav); this.DOM.shape = this.DOM.svg.querySelector('path'); } updateFrame() { this.paths.initial = this.calculatePath('initial'); this.paths.final = this.calculatePath('final'); this.DOM.svg.setAttribute('viewbox',`0 0 ${this.rect.width} ${this.rect.height}`); this.DOM.shape.setAttribute('d', this.paths.initial); } calculatePath(path = 'initial') { if ( path === 'initial' ) { return `M 0,0 0,${this.rect.height} ${this.rect.width},${this.rect.height} ${this.rect.width},0 0,0 Z M 0,0 ${this.rect.width},0 ${this.rect.width},${this.rect.height} 0,${this.rect.height} Z`; } else { return { step1: `M 0,0 0,${this.rect.height} ${this.rect.width},${this.rect.height} ${this.rect.width},0 0,0 Z M ${this.frameSize},${this.frameSize} ${this.rect.width},0 ${this.rect.width},${this.rect.height} 0,${this.rect.height} Z`, step2: `M 0,0 0,${this.rect.height} ${this.rect.width},${this.rect.height} ${this.rect.width},0 0,0 Z M ${this.frameSize},${this.frameSize} ${this.rect.width-this.frameSize},${this.frameSize} ${this.rect.width},${this.rect.height} 0,${this.rect.height} Z`, step3: `M 0,0 0,${this.rect.height} ${this.rect.width},${this.rect.height} ${this.rect.width},0 0,0 Z M ${this.frameSize},${this.frameSize} ${this.rect.width-this.frameSize},${this.frameSize} ${this.rect.width-this.frameSize},${this.rect.height-this.frameSize} 0,${this.rect.height} Z`, step4: `M 0,0 0,${this.rect.height} ${this.rect.width},${this.rect.height} ${this.rect.width},0 0,0 Z M ${this.frameSize},${this.frameSize} ${this.rect.width-this.frameSize},${this.frameSize} ${this.rect.width-this.frameSize},${this.rect.height-this.frameSize} ${this.frameSize},${this.rect.height-this.frameSize} Z` } } } initEvents() { this.DOM.nextCtrl.addEventListener('click', () => this.navigate('next')); this.DOM.prevCtrl.addEventListener('click', () => this.navigate('prev')); window.addEventListener('resize', debounce(() => { this.rect = this.DOM.el.getBoundingClientRect(); this.updateFrame(); }, 20)); } navigate(dir = 'next') { if ( this.isAnimating ) return false; this.isAnimating = true; const animateShapeInTimeline = anime.timeline({ duration: this.settings.animation.shape.duration, easing: this.settings.animation.shape.easing.in }); animateShapeInTimeline .add({ targets: this.DOM.shape, d: this.paths.final.step1 }) .add({ targets: this.DOM.shape, d: this.paths.final.step2, offset: `-=${this.settings.animation.shape.duration*.5}` }) .add({ targets: this.DOM.shape, d: this.paths.final.step3, offset: `-=${this.settings.animation.shape.duration*.5}` }) .add({ targets: this.DOM.shape, d: this.paths.final.step4, offset: `-=${this.settings.animation.shape.duration*.5}` }); const animateSlides = () => { return new Promise((resolve, reject) => { const currentSlide = this.DOM.slides[this.current]; anime({ targets: currentSlide, duration: this.settings.animation.slides.duration, easing: this.settings.animation.slides.easing, translateX: dir === 'next' ? -1*this.rect.width : this.rect.width, complete: () => { currentSlide.classList.remove('slide--current'); resolve(); } }); this.current = dir === 'next' ? this.current < this.slidesTotal-1 ? this.current + 1 : 0 : this.current > 0 ? this.current - 1 : this.slidesTotal-1; const newSlide = this.DOM.slides[this.current]; newSlide.classList.add('slide--current'); anime({ targets: newSlide, duration: this.settings.animation.slides.duration, easing: this.settings.animation.slides.easing, translateX: [dir === 'next' ? this.rect.width : -1*this.rect.width,0] }); const newSlideImg = newSlide.querySelector('#id_e8b84f0653b68a1645cc4fbf .slide__img'); anime.remove(newSlideImg); anime({ targets: newSlideImg, duration: this.settings.animation.slides.duration*4, easing: this.settings.animation.slides.easing, translateX: [dir === 'next' ? 200 : -200, 0] }); anime({ targets: [newSlide.querySelector('#id_e8b84f0653b68a1645cc4fbf .slide__title'), newSlide.querySelector('#id_e8b84f0653b68a1645cc4fbf .slide__desc'), newSlide.querySelector('#id_e8b84f0653b68a1645cc4fbf .slide__link')], duration: this.settings.animation.slides.duration*2, easing: this.settings.animation.slides.easing, delay: (t,i) => i*100+100, translateX: [dir === 'next' ? 300 : -300,0], opacity: [0,1] }); }); }; const animateShapeOut = () => { const animateShapeOutTimeline = anime.timeline({ duration: this.settings.animation.shape.duration, easing: this.settings.animation.shape.easing.out }); animateShapeOutTimeline .add({ targets: this.DOM.shape, d: this.paths.final.step3 }) .add({ targets: this.DOM.shape, d: this.paths.final.step2, offset: `-=${this.settings.animation.shape.duration*.5}` }) .add({ targets: this.DOM.shape, d: this.paths.final.step1, offset: `-=${this.settings.animation.shape.duration*.5}` }) .add({ targets: this.DOM.shape, d: this.paths.initial, offset: `-=${this.settings.animation.shape.duration*.5}`, complete: () => this.isAnimating = false }); } animateShapeInTimeline.finished.then(animateSlides).then(animateShapeOut); } }; new Slideshow(document.querySelector('#id_e8b84f0653b68a1645cc4fbf .slideshow')); imagesLoaded('#id_e8b84f0653b68a1645cc4fbf .slide__img', { background: true }, () => document.body.classList.remove('b_loading')); });
2013年03月21日
上海巡洋艦品牌成立,并于同年4月份圓滿完成260人首批體驗式培訓項目.
2014年5月20日
上海巡洋艦培訓二部組建完成,并首創華東地區300人次的《魔鬼訓練》課程體系.
2015年07月19日
上海巡洋艦全線進入中高端品牌體系,年度業績提到達到預定的50%快速增長目標.
2016年08月08日
第三方的戰略合作平臺搭建初步完成,4大核心的業務體系布局和全面的升級完成.
2017年10月28日
增效式會務品牌部門成立,標志著增效式會務已全線進入跨越式的加速發展階段.
巡洋艦是上海兢睿企業管理有限公司的第1子品牌。上海兢睿企業管理有限公司是一家致力于解決企業發展中團隊建設問題的綜合品牌服務商。一直秉承“用團隊塑團隊,用價值創造價值”核心理念經營企業,為客戶提供落地系統性的一站式團隊建設解決方案。現已為眾多500強企業單位、民營企業、外資企業以及多家機關院校提供了最全面專業及科學規范的企業體驗式內培訓、體驗式外訓、軍事化特訓、深度式體驗。用專業實力已贏得逾2000多家客戶的高度評價和認可!
山东十一选五开奖直播