Я пытаюсь реализовать scrollmagic в своем приложении Angular 2, но до сих пор я не увенчался успехом. Я просмотрел множество учебников, но они не смогли мне помочь. Я ищу кого-то, кто может просто объяснить мне, как я могу заставить Angular 2 работать с scrollmagic. Я пробовал это:
Я добавил это в свой компонент:
import { TweenLite, TimelineMax, TweenMax } from "gsap";
import { Component, NgZone, AfterViewInit} from '@angular/core';
declare let ScrollMagic: any;
@Component({
selector: "info-strip",
templateUrl: "./info-strip.component.html",
styleUrls: ["./info-strip.component.scss"],
animations: []
})
export class InfoStripComponent {
ctrl = new ScrollMagic.Controller();
constructor(private zone: NgZone) {}
ngAfterViewInit() {
new ScrollMagic.Scene({
offset: 200,
duration: 50
})
.setPin("#info_strip")
.addTo(this.ctrl);
}}
'
Если я напишу свой контроллер и сцену в журнал, я вижу, что они являются действительными элементами ScrollMagic, однако мой код ничего не делает, и он не показывает никаких ошибок. Я хочу просто создать липкий заголовок. Пожалуйста, кто-нибудь поможет получить scrollmagic для работы с угловыми 2
Я построил тестовую систему с Angular CLI + ScrollMagic и нашел одну проблему.
Угловой CLI: 1.5.2
Узел: 6.10.3
ОС: win32 x64
Угловое: 5.1.2
... анимации, общий, компилятор, компилятор-cli, ядро, формы
... http, language-service, platform-browser
... платформа-браузер-динамик, маршрутизатор@angular/cli: 1.5.2
@angular-devkit/build-optimizer: 0.0.36
@angular-devkit/core: 0.0.22
@angular-devkit/schematics: 0.0.42
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.2
@схематические/угловые: 0.1.11
@схемы/схемы: 0.0.11
машинопись: 2.4.2
webpack: 3.8.1
Заметьте, мой код ScrollMagic может оказаться не оптимальным.
app.component.ts
import { Component, AfterViewInit } from '@angular/core';
import { TweenMax, TimelineMax } from 'gsap';
import * as ScrollMagic from 'ScrollMagic';
import 'ScrollMagic/scrollmagic/minified/plugins/debug.addIndicators.min.js';
// import 'ScrollMagic/scrollmagic/minified/plugins/animation.gsap.min.js';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements AfterViewInit {
ctrl = new ScrollMagic.Controller();
ngAfterViewInit() {
new ScrollMagic.Scene({
triggerElement: '.menu-trigger',
duration: window.screen.height,
triggerHook: 0
})
.setPin('#menu', { pushFollowers: false })
.addTo(this.ctrl);
}
}
app.component.html
<nav class="nav">
<h1 class="header">Header</h1>
<div class="menu-trigger">
<ul id="menu">
<li><a href="">ScrollMagic</a></li>
<li><a href="">Will</a></li>
<li><a href="">Pin</a></li>
<li><a href="">This</a></li>
<li><a href="">Menu</a></li>
<li><a href="">Until</a></li>
<li><a href="">Second</a></li>
<li><a href="">Slide</a></li>
</ul>
</div>
</nav>
<section class="slide slide01">
<h1>Content</h1>
</section>
<section class="slide slide02">
<h1>More Content</h1>
</section>
app.component.css
body { font-family: Helvetica, Arial, sans-serif; color: rgb(70, 67, 67); }
html, body { margin: 0; height: 100%; }
.nav {
color: rgb(255, 255, 255);
}
.nav .header {
font-size: xx-large;
padding: 20px 10px 20px 10px;
color: rgb(70, 67, 67);
background-color: rgb(212, 215, 248);
}
#menu {
color: rgb(255, 255, 255);
background-color: rgb(0, 0, 0);
padding-left: 0;
list-style: none;
display: flex;
width: 100%;
justify-content: flex-start;
margin-bottom: 0;
margin-top: 0;
border-bottom: 1px solid rgb(203, 189, 189);
}
#menu li {
padding: 10px;
}
#menu li a {
text-decoration: none;
color: rgb(255, 255, 255);
font-weight: bold;
}
h1, p {
margin: 0; padding: 0;
}
.slide {
display: flex;
justify-content: center;
align-items: center;
color: #efefef;
height: 1200px;
}
.slide01 { background-color: rgb(168, 190, 246); }
.slide02 { background-color: rgb(4, 63, 164); }
Обратите внимание на строку с комментариями
// import 'ScrollMagic/scrollmagic/minified/plugins/animation.gsap.min.js';
Если мы попытаемся включить этот плагин, у webpack возникнет проблема с подключением его к gsap.
После ng build
,
ОШИБКА в. /node_modules/ScrollMagic/scrollmagic/minified/plugins/animation.gsap.min.js Модуль не найден: ошибка: не удается разрешить "TimelineMax" в...
Это сообщение tsconfig paths, которое не соблюдается 4 ноября 2017 года, дает разрешение, но оно включает исправление node_modules/@ngtools/webpack/src/paths-plugin.js
.
С поста,
FYI, для всех, кто нуждается в пред-1.2.6, решение, на которое я приземлился, использует новейшие Угловые /CLI/и т.д. и просто переписывая node_modules/@ngtools/webpack/src/paths-plugin.js с /paths-plugin.js. Он не очень изящный и может быть разорван будущим выпуском, но теперь выполняет свою работу без блокировки обновления до Angular 5.
Если вы не хотите взломать npm-installed @ngtools/webpack/src/paths-plugin.js, вот альтернатива.
Часть сообщения об ошибке сборки
путь \to\myProject\src\TweenMax.js не существует
поэтому мы можем (грубо) исправить это, скопировав исходные файлы ./src
папку ./src
.
См. Как подключить сторонние скрипты перед тем, как обслуживать/создавать приложение с помощью angular-cli, Cory Rylan показывает, как использовать скрипты npm в package.json для подключения к процессу сборки.
package.json
, оставив скрипт build
как есть, поэтому его можно запустить как обычно.npm run startbuild
всякий раз, когда вы делаете глобальную npm install
, или другую команду, которая может изменить файлы взрыва.package.json
{
"name": "myProject",
"version": "0.0.0",
"license": "MIT",
"scripts": {
...
"startbuild": "npm run prebuild && ng build",
"prebuild": "copyfiles -f node_modules/gsap/src/uncompressed/*.js src",
"build": "ng build",
...
},