小编Jas*_*ann的帖子

HTML5 视频 - 如何无缝播放多个视频然后循环播放序列?

我知道以前有人问过类似的问题,但没有人能够解决这个具体问题,他们只能解决部分问题。

我想实现以下目标:

  1. 我们有一堆视频。让我们给他们打电话video1video2video3video4video5
  2. 视频按有序顺序播放,在无限循环中重复 - 因此在video1完成后video2播放,然后video3video4video5然后再次从 开始video1
  3. 起点必须是随机的。所以整个序列应该从列表中随机选择的视频开始,然后按正常顺序遍历列表的其余部分。如果随机选择下手video3,那就再继续打video4video5video1video2等。
  4. 序列的播放必须在没有任何用户输入的情况下自动开始。
  5. 现在这最后一点是最困难的一点:每个视频的播放之间必须没有间隙。

我已经能够编写一个代码来完成从第 1 点到第 4 点的所有操作,但我无法解决第 5 点!

这是我的代码。我已将background-color视频的设置为使视频red之间的间隙可见 - 您将能够在每个视频的播放之间看到红色闪光。这就是我需要解决的问题:我需要消除那一秒的差距,以便播放绝对无缝。

var vidElement = document.getElementById('video');
    var vidSources = [
      "http://www.w3schools.com/html/mov_bbb.mp4",
      "http://www.w3schools.com/html/movie.mp4"
      ];
    var activeVideo = Math.floor((Math.random() * vidSources.length));
    vidElement.src = vidSources[activeVideo];
    vidElement.addEventListener('ended', function(e) {
      // …
Run Code Online (Sandbox Code Playgroud)

html javascript html5-video

5
推荐指数
1
解决办法
4451
查看次数

当从顶部或底部滚动到视图时,使用 Intersection Observer 向元素添加不同的类

我有一段 jQuery 代码,当元素滚动到视口中时,它会向元素添加一个 css 类;当元素滚动出视口时,会删除该类。

到目前为止,代码的工作原理如下:

  • 当元素滚动到视口中时,会添加“inview”类。
  • 当元素滚动出视口时,“inview”类将被删除。

到目前为止,一切都很好。但我想要实现的是:

滚动到视图中:

  • 当元素从页面底部滚动到视口时,会添加“inview-bottom”类。
  • 当元素从页面顶部滚动到视口时,会添加“inview-top”类。

滚动到视图之外:

  • 当元素从页面底部滚动出视口时,会添加“outview-bottom”类。
  • 当元素从页面顶部滚动出视口时,会添加“outview-top”类。

打扫干净:

  • 当元素从页面顶部或底部滚动到视口中时,应删除所有“outview-*”类。
  • 当元素从页面顶部或底部滚动出视口时,应删除所有“inview-*”类。

评论中建议使用Intersection Observer API,在阅读更多相关内容后,我相信它提供了满足要求的最佳方法。

这是我的代码(以整页打开 - 预览效果不佳)。您还可以在 jsFiddle 上找到相同的代码

function inView(opt) {
  if (opt.selector === undefined) {
    console.log('Valid selector required for inView');
    return false;
  }
  var elems = [].slice.call(document.querySelectorAll(opt.selector)),
    once = opt.once === undefined ? true : opt.once,
    offsetTop = opt.offsetTop === undefined ? 0 : opt.offsetTop,
    offsetBot = opt.offsetBot === undefined ? 0 : opt.offsetBot,
    count = elems.length, …
Run Code Online (Sandbox Code Playgroud)

javascript css jquery intersection-observer

5
推荐指数
1
解决办法
4879
查看次数

IntersectionObserver 在 Safari 或 iOS 中不起作用

我有一段代码,根据元素是从顶部还是底部滚动进入或退出视口,向元素添加不同的 css 类。

它使用Intersection Observer是因为它应该比scroll事件更好地处理大量元素。

但是,我在使用此代码时遇到了两个问题:

  1. 它在 Safari(最新版本)中不起作用
  2. 它不适用于移动 Apple 设备

这很奇怪,因为 IntersectionObserver 应该可以在 Safari 甚至 iOS 上的移动浏览器上正常工作。

您可以在 jsFiddle 上找到代码或在此处查看代码段:

const config = {
  // Add root here so rootBounds in entry object is not null
  root: document,
  // Margin to when element should take action
  rootMargin: '-50px 0px',
  // Callback will be fired 30 times during intersection 
  threshold: [...Array(30).keys()].map(x => x / 29)
};

let observer = new IntersectionObserver(function(entries, observer) {

  entries.forEach((entry, …
Run Code Online (Sandbox Code Playgroud)

javascript jquery intersection-observer

5
推荐指数
2
解决办法
4529
查看次数