【问题标题】:In a reveal.js slideshow how to position the H1 headers via CSS at he top of the slides在reveal.js 幻灯片中,如何通过CSS 将H1 标题放置在幻灯片顶部
【发布时间】:2020-01-21 06:58:24
【问题描述】:

我正在使用reveal.js 创建 HTML 幻灯片。默认情况下(以及我尝试过的所有主题)reveal.js 以垂直居中的方式布局每张幻灯片的完整内容。它看起来有点像这样:

如何为 h1 标头或其他一个reveal.js 选择器设置CSS 规则,以使h1 标头保持在幻灯片的顶部,而其余部分仍垂直居中?我的意思是这样的:


我现在已经尝试了一些东西。例如

.reveal h1 {
    position: absolute;
}

不起作用,因为这样标题不会“脱离”垂直居中的section。

我还尝试了改变层次结构:

.reveal .slides {
  position: static;
}

(加上上面的h1 CSS),但我也无法让它工作。

最后我从one answer 尝试了转换方法,但这也不起作用——可能是因为reveal.js 已经使用了转换本身。

知道如何在reveal.js 中执行此操作吗?

【问题讨论】:

  • 只要直接父元素定位在absolute 或relative,你就会被困在这个上下文中来定位子元素。 h1 和 .slide 元素的 CSS 规则是什么样的?
  • @Trollsyn h1(目前)没有postion,.reveal.slide 有(在reveal.css 的深处){backface-visibility: hidden;}。 - 不确定这是否有帮助。
  • 您是在 Safari、IOS 设备上查看幻灯片吗?
  • @VoKimNguyen 不,Linux 和 Windows 上的 Firefox。

标签: css css-position reveal.js


【解决方案1】:

通常这是不可能的,尽管你可以做一些我认为有点 hacky 的事情。您可以在父父级上应用 3d 变换。这将强制浏览器在影响position: fixed 子节点的单独层中绘制父父级。

所以这样的事情应该可以工作:

.reveal {
    transform: translate3d(0,0,0);
}
.reveal h1 {
    position: fixed;
    top: 0;
    left: 0;
}

不过,您最好的方法是制作 <section/> position: static(您仍然可以使用 display: flex 将其垂直居中)并在 <h1/> 上使用 postion: absolute。

【讨论】:

  • 我已经尝试过使用转换的建议,但似乎不起作用:h1 仍在与幻灯片的其余内容一起上下移动。 (顺便说一句,很抱歉回复晚了。我不在播放幻灯片文件的机器旁。)
  • 可能问题在于幻灯片本身具有 3d 变换。
  • 是的,我想是的。 - 我尝试了第二种方法(将position: static 放在section 上,并在h1 上使用postion: absolute),但随后 所有 元素都飞到了浏览器的顶部!
【解决方案2】:

我可以通过添加以下代码在https://revealjs.com/#/1 处调整reveal.js 示例的代码:

section {
    display: flex !important;
    flex-direction: column;
    top: unset !important; 
    height: 100vh;
}

section p {
    margin-top: auto !important;
    margin-bottom: auto !important;
}

html是这样的:

<section class="present" style="top: 189px; display: block;">
    <h2>Hello There</h2>
    <p>
        reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
    </p>
</section>

我添加的上述css将在考虑h2标题后的剩余空间内将段落居中。

要将标题从流程中移出以使页面上的段落居中,忽略标题的大小,您可以尝试将标题包装成这样:

<div style="position: relative;">
    <h2 style="position: absolute;">Hello There</h2>
</div>

希望对您有所帮助。无论如何添加一个额外的元素(或者像我展示的那样包装h2,或者在h2中)来实现这样的事情?

【讨论】:

  • 谢谢。我明天会测试这个。我猜该解决方案可以适用于 H1 标头,例如 H2 标头。
  • 是的,两者都可以,不管是h1还是h2
猜你喜欢
  • 2017-03-13
  • 2016-08-15
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多