更改主题中的字体大小

全局字体大小更改

更改整个社区字体大小的最简单方法是在主题的 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 上 建议更改。

26 个赞