- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 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);
}}
`
如果我将我的 Controller 和场景写入日志,我可以看到它们是有效的 ScrollMagic 项目,但是我的代码似乎没有做任何事情,也没有显示任何错误。我只想创建一个粘性标题。请任何人帮助让 scrollmagic 与 angular 2 一起工作
最佳答案
我用Angular CLI + ScrollMagic搭建了一个测试系统,发现了一个问题。
Angular CLI: 1.5.2
Node: 6.10.3
OS: win32 x64
Angular: 5.1.2
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router@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
@schematics/angular: 0.1.11
@schematics/schematics: 0.0.11
typescript: 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构建
之后,
ERROR in ./node_modules/ScrollMagic/scrollmagic/minified/plugins/animation.gsap.min.js Module not found: Error: Can't resolve 'TimelineMax' in ...
此帖tsconfig paths not respected 2017 年 11 月 4 日给出了一个解决方案,但它涉及修补 node_modules/@ngtools/webpack/src/paths-plugin.js
。
来自帖子,
FYI, for anyone else needing the pre-1.2.6 behavior, the solution I landed on is using the latest Angular/CLI/etc. and just overwriting node_modules/@ngtools/webpack/src/paths-plugin.js with https://github.com/buu700/ngtools-webpack-tmp/blob/master/src/paths-plugin.js. It's not very elegant, and could be broken by a future release, but gets the job done for now without blocking updating to Angular 5.
如果您不喜欢破解 npm 安装的@ngtools/webpack/src/paths-plugin.js,这里有一个替代方案。
部分构建错误信息为
path\to\myProject\src\TweenMax.js doesn't exist
所以我们可以(粗略地)通过将 gasp 源文件复制到 ./src
文件夹来修复它。
参见 How to hook 3rd party scripts before serving / building an app with angular-cli ,Cory Rylan 展示了如何使用 package.json 中的 npm 脚本来 Hook 构建过程。
package.json
,将 build
脚本保持原样,以便它可以正常运行。 npm install
或其他可能更改 gasp 文件的命令时,运行命令 npm run startbuild
。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",
...
},
关于javascript - Angular 2 和 Scrollmagic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48028552/
我对 scrollmagic 很陌生,我希望在整个页面中多次使用单个类来在它进入 View 时进行动画处理。 这可能吗? see pen 欢迎任何指点。 $(function() { cont
我想做的就是在 div 第一次滚动到 View 中时向其添加一个类,然后将其保留在那里。 (所以,我不想切换它 - 只需触发一次)。我有一个基于向父 div 添加类的动画,即使我指定了一个方向,当我在
我正在使用 ScrollMagic 来获取一些滚动动画。问题是我需要使用偏移量,以便动画在滚动的某个点触发,但这完全取决于窗口高度。 所以在我提供的示例中 https://jsfiddle.net/5
我以前使用过 superscrollorama 并开始使用scrollmagic,但我无法设法让一些 div 正确地设置动画。前 2 个 div 很好,但最后两个,一旦我向下滚动,就不会动画。我还想向
我正在尝试固定 ul全尺寸屏幕上的侧边栏,然后取消该图钉并将其更改为父图 nav ul的在半尺寸屏幕上。所以基本上从一个触发器、目标和偏移开始>当屏幕尺寸改变时取消它们>(并)用新的设置固定一个新的选
我正在尝试将图片暂停一段时间。滚动一点后,图片(第 1 部分)应该淡出并显示下面的图片。再滚动一段时间后,两者都应该滚动出来。 我正在使用http://janpaepke.github.io/Scro
我想使用scrollmagic 在我的页面上添加效果。我的滚动场景已定义并且可以工作。现在我希望页面在场景未完成时停止滚动。 我尝试将场景放入带有 overflow-y:scroll; 的容器中,但这
我正在尝试使用 ScrollMagic 的这个特定动画 http://janpaepke.github.io/ScrollMagic/examples/advanced/parallax_sectio
我在需要显示进度条的站点上使用 scrollMagic 库。该栏将显示用户在页面上的位置。进度条的宽度会随着用户向上或向下滚动而改变。我似乎无法让它与 scrollMagic 库一起使用。这是我在其他
我是 ScrollMagic 的新手,所以不确定我是否忽略了一些明显的东西。 我设置了一个 codepen这说明了我正在努力实现的目标,以及一个 alternative version 几乎做我想做的
我是第一次使用 ScrollMagic,据我了解如何根据起始元素和持续时间触发我的动画 是否可以设置结束触发器而不是持续时间? var smcontroller = new ScrollMagic.C
有这样的事情。 https://jsfiddle.net/j6u6wp7x/1/ var scene; var controller; $(document).ready(function() {
我正在试验视差和滚动魔法。在 scrollmagic demo 的视差示例中我正在尝试在第一个视差部分中制作动画内容。 这是 a fiddle of my experiment . 我无法让 #box
在我的网站上,ScrollMagic 场景触发器 Hook 位置存储在一个数组中 slideOffsets = []这是在使用初始化时填充的 var scene; for (var i=0; i元素滚
我正在使用 ScrollMagic 在这之后进行视差部分滚动 tutorial .我让它在视觉上工作,但现在使用鼠标滚轮或触控板时页面已停止滚动。它滚动的唯一方法是拖动右侧的滚动条。 main.c
所以我在构建垂直视差滚动网站时遇到了问题。 目前我正在使用 ScrollMagic 来创建视差部分,并且效果很好。当我尝试将内容放在上面时,问题就来了。对于我的情况,我正在使用 Bootstrap 的
我有一个Scrollmagic问题:我正在使用triggerElement,但它说它在页面顶部进入triggerElement,但triggerElement却在页面中间。这是我的 ScrollMag
我在使用 scrollmagic 时遇到问题,因为我试图在 scrollmagic 中创建自然部分删除的演示,但我遇到了上述问题。看起来我在 querySelector 中出错了,但我不知道我在这里做
我正在使用 ScrollMagic 插件,发现 here 。我在尝试跨多个屏幕尺寸固定对象时遇到问题。问题是我在引脚的“持续时间”属性中进行硬编码,但持续时间设置为像素。由于像素根据您使用的设备而不同
伙计们,我正在使用 scrollmagic 来实现其视差部分删除视差效果。我一直在完全按照发现的方式关注演示 here而且我尝试的任何事情似乎都没有用。这让我发疯我已经在这里待了几个小时了。我在这里遗
我是一名优秀的程序员,十分优秀!