- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Reveal.js 演示文稿中,我想包含一个长视频文件。我想让黑戏停在某些位置,这样我就有时间向观众解释他们所看到的内容。然后,我想在单击时继续播放。我怎样才能做到这一点?
我的尝试如下。我将视频文件分成 1.webm
、2.webm
、3.webm
等部分,这样每个部分都在我的位置结束想休息一下。我的想法是
覆盖 Reveal.js 的 keydown 事件,以便它不会转到下一张幻灯片,而是执行我的 Javascript。我怎样才能做这样的事情?
<div class="slides">
<section class="video-stepper">
<video>
<source data-src="1.webm" type="video/webm" />
</video>
</section>
</div>
<script>
$(function() {
// How can I do this?
Reveal.addEventListener('click', function(event) {
if ($(event.currentSlide).hasClass('video-stepper')) {
event.preventDefault();
// change 'src' of the video element and start the playback.
}
});
});
</script>
使用片段并在视频显示时自动播放视频:
<div class="slides">
<section class="video-stepper">
<video class="fragment current-visible video-step">
<source data-src="1.webm" type="video/webm" />
</video>
<video class="fragment current-visible video-step">
<source data-src="2.webm" type="video/webm" />
</video>
<video class="fragment current-visible video-step">
<source data-src="3.webm" type="video/webm" />
</video>
</section>
</div>
<script>
$(function() {
Reveal.addEventListener('fragmentshown', function(event) {
if ($(event.fragment).hasClass('video-step')) {
event.fragment.play();
}
});
});
</script>
以及一些取自问题 Hide reveal.js fragments after their appearance 的 CSS ,以便片段堆叠在一起:
.fragment.current-visible.visible:not(.current-fragment) {
display: none;
height:0px;
line-height: 0px;
font-size: 0px;
}
但是,这会带来一些淡入和淡出,看起来很糟糕。如何避免褪色?
最佳答案
进入视频幻灯片时,您基本上可以通过调用Reveal.disableEventListeners()
来禁用reveal.js ,然后将您自己的逻辑绑定(bind)到 keydown 事件,直到您单步浏览完所有视频,然后使用 Reveal.addEventListeners()
再次启用 Reveal.js。 .
需要付出一些额外的努力才能避免在转换到下一个视频时出现闪烁。您可以添加新的 <video>
包含新视频的元素,将其放置在当前 <video>
的顶部在CSS的帮助下z-index
,播放新视频,然后删除旧视频。
<section class="video-stepper">
<!-- Unlike the other <video> element, this one is not absolutely
positioned. We hide it with CSS, but use it to reserve space
on the slide and compute the optimal width and height. -->
<video class="placeholder stretch">
<source src="1.webm">
</video>
<video class="video-step" data-sources='["1.webm","2.webm","3.webm"]'></video>
</section>
.video-stepper {
position: relative;
}
video.video-step {
position: absolute;
top: 0;
left: 0;
}
video.video-step.front {
z-index: 10;
}
video.placeholder {
visibility: hidden;
}
这有点长,但可以按要求工作。
Reveal.addEventListener('slidechanged', function(event) {
if ($(event.currentSlide).hasClass('video-stepper')) {
// When we enter a slide with a step-by-step video, we stop reveal.js
// from doing anything. Below, we define our own keystroke handler.
Reveal.removeEventListeners();
// Set the width and height of the video so that it fills the slide.
var stretcher = $(event.currentSlide).find('video.placeholder').get(0);
var video = $(event.currentSlide).find('video.video-step').get(0);
video.setAttribute('width', stretcher.getAttribute('width'));
video.setAttribute('height', stretcher.getAttribute('height'));
// Convert the data-sources attribute to an array of strings. We will
// iterate through the array with current_video_index.
var sources = JSON.parse(video.getAttribute('data-sources'));
var current_video_index = 0;
// Add a <source> element to the video and set the 'src' to
// the first video.
var source = document.createElement('source');
source.setAttribute('src', sources[0]);
video.appendChild(source);
document.addEventListener('keydown', function step_through_videos(event) {
if (event.which == 39) {
// right arrow key: show next video
// For the next video, create a new <video> element
// and place it on top of the old <video> element.
// Then load and play the new. This avoids flickering.
var new_video = $(video).clone().get(0);
var new_video_source = $(new_video).children('source').get(0);
new_video_source.src = sources[current_video_index];
new_video.load();
$(new_video).addClass('front video-step');
$(new_video).insertAfter(video);
new_video.play();
// Wait a little before removing the old video.
new Promise((resolve) => setTimeout(resolve, 500)).then(function() {
video.remove();
video = new_video;
$(video).removeClass('front');
});
current_video_index = current_video_index + 1;
event.preventDefault();
} else if (event.which == 37) {
// left arrow key: return the counter to previous video
current_video_index = current_video_index - 1;
event.preventDefault();
}
if (0 > current_video_index || current_video_index >= sources.length) {
// Reinstall reveal.js handlers.
document.removeEventListener('keydown', step_through_videos, true);
Reveal.addEventListeners();
console.log('Added reveal.js event listeners.');
}
}, true);
}
});
关于javascript - 使用 Reveal.js 逐步浏览视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38187779/
我一直有同样的问题——在 Reveal.js 中创建一组垂直幻灯片后,使用嵌套 Content Content 该垂直列表之后的下一张幻灯片无法正常工作。我的代码编辑器无法将其识别为 HTML,它
我正在使用 reveal.js进行演示。我正在使用 white 主题: 但是,最后一张幻灯片的主题应该是black。 我能做到吗?怎么办? 最佳答案 执行此操作的一个好方法可能是像这样在最后一张幻灯
我需要在同一页面上有多个模式窗口。基本上我打算有一个指向每个团队成员的链接,然后单击后会在模式框中弹出他们的详细信息。我正在使用 zurb 的 Reveal 插件。这是网站上的示例。 html:
在 Powerpoint 中,单击鼠标左键可前进到下一张幻灯片。在 reveal.js 中,它是使用键盘完成的。是否可以配置 reveal.js 在单击鼠标按钮时也前进到下一张幻灯片? 最佳答案 看起
到目前为止,我很喜欢 Reveal.js。不过,我遇到的一个问题是,我的无线演示 Remote 通常只能生成左/右箭头键击。我的 Reveal.js 幻灯片大量使用了它的二维功能以及片段。这意味着我的
我当前正在表格上使用“全部显示”按钮来显示所有表格条目: http://jsfiddle.net/SCpgC/ 但是,我想知道,有没有办法可以在单击时将“全部显示”切换为显示“较少显示”,以便用户可以
当 reveal.js 文件夹与 markdown 文件无关时,我无法使用 Pandoc 制作独立的 reveal.js 幻灯片。 一个简单的 Markdown 文件,Tester.md: # Tit
演讲者备注适用于默认的 reveal.js 演示文稿。 在我的演示文稿中,只要我添加 notes.js 依赖项,演示文稿就会停止工作。 我不知道是什么导致了这个问题。我测试了将默认演示文稿 index
我正在使用 Reveal.initialize({ slideNumber: true }) 是否可以隐藏扉页上的幻灯片编号? 最佳答案 我是这样做的: Reveal.addEventList
我有一个使用reveal.js 运行的演示文稿,一切正常。我正在编写一些示例代码,并且 highlight.js 在我的演示文稿中运行良好。但是,我想逐步显示代码。例如,假设我正在向您解释一个功能,我
有了reveal.js,不仅可以水平滑动,还可以通过垂直滑动添加第二个维度: slide1 slide2 A slide2 B slide2 C 但是,似乎只能从顶部的第一个小节开始(
假设我有一个简单的 reveal.js像这样滑动: Title Text Fragment 我想换 Text后颜色变为红色Fragment出现在屏幕上。我该怎么做? 最佳答案
我用 reveal.js 设置了一个演示文稿这意味着在无人看管的情况下使用。所以,我希望能够在所有指向“信息幻灯片”的幻灯片上显示一个小页脚(或其他地方的另一个链接),其中包含有关作者的数据、如何使用
我正在尝试使用reveal.js 进行演示。我尝试将图像添加到幻灯片中,但图像不会显示。这是我的代码 Slide Header Symptom:
我正在尝试使用语法高亮显示 reveal.js 中的演示文稿,但我不想使用 zenburn(默认设置),我想高亮显示用 R 编写的代码。我使用 highlight.js 生成为 R 定制的 css,但
我正在使用 Xaringan 编写演示文稿。我想嵌入视频,这样当我转换到包含视频的幻灯片时,它会自动全屏播放。 (即,我不想必须点击视频才能播放)。 我可以使用 revealjs 实现我想要的: ##
我已将幻灯片编号添加到我的展示 js 演示文稿中 Reveal.configure({ slideNumber: true }); Reveal.configure({
我尝试只在一个部分更改字体颜色,因为我添加了背景图片,否则您无法阅读白色: blablabla
我正在学习使用reveal.js,我发现它非常强大。 我想知道是否有可能在每次幻灯片转换时使显示播放声音。 我做了一个启用自动滑动选项的演示文稿,当幻灯片更改时发出声音会很有用。 有人能帮我吗 ? 谢
reveal.js 中默认使用哪个主题来高亮语法? 最佳答案 默认主题是 Zenburn,参见 index.html . 也可以在这里尝试 Zenburn:http://softwaremaniacs
我是一名优秀的程序员,十分优秀!