平滑滚动以播放截屏视频

假设您要以编程方式从顶部到底部滚动网页。 例如,您正在录制屏幕录像,并且需要一个漂亮的整页滚动。 您可能无法自己滚动它,因为它会不平坦且生涩。 本机JavaScript可以平滑滚动 。 这是一个小片段,可以为您解决问题:

window.scrollTo({
  top: document.body.getBoundingClientRect().height,
  behavior: 'smooth'
});

但是没有办法控制速度或放松速度! 对于截屏可能太快了。 但是我发现了一个小技巧,它最初是由(我认为)杰迪迪亚·赫特(Jedidiah Hurt)发布的。

诀窍是使用CSS转换而不是实际的滚动。 这样,速度和缓动都可以被控制。 这是我整理的代码:

const scrollElement = (element, scrollPosition, duration) => {
  
  // useful while testing to re-run it a bunch.
  // element.removeAttribute("style"); 
  
  const style = element.style;
  style.transition = duration + 's';
  style.transitionTimingFunction = 'ease-in-out';
  style.transform = 'translate3d(0, ' + -scrollPosition + 'px, 0)';
}

scrollElement(
  document.body, 
  (
    document.body.getBoundingClientRect().height
    -
    document.documentElement.clientHeight
    +
    25
  ),
  5
);

这个想法是把负顶部位置为整个文档的高度,但减去的,你可以看到什么,所以它不会太远滚动高度。 有一点点神奇的数字在那里,你可能需要调整,以得到它为你的权利。

这是我以这种方式录制的电影:

它仍然不是很完美。 我部分归咎于视频的FPS,但是即使我的眼神看着它也并不是全部。 如果需要更高的质量,我可能会重新启动计算机,并打开此页面作为唯一的选项卡和应用程序,大声笑。

观看演示

另一种可能性是使用老式的jQuery .animate(),可以通过一些自定义缓动对其进行扩展。 这是一个演示。

看笔
jQuery 轻松 滚动 Chris Coyier@chriscoyier
CodePen上

翻译自: https://css-tricks.com/smooth-scrolling-for-screencasts/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值