【问题标题】:iScroll parallax effectiScroll 视差效果
【发布时间】:2017-09-25 21:03:58
【问题描述】:

我正在尝试了解视差如何与 iscroll5 配合使用。据我了解,我可以将容器定义为更改滚动速度的指示器。但是我需要做的是同时对几个元素应用一个速度比。

让我们看下面的例子,我将如何一次更改所有h2 元素的speedratioX?

这是jsfiddle(可能更简单),下面是 SO 中的相同示例:

var container = document.getElementsByClassName('iscroll__wrapper')[0],
    myScroll = new IScroll(container, { 
      scrollX: true, 
      scrollY: false, 
      mouseWheel: true
    });
.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;
}
<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 的建议。

感谢您的帮助!

【问题讨论】:

    标签: javascript parallax iscroll


    【解决方案1】:

    好的,我找到了解决方案。我在这里发布这个作为答案,以防它可以帮助某人。

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

    这是它的外观:

    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
    });
    .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;
    }
    <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>

    【讨论】:

      猜你喜欢
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多