首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iScroll视差效应

iScroll视差效应
EN

Stack Overflow用户
提问于 2017-09-21 17:06:49
回答 1查看 619关注 0票数 2

我试图了解视差如何与iscroll5一起工作。据我所知,我可以将容器定义为改变滚动速度的指示器。然而,我需要做的是同时对几个元素应用一个速比。

让我们以下面的例子为例,我将如何同时更改所有h2元素的h2

下面是小提琴 (可能更简单),下面是下面的示例:

代码语言:javascript
复制
var container = document.getElementsByClassName('iscroll__wrapper')[0],
    myScroll = new IScroll(container, { 
      scrollX: true, 
      scrollY: false, 
      mouseWheel: true
    });
代码语言:javascript
复制
.iscroll__wrapper {
  overflow-x: scroll;
  overflow-y: hidden;
}

ul {
  margin: 0;
  padding: 0;
  display: flex;
  width: 1200px;
  height: 300px;
}

li {
  box-sizing: border-box;
  flex: 0 0 auto;
  width: calc(100% / 3);
  padding-left: 2em;
  padding-right: 2em;
  list-style: none;
}

figure {
  margin: 0;
}

img {
  display: block;
  width: 100%;
  height: auto;
}
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/iscroll/build/iscroll-probe.js"></script>
<div class="iscroll__wrapper">
  <ul>
    <li>
      <figure><img src="https://lorempixel.com/900/200"></figure>
      <h2 class="title">Title 1</h2>
    </li>
    <li>
      <figure><img src="https://lorempixel.com/900/200"></figure>
      <h2 class="title">Title 1</h2>
    </li>
    <li>
      <figure><img src="https://lorempixel.com/900/200"></figure>
      <h2 class="title">Title 1</h2>
    </li>
  </ul>
</div>

现在,我的问题是:

  • 是否可以只使用iScroll来完成它?如果是这样的话,如何(文档中只提到改变整个容器的速度比)?
  • 如果不可能,我愿意接受任何其他可以与iScroll集成并且不需要jQuery的建议。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-25 13:03:58

好吧,我找到了解决办法。我把这个贴在这里,作为一个答案,以防它能帮助别人。

因此,我注意到,indicators可以传递一个数组,而不仅仅是一个元素。因此,我使用了一个for循环来填充创建新IScroll类时使用的数组。

以下是它的外观:

代码语言:javascript
复制
var container = document.getElementsByClassName('iscroll__wrapper')[0],
  containerLis = container.getElementsByTagName('li'),
  indicatorsArr = [],
  myScroll;

// Generating the indicators array
for (var i = 0; i < containerLis.length; i++) {
  var indicatorEl = container.getElementsByTagName('h2')[i];

  indicatorsArr[i] = {
    el: indicatorEl,
    resize: false,
    ignoreBoundaries: true,
    listenX: true,
    listenY: false,
    speedRatioX: 0.3
  };
}

// Creating a new IScroll class
myScroll = new IScroll(container, {
  scrollX: true,
  scrollY: false,
  mouseWheel: true,
  indicators: indicatorsArr
});
代码语言:javascript
复制
.iscroll__wrapper {
  overflow-x: scroll;
  overflow-y: hidden;
}

ul {
  margin: 0;
  padding: 0;
  display: flex;
  width: 1200px;
  height: 300px;
}

li {
  box-sizing: border-box;
  flex: 0 0 auto;
  width: calc(100% / 3);
  padding-left: 2em;
  padding-right: 2em;
  list-style: none;
}

figure {
  margin: 0;
}

img {
  display: block;
  width: 100%;
  height: auto;
}

h2 {
  padding-left: 5em;
}
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/iscroll/build/iscroll.js"></script>
<div class="iscroll__wrapper">
  <ul>
    <li>
      <figure><img src="https://lorempixel.com/900/200"></figure>
      <h2><span>Title 1</span></h2>
    </li>
    <li>
      <figure><img src="https://lorempixel.com/900/200"></figure>
      <h2><span>Title 2</span></h2>
    </li>
    <li>
      <figure><img src="https://lorempixel.com/900/200"></figure>
      <h2><span>Title 3</span></h2>
    </li>
  </ul>
</div>

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46349525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档