全局字体大小更改
更改整个社区字体大小的最简单方法是在主题的 CSS 中覆盖 HTML 元素上的默认值,如下所示:
html {
font-size: 17px; /* 默认值为 16px */
}
因为我们在 <html> 中定义的所有 font-size 值都使用 em 单位,所以增加 <html> 上的 font-size 将按比例增加所有其他元素的字体大小(em 是相对单位)。
Discourse 还提供用户可选的文本大小选项,每个用户可以在其偏好设置中更改(/my/preferences/interface),默认情况下如下:
最小: 13px
较小: 14px
正常: 16px (默认)
较大: 18px
最大: 20px
当您如上所示更改 <html> 的 font-size 时,您只更改了 正常 值。因此,如果您希望用户文本大小设置在您的主题中继续生效,您还应该增加其他选项的 font-size。如果您想将所有选项的字体大小增加 1px,它将如下所示:
:root {
--base-font-size-smallest: 14px;
--base-font-size-smaller: 15px;
--base-font-size: 17px;
--base-font-size-larger: 19px;
--base-font-size-largest: 21px;
}
更改单个组件的字体大小
您可能不想增加社区的全局字体大小,而只想更改特定组件(如标题或帖子)的 font-size。如果您熟悉 CSS,可以按预期定位单个元素。
例如,要增加帖子内所有内容的字体大小,您可以这样做:
.topic-post {
font-size: 1.2em;
}
如果您想更改帖子内容而不是用户名和其他元数据的文本大小,则需要更具体一些(右键单击元素并使用浏览器的检查器来确定要定位的元素)…
.topic-post .contents {
font-size: 1.2em;
}
请注意,在上述示例中我使用了 em 单位。您可以在此处使用 px 值,但 em 的好处是它们是相关的。
如果您在上述示例中使用像素单位,那么即使有人在偏好设置中更改了文本大小,这些字体大小也将保持不变。像 16px 这样的静态值始终是 16px。但是当您使用像 1.2em 这样的值时,它充当一个乘数……因此,如果有人在设置中选择更大的文本大小,字体大小将始终按 1.2 倍于基础设置的大小进行缩放。
利用 Discourse 的字体缩放变量
在 Discourse 的默认样式中,我们依赖一组字体缩放变量。您也可以在主题中使用这些变量:
:root {
--font-up-6: 2.296em;
--font-up-5: 2em;
--font-up-4: 1.7511em;
--font-up-3: 1.5157em;
--font-up-2: 1.3195em;
--font-up-1: 1.1487em;
--font-0: 1em;
--font-down-1: 0.8706em;
--font-down-2: 0.7579em;
--font-down-3: 0.6599em;
--font-down-4: 0.5745em;
--font-down-5: 0.5em;
--font-down-6: 0.4355em;
}
此系统确保我们使用一组有限的字体大小,这些字体大小根据在 html 上设置的全局大小进行缩放(并为您节省了嵌套 em 单位时的数学计算)。如果一个元素的 font-size 设置为 --font-up-3,我们就知道它比 --font-0 大 1.5 倍,无论其具体的 px 值是多少。
如果您感觉有点迷失,将这些变量想象成一个梯子可能会有帮助。如果您有一个元素的 font-size: var(--font-up-3),并且需要该元素的一个子元素的大小相当于 --font-0,那么您需要向下走 3 级才能达到那里(因此您将使用 --font-down-3)。
实际应用如下:
.topic-post {
font-size: var(--font-up-3); // 上移 3 级
.topic-meta-data {
font-size: var(
--font-down-3
); // 向下移 3 级;相当于 --font-0 (1em)
}
}
此文档是版本控制的 - 在 github 上 建议更改。