Пресет типографики
Предоставляет набор классов prose, которые можно использовать для добавления типографских значений по умолчанию к обычному HTML.
Установка
pnpm add -D @unocss/preset-typographyyarn add -D @unocss/preset-typographynpm install -D @unocss/preset-typographybun add -D @unocss/preset-typographyTIP
Этот пресет включен в пакет unocss, вы также можете импортировать его оттуда:
import { presetTypography } from 'unocss'Использование
import {
defineConfig,
presetAttributify,
presetTypography,
presetWind3
} from 'unocss'
export default defineConfig({
presets: [
presetAttributify(), // требуется при использовании режима атрибутивности
presetWind3(), // требуется
presetTypography(),
],
})<article class="text-base prose prose-truegray xl:text-xl">
{{ markdown }}
<p class="not-prose">Некоторый текст</p>
</article><article text-base prose prose-truegray xl="text-xl">
{{ markdown }}
<p class="not-prose">Некоторый текст</p>
</article>WARNING
Обратите внимание: not-prose можно использовать только как класс, а не как атрибут.
Особенности
Любой размер шрифта
Применяйте любой размер шрифта для тела, и prose будет масштабировать стили для соответствующих HTML-элементов. Например, prose text-lg имеет размер шрифта тела 1.125rem, а h1 будет масштабироваться в 2.25 раза относительно этого размера. Смотрите все поддерживаемые HTML-элементы.
Любой цвет
Применяйте любой цвет с помощью prose-${colorName} от UnoCSS (например, prose-coolgray, prose-sky), так как 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)
- Если вы включите
noColonNotилиnoColonWhere,not-proseбудет недоступен. - Если вы включите
noColonIs, режим атрибутивности будет работать неправильно.
Утилиты
| Правило | Стили этого правила |
|---|---|
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 |
Параметры
Этот пресет имеет конфигурации selectorName и cssExtend для пользователей, которые хотят переопределить или расширить.
TIP
CSS-декларации, переданные в cssExtend, будут:
- переопределять встроенные стили, если значения конфликтуют, иначе
- глубоко объединяться со встроенными стилями.
selectorName
- Тип:
string - По умолчанию:
prose
Имя класса для использования типографских утилит. Чтобы отменить стили для элементов, используйте его как not-${selectorName}, что по умолчанию not-prose.
TIP
Утилита not доступна только в классе.
cssExtend
- Тип:
Record<string, CSSObject> - По умолчанию:
undefined
Расширение или переопределение CSS-селекторов блоком CSS-деклараций.
compatibility
- Тип:
TypographyCompatibilityOptions - По умолчанию:
undefined
Смотрите Параметры совместимости.
WARNING
Обратите внимание, что это повлияет на некоторые функции.
interface TypographyCompatibilityOptions {
noColonWhere?: boolean
noColonIs?: boolean
noColonNot?: boolean
}Пример
import { presetTypography } from '@unocss/preset-typography'
import { defineConfig, presetAttributify, presetWind3 } from 'unocss'
export default defineConfig({
presets: [
presetAttributify(), // требуется при использовании режима атрибутивности
presetWind3(), // требуется
presetTypography({
selectorName: 'markdown', // теперь используйте как `markdown markdown-gray`, `not-markdown`
// cssExtend - это объект с CSS-селектором в качестве ключа и
// блоком CSS-деклараций в качестве значения, как при написании обычного CSS.
cssExtend: {
'code': {
color: '#8b5cf6',
},
'a:hover': {
color: '#f43f5e',
},
'a:visited': {
color: '#14b8a6',
},
},
}),
],
})