如何在RevealJS中排除附录幻灯片不计入总幻灯片数?
解决RevealJS幻灯片计数排除附录页的问题
要让右下角的幻灯片计数排除附录页,显示为1/1,可以通过自定义RevealJS的幻灯片计数逻辑实现,具体步骤如下:
实现步骤
修改YAML配置,关闭默认幻灯片计数,同时注入自定义JavaScript逻辑:
--- format: revealjs: slide-number: false include-after-body: text: | <script> // 统计非附录类幻灯片总数 const countMainSlides = () => { return document.querySelectorAll('.slide:not(.appendix)').length; }; // 获取当前非附录幻灯片的索引 const getCurrentMainSlideIndex = () => { const slides = Array.from(document.querySelectorAll('.slide:not(.appendix)')); const currentSlide = document.querySelector('.slide.present:not(.appendix)'); return slides.indexOf(currentSlide) + 1; }; // 更新计数显示 const updateSlideNumber = () => { const current = getCurrentMainSlideIndex(); const total = countMainSlides(); // 切换到附录页时,保持显示主体最后一页计数 const displayCurrent = current || total; document.querySelector('.reveal .slide-number').textContent = `${displayCurrent}/${total}`; }; // 初始化计数元素 const initSlideNumber = () => { const slideNumberEl = document.createElement('div'); slideNumberEl.className = 'slide-number'; document.querySelector('.reveal').appendChild(slideNumberEl); updateSlideNumber(); }; // 绑定幻灯片事件 Reveal.on('ready', initSlideNumber); Reveal.on('slidechanged', updateSlideNumber); </script> ---保持原有幻灯片结构,附录页继续用
.appendix类标记:Slide with main content # Appendix {.appendix} --- Slide with appendix content
逻辑说明
- 这段代码会:
- 统计所有不带
.appendix类的幻灯片数量作为总页数 - 切换幻灯片时,计算当前非附录幻灯片的索引
- 切换到附录页时,计数保持显示主体内容的最后一页数值(即
1/1) - 初始化时创建与默认样式一致的计数元素
- 统计所有不带
内容的提问来源于stack exchange,提问作者bretauv
相关产品推荐
相关产品推荐

