javascript - 使用 ScrollMagic 同步 Sprite 和滚动

标签 javascript css scroll sprite scrollmagic

溢出社区, 我一直在寻找可通过滚动播放的动画,然后我找到了

This perfect example

我想在缺乏 js 和 js 库知识的情况下做出类似的东西。 但即使复制并粘贴所有元素,它仍然不起作用。

// initialise ScrollMagic controller
var controller = new ScrollMagic.Controller();

// create Tween
var tween = TweenMax.to("#js-animation", 1.0, {
	backgroundPosition: "100% 0",
	ease: SteppedEase.config(480)
})

// build scene
var scene = new ScrollMagic.Scene({duration: 15000})
	.triggerHook("onCenter")
	.setPin("#js-pinned")
	.setTween(tween)
	.addTo(controller);
body {
  padding: 20px;
  text-align: center;
}

.container {
  font-size: 15em;
  min-height: 110vh;
}

.cnc {
  margin: auto;
  width: 50%;
  height: 50%;
  background:  url('http://image.gilawhost.com/16/12/29/9mq5kqgu.png') no-repeat 0 0%;
  background-size: 100%;
}

h1 {
  font-size: 1.2em;
}

p {
  width: 60%;
  margin: auto;
  text-align: left;
}

.p {
  margin-top: 120px;
  font-size: 14px;
  text-align: center;
}
<!DOCTYPE html>
<!--
come from the demo de Tom Bennet
http://www.sitepoint.com/responsive-sprite-animations-imagemagick-greensock
-->
<html >
<head>
  <meta charset="UTF-8">
  <title>Demo 4: Synchronising Playback with the Scrollbar</title>

  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">

</head>

<body>
  <h1>Demo 4: Synchronising Playback with the Scrollbar</h1>

<p>A responsive sprite animation that is synchronised with the scrollbar, and that remains in a fixed position for its duration of 1500 pixels. Scroll up and down to control playback.</p>

<div class="container" id="js-pinned">
  <div class="cnc" id="js-animation"></div>
</div>

<p class="p">Demo by Tom Bennet. <a href="http://www.sitepoint.com/responsive-sprite-animations-imagemagick-greensock" target="_blank">See article</a>.</p>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.2/ScrollMagic.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.2/plugins/animation.gsap.min.js'></script>

</body>
</html>

我是不是遗漏了什么或者 Sprite 文件太重了?

最佳答案

您的 sprite PNG 很好 - 不太重。您只需要在图像元素上定义一些更明确的大小调整规则。

这是该元素现在的样子:

.cnc {
  margin: auto;
  width: 350px;
  height: 200px;
  background:  url('http://image.gilawhost.com/16/12/29/9mq5kqgu.png') no-repeat 0 0%;
  background-size: auto 100%;
}

请注意与 Sprite 动画的一帧成比例的宽度/高度尺寸,以及 background-size: auto 100%(这将使图像适应 100% 的高度 容器,但让宽度按比例增长)。

下面的工作示例 - 滚动:

// initialise ScrollMagic controller
var controller = new ScrollMagic.Controller();

// create Tween
var tween = TweenMax.to("#js-animation", 1.0, {
	backgroundPosition: "100% 0",
	ease: SteppedEase.config(479)
})

// build scene
var scene = new ScrollMagic.Scene({duration: 15000})
	.triggerHook("onCenter")
	.setPin("#js-pinned")
	.setTween(tween)
	.addTo(controller);
body {
  padding: 20px;
  text-align: center;
}

.container {
  font-size: 15em;
  min-height: 110vh;
}

.cnc {
  margin: auto;
  width: 350px;
  height: 200px;
  background:  url('http://image.gilawhost.com/16/12/29/9mq5kqgu.png') no-repeat 0 0%;
  background-size: auto 100%;
}

h1 {
  font-size: 1.2em;
}

p {
  width: 60%;
  margin: auto;
  text-align: left;
}

.p {
  margin-top: 120px;
  font-size: 14px;
  text-align: center;
}
<!DOCTYPE html>
<!--
come from the demo de Tom Bennet
http://www.sitepoint.com/responsive-sprite-animations-imagemagick-greensock
-->
<html >
<head>
  <meta charset="UTF-8">
  <title>Demo 4: Synchronising Playback with the Scrollbar</title>

  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">

</head>

<body>
 

<div class="container" id="js-pinned">
  <div class="cnc" id="js-animation"></div>
</div>

<p class="p">Demo by Tom Bennet. <a href="http://www.sitepoint.com/responsive-sprite-animations-imagemagick-greensock" target="_blank">See article</a>.</p>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.2/ScrollMagic.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.2/plugins/animation.gsap.min.js'></script>

</body>
</html>

关于javascript - 使用 ScrollMagic 同步 Sprite 和滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41380994/

相关文章:

wpf - 将 WPF 控件设置为扩展以填充可用空间,仅此而已

javascript - React.js,列表中的每个 child 都应该有一个唯一的 "key" Prop 。如果 key 已经给出,如何修复

javascript - 循环遍历嵌套对象

javascript - Jquery ID 选择器不适用于变量

javascript - CK 编辑器支持 Rails 4 中的数学公式

html - 如何在放大以填充父级时使图像粘在底部?

javascript - 如何使用 jQuery 缓慢地将 css 属性更改为自动?

javascript - 如何为新添加的行添加背景颜色angularjs

javascript - 使用 twitter bootstrap scroll spy

c# - 在查看模式设置为滚动时调整 FlowDocumentReader 滚动增量?