html - 如何通过 CSS 在 HTML5 视频中设置文本轨道的样式?

标签 html css internet-explorer firefox html5-video

是否可以在 HTML5 视频播放器中设置文本轨道(如字幕)的样式?

我已经为 Chrome 找到了这样做的方法:

video::-webkit-media-text-track-container {
    // Style the container
}

video::-webkit-media-text-track-background {
    // Style the text background
}

video::-webkit-media-text-track-display {
    // Style the text itself
}

这似乎让 Safari 有点困惑。它可以工作,但渲染有很多问题。

但更重要的是:如何为 Firefox 和 IE 实现这一点?

最佳答案

迄今为止我发现的唯一跨浏览器解决方案是:隐藏视频的文本轨道并使用您自己的文本轨道。

这将允许您创建自己的文本节点,带有类、id 等,然后可以简单地通过 css 设置样式。

为此,您将利用文本提示的 onenter 和 onexit 方法来实现您自己的文本节点。

var video   = document.querySelector(‘YOUR_VIDEO_SELECTOR’)
    tracks  = video.textTracks[0],
    tracks.mode = 'hidden', // must occur before cues is retrieved
    cues    = tracks.cues;

  var replaceText = function(text) {
        $('WHERE_TEXT_GETS_INSERTED').html(text);
      },

      showText = function() {
        $('WHERE_TEXT_GETS_INSERTED').show();
      },

      hideText = function() {
        $('WHERE_TEXT_GETS_INSERTED').hide();
      },

      cueEnter = function() {
        replaceText(this.text);
        showText();
      },

      cueExit = function() {
        hideText();
      },

      videoLoaded = function(e) {
        for (var i in cues) {
          var cue = cues[i];
          cue.onenter = cueEnter;
          cue.onexit = cueExit;
        }
      },

      playVideo = function(e) {
        video.play();
      };


  video.addEventListener('loadedmetadata', videoLoaded);
  video.addEventLister('load', playVideo);
  video.load();

关于html - 如何通过 CSS 在 HTML5 视频中设置文本轨道的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32252337/

相关文章:

html - 如何让这个表格只有 1 个像素的边框?

javascript - 如何将 CSS 样式添加到 javascript

javascript - WordPress, Divi 主题 : Blog Module not rendering article image

css - 背景图像在 IE 中不显示,我不知道为什么

javascript - 在页面加载时设置 div 背景

javascript - 为什么它没有被调用时却添加了

css - 为什么绝对定位元素不忽略它的兄弟位置,出现在它之后?

css - document.styleSheets[x].cssRules 为空

javascript - IE 9 及以下版本在显示滑出侧边栏菜单时出现问题

html - 为创造性地使用 "Flex-Box"而回退到旧的(和烦人的)浏览器