首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态加速后,从相同的点恢复css动画

动态加速后,从相同的点恢复css动画
EN

Stack Overflow用户
提问于 2021-01-27 10:30:55
回答 1查看 41关注 0票数 2

在用户滚动中,我通过添加一个加速类来提高下面滑块的速度1秒。这可以很好地工作。我很难让它从加速类离开的同一点上滑动。

请给我建议。

代码语言:javascript
复制
var photos = document.querySelector(".photos");
photos.innerHTML += photos.innerHTML;

photos.onwheel = function () {
    photos.classList.add("speedup");
    var t = setTimeout(() => {
        photos.classList.remove("speedup");
        clearTimeout(t);
    }, 1000);
};
代码语言:javascript
复制
html,
body {
    overflow: hidden;
}
.wrapper {
    overflow: hidden;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 2;
    background-color: #fff;
}
.wrapper .photos {
    display: flex;
    height: 100vh;
    align-items: center;
    animation: slide 50s linear 0s infinite;
}
@keyframes slide {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(-50%);
    }
}
.wrapper .photos.speedup {
    animation-duration: 1s;
}
代码语言:javascript
复制
<div class="wrapper">
    <div class="photos">
        <img src="https://via.placeholder.com/500/FF0000" />
        <img src="https://via.placeholder.com/500/00FF00" />
        <img src="https://via.placeholder.com/500/0000FF" />
    </div>
</div>

EN

回答 1

Stack Overflow用户

发布于 2021-01-27 21:43:15

我认为你必须使用JS构建动画,才能实现你想要的效果。下面是一个基本的例子:

代码语言:javascript
复制
var factor = 0.1; /* this will control the speed */
var current = 0;

var photos = document.querySelector(".photos");
photos.innerHTML += photos.innerHTML;

photos.onwheel = function() {
  factor = 0.2;
  var t = setTimeout(() => {
    factor = 0.1;
    clearTimeout(t);
  }, 1000);
};


function repeatOften() {
  current+=factor;
  if(current >=50) {
    current = 0;
  }
  photos.style.transform="translateX(-"+current+"%)";
  requestAnimationFrame(repeatOften);
}
requestAnimationFrame(repeatOften);
代码语言:javascript
复制
html,
body {
  overflow: hidden;
}

.wrapper {
  overflow: hidden;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 2;
  background-color: #fff;
}

.wrapper .photos {
  display: flex;
  height: 100vh;
  align-items: center;
  transform: translateX(0);
}
代码语言:javascript
复制
<div class="wrapper">
  <div class="photos">
    <img src="https://via.placeholder.com/500/FF0000" />
    <img src="https://via.placeholder.com/500/00FF00" />
    <img src="https://via.placeholder.com/500/0000FF" />
  </div>
</div>

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

https://stackoverflow.com/questions/65912116

复制
相关文章

相似问题

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