You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Reveal.js的fragment同时实现淡入与红色高亮效果?

在Reveal.js中实现片段淡入+红色高亮同步效果的解决方案

你需要的是fragment元素初始隐藏,触发显示时同时完成淡入动画与红色高亮,之前的两种方案都没达到预期,原因和解决方法如下:

问题分析

  • 方案一:直接用<span class="fragment highlight-red">,初始状态未隐藏。因为highlight-red仅负责高亮变色,没有设置初始隐藏的样式,所以元素一开始就显示在页面上。
  • 方案二:嵌套两层<span class="fragment">,需要两次触发才能完成效果。Reveal.js会把每个独立的fragment视为一个触发步骤,第一次触发显示内层元素(此时还未激活高亮),第二次触发才会应用红色高亮。

可行解决方案

方法1:自定义复合效果的Fragment类

创建一个同时包含初始隐藏、淡入动画和红色高亮的自定义CSS类,只需要一个元素就能实现同步效果:

<link href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/reveal.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/theme/simple.min.css" rel="stylesheet" />

<style>
/* 自定义fragment类:初始隐藏,显示时淡入+红色高亮 */
.fragment.highlight-red-fade {
  opacity: 0;
  transition: opacity 0.5s ease, color 0.5s ease;
}
.fragment.highlight-red-fade.visible {
  opacity: 1;
  color: #ff2c2d; /* 匹配Reveal.js默认highlight-red的红色值 */
}
</style>

<div class="reveal">
  <div class="slides">
    <section>
      The last sentence should be hidden at first. When it is revealed, it should be highlighted at the same time. 
      <span class="fragment highlight-red-fade">现在初始状态隐藏,触发时同步淡入并变红!</span>
    </section>
  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/js/reveal.min.js"></script>
<script>Reveal.initialize();</script>

方法2:修改现有highlight-red类的样式

如果不想新增类,直接修改highlight-red的默认样式,让它具备初始隐藏的特性:

<link href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/reveal.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/css/theme/simple.min.css" rel="stylesheet" />

<style>
/* 让highlight-red fragment初始隐藏,显示时同步淡入+变红 */
.fragment.highlight-red {
  opacity: 0;
  transition: opacity 0.5s ease, color 0.5s ease;
}
.fragment.highlight-red.visible {
  opacity: 1;
  color: #ff2c2d;
}
</style>

<div class="reveal">
  <div class="slides">
    <section>
      The last sentence should be hidden at first. When it is revealed, it should be highlighted at the same time. 
      <span class="fragment highlight-red">现在初始隐藏,触发时同步淡入变红!</span>
    </section>
  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.6.0/js/reveal.min.js"></script>
<script>Reveal.initialize();</script>

两种方法都能实现你要的效果:元素初始隐藏,单次触发后同时完成淡入动画和红色高亮。

内容的提问来源于stack exchange,提问作者Ooker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:14:56