我使用reveal.js并用Markdown代码编写幻灯片。现在我想以经典的两列文字布局显示我的内容(文本、无序列表或甚至图片)。我希望有一种解决方案,即使初始配置更复杂,Markdown实际编写仍然很容易。
由于我不喜欢运行本地服务器,因此我在主HTML文件中编写Markdown。
更新:正如第一个答案所指出的那样,这应该通过CSS来实现。(我已经相应更新了我的问题。) 然而,我找不到任何关于如何用CSS做到这一点的描述。
我使用reveal.js并用Markdown代码编写幻灯片。现在我想以经典的两列文字布局显示我的内容(文本、无序列表或甚至图片)。我希望有一种解决方案,即使初始配置更复杂,Markdown实际编写仍然很容易。
由于我不喜欢运行本地服务器,因此我在主HTML文件中编写Markdown。
更新:正如第一个答案所指出的那样,这应该通过CSS来实现。(我已经相应更新了我的问题。) 然而,我找不到任何关于如何用CSS做到这一点的描述。
我正在使用 CSS 弹性布局,它运作良好。
<style>
.container{
display: flex;
}
.col{
flex: 1;
}
</style>
<div class="container">
<div class="col">
Column 1 Content
</div>
<div class="col">
Column 2 Content
</div>
</div>
更新:
由于 Pandoc 支持分隔的 div 标签,
::: {.container}
:::: {.col}
Column 1 Content
::::
:::: {.col}
Column 2 Content
::::
:::
关于样式,我们可以使用 flex
或 grid
,两者都可以很好地工作。
使用 flex
<style>
.container{
display: flex;
}
.col {
flex: 1;
}
</style>
使用 grid
<style>
.container{
display: grid;
grid-auto-flow: column;
}
</style>
<div>
标签之间添加空行,以便 MD 解析器正常工作(这在很大程度上取决于实现方式)。 - Fuhrmanator.col
类吗?在我的情况下,无论内部 div
的类名是什么,它都可以工作。但我必须给它一个名称。 - Ger我在一个外部CSS文件custom.css中创建了两个ID,并将其与我的reveal.js文件附加在一起,使用YAML头中的字段css:custom.css。
#left {
left:-8.33%;
text-align: left;
float: left;
width:50%;
z-index:-10;
}
#right {
left:31.25%;
top: 75px;
float: right;
text-align: right;
z-index:-10;
width:50%;
}
我在我的Markdown文档中放置了ID为right和left的div元素,以产生双列布局。
我在我的Markdown文档中放置了ID为right和left的div元素,以产生双列布局。
<div id="right">
- You can place two graphs on a slide
- Or two columns of text
- These are all created with div elements
</div>
<p>
元素中。 - andrew.multiCol {
display: table;
table-layout: fixed; // don't fudge depending on content
width: 100%;
text-align: left; // matter of taste, makes imho sense
.col {
display: table-cell;
vertical-align: top;
width: 50%;
padding: 2% 0 2% 3%; // some vertical, and between columns
&:first-of-type { padding-left: 0; } // there's nothing before col1
}
}
// Theme template ------------------------------
@import "../template/theme";
// ---------------------------------------------
<section>
<h3>Doing two-column (this headline still full-width)</h3>
<div class='multiCol'>
<div class='col'>
Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.
</div>
<div class='col'>
Qua de causa Helvetii quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.
</div>
</div>
And simply more regular full-width text in the following. But hey, there is also:
<div class='multiCol'>
<div class='col'>Also works for 3 columns...</div>
<div class='col'>...as we can show in...</div>
<div class='col'>...this example here.</div>
</div>
</section>
<table>
通常被认为是“过时的”(因为它在早期html中被滥用于布局目的,至今在电子邮件的html中仍然如此...),但相反,至少作为属性layout:table
,它有许多合法的用途,通常是最简单的解决方案,并且广泛兼容。
CSS Grid Layout 可以实现非常灵活的布局,包括两列格式和更复杂的布局。
要实现两列格式,可以使用以下 CSS 代码段。它定义了两个等宽的列模板,每个列模板的宽度均为可用宽度的 1 分数(1fr
),列与列之间留有 10 像素的间隙。
.twocolumn {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 10px;
text-align: left;
}
它可以如下使用
<section>
<h2>Slide Title</h2>
<div class="twocolumn">
<div>
Column One
</div>
<div>
Column Two
</div>
</div>
</section>
我用两个浮动的<div>
元素解决了这个问题:
<section>
<div style="text-align: left; float: left;">
<p data-markdown>- This is my first left element</p>
<p data-markdown>- This is my second left element</p>
<!-- more Elements -->
</div>
<div style="text-align: right; float: right;">
<p data-markdown>- This is my first right element</p>
<p data-markdown>- This is my second rightelement</p>
<!-- more Elements -->
</div>
</section>
标签包裹元素。如果你将data-markdown写入父级
Text going to the right <!-- .element: style="float: right; width: 40%" -->
Text going on the left column <!-- .element: style="width: 40%" -->
但实际上,它无法处理右侧有多个元素的情况。
我没有完全理解你的意思,但我猜测你可能会在ramnathv的帖子中找到答案。
---
layout: slide
---
{{{ content }}}
<div class='left' style='float:left;width:{{left.width}}'>
{{{ left.html }}}
</div>
<div class='right' style='float:right;width:{{right.width}}'>
{{{ right.html }}}
</div>
它对我有效