Skip to content

排版预设

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

Source Code(源代码)

安装

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";

使用

js
// uno.config.ts
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 只能作为类使用,不能作为属性使用

Highlights

任何字体大小

为您喜欢的正文应用任何字体大小 prose 将缩放相应 HTML 元素的样式。 例如,prose text-lg 具有正文字体 1.125rem 大小,h1 将按该大小缩放 2.25 倍。查看 所有支持的 HTML 元素。

任何颜色

通过 prose-${colorName} 使用 UnoCSS 应用任何颜色(例如 prose-coolgrayprose-sky ), 因为 prose 默认情况下没有任何颜色 。查看 所有可用颜色. 例如, prose prose-truegray 将为各自的HTML元素使用各自的颜色。

具有单一实用程序的深色模式

Apply typographic dark mode with prose-invert (background color needs to be handled by users). For instance, prose dark:prose-invert will use the inverted colors in the dark mode.

你自己的风格

Styles of elements not within prose will stay the same. No style resetting just like UnoCSS.

Undo with not utility

Apply not-prose to the elements to undo the typographic styles. For instance, <table class="not-prose"> will skip the styles by this preset for the table element (NOTE: not utility is only usable in class since it is only used in CSS selector & not scanned by UnoCSS).

Compatibility options

This preset uses some pseudo-classes which are not widely supported, but you can disable them. (#2064)

  • If you enable noColonNot or noColonWhere, not-prose will be unavailable.
  • If you enable noColonIs, attributify mode will have a wrong behavior.

Utilities

RuleStyles by this rule
proseSee on GitHub.

Colors

Rules (color)
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

Options

This preset has selectorName and cssExtend configurations for users who like to override or extend.

TIP

The CSS declarations passed to cssExtend will

  • override the built-in styles if the values are conflicting, else
  • be merged deeply with built-in styles.

selectorName

  • Type: string
  • Default: prose

The class name to use the typographic utilities. To undo the styles to the elements, use it like not-${selectorName} which is by default not-prose.

TIP

not utility is only available in class.

cssExtend

  • Type: Record<string, CSSObject>
  • Default: undefined

Extend or override CSS selectors with CSS declaration block.

compatibility

  • Type: TypographyCompatibilityOptions
  • Default: undefined

See Compatibility options.

WARNING

Notice that it will affect some features.

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

Example

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

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",
        },
      },
    }),
  ],
});

Acknowledgement

基于 MIT 许可发布