跳到内容

排版预设

提供一组散文类,可用于将排版默认值添加到普通 HTML 中。

源代码

安装

bash
pnpm add -D @unocss/preset-typography
bash
yarn add -D @unocss/preset-typography
bash
npm install -D @unocss/preset-typography

提示

此预设包含在 unocss 包中,您也可以从那里导入它。

ts
import { presetTypography } from 'unocss'

使用

uno.config.js
js
import {
  defineConfig,
  presetAttributify,
  presetTypography,
  presetUno
} from 'unocss'

export default defineConfig({
  presets: [
    presetAttributify(), // required when using attributify mode
    presetUno(), // required
    presetTypography(),
  ],
})
html
<article class="text-base prose prose-truegray xl:text-xl">
  {{ markdown }}
  <p class="not-prose">
    Some text
  </p>
</article>
html
<article text-base prose prose-truegray xl="text-xl">
  {{ markdown }}
  <p class="not-prose">
    Some text
  </p>
</article>

警告

注意:not-prose 只能用作类,不能用作属性。

亮点

任何字体大小

应用您喜欢的任何字体大小到正文,prose 将为相应的 HTML 元素缩放样式。例如,prose text-lg 的正文字体大小为 1.125remh1 将根据该大小缩放 2.25 倍。请参阅 所有支持的 HTML 元素

任何颜色

使用 prose-${colorName}(例如 prose-coolgrayprose-sky)应用 UnoCSS 中的任何颜色,因为 prose 默认没有颜色。请参阅 所有可用颜色。例如,prose prose-truegray 将为相应的 HTML 元素使用相应的颜色。

使用单个实用程序实现暗模式

使用 prose-invert 应用排版暗模式(背景颜色需要由用户处理)。例如,prose dark:prose-invert 将在暗模式下使用反转颜色。

您自己的样式

不在 prose 中的元素的样式将保持不变。没有像 UnoCSS 一样的样式重置。

使用 not 实用程序撤销

not-prose 应用于元素以撤销排版样式。例如,<table class="not-prose"> 将跳过此预设对 table 元素的样式(注意:not 实用程序只能在类中使用,因为它仅用于 CSS 选择器,UnoCSS 不扫描)

兼容性选项

此预设使用一些不支持的伪类,但您可以禁用它们。(#2064

  • 如果您启用 noColonNotnoColonWherenot-prose 将不可用。
  • 如果您启用 noColonIs,Attributify 模式将出现错误行为。

实用程序

规则此规则的样式
prose请参阅 GitHub 上的代码

颜色

规则(颜色)
prose-rose
prose-pink
prose-fuchsia
prose-purple
prose-violet
prose-indigo
prose-blue
prose-sky
prose-cyan
prose-teal
prose-emerald
prose-green
prose-lime
prose-yellow
prose-amber
prose-orange
prose-red
prose-gray
prose-slate
prose-zinc
prose-neutral
prose-stone

选项

此预设具有 selectorNamecssExtend 配置,供希望覆盖或扩展的用户使用。

提示

传递给 cssExtend 的 CSS 声明将

  • 覆盖内置样式(如果值冲突),否则
  • 合并到内置样式中。

selectorName

  • 类型: string
  • 默认值: prose

用于排版实用程序的类名。要撤销元素的样式,请使用它,例如 not-${selectorName},默认情况下为 not-prose

提示

not 实用程序仅在类中可用。

cssExtend

  • 类型: Record<string, CSSObject>
  • 默认值: undefined

使用 CSS 声明块扩展或覆盖 CSS 选择器。

compatibility

  • 类型: TypographyCompatibilityOptions
  • 默认值: undefined

请参阅 兼容性选项

警告

请注意,这会影响某些功能。

ts
interface TypographyCompatibilityOptions {
  noColonWhere?: boolean
  noColonIs?: boolean
  noColonNot?: boolean
}

示例

uno.config.ts
ts
import { presetTypography } from '@unocss/preset-typography'
import { defineConfig, presetAttributify, presetUno } from 'unocss'

export default defineConfig({
  presets: [
    presetAttributify(), // required if using attributify mode
    presetUno(), // required
    presetTypography({
      selectorName: 'markdown', // now use like `markdown markdown-gray`, `not-markdown`
      // cssExtend is an object with CSS selector as key and
      // CSS declaration block as value like writing normal CSS.
      cssExtend: {
        'code': {
          color: '#8b5cf6',
        },
        'a:hover': {
          color: '#f43f5e',
        },
        'a:visited': {
          color: '#14b8a6',
        },
      },
    }),
  ],
})

致谢

在 MIT 许可下发布。