今天介紹最後三個使用機會較低的 UnoCSS 官方 Presets,其他的社群貢獻 Presets 可以在 官方 Github 查看,有的可以支援 gradient, scrollbar...等特殊樣式、有些可以把其他 css 框架的擴充套件移植過來(例如:Flowbite、TailwindForms)。
前面介紹 Content 這個 Nuxt 的 CMS 套件時有提到 prose
這個單詞,表示使用 Markdown 這類語法對應的HTML 基礎標籤,preset-typography 就是用來設定這些基礎標籤樣式的擴充功能。
npm i -D @unocss/preset-typography
修改 UnoCSS 的 config,加入 preset-typography
import { defineConfig, presetTypography, presetUno } from 'unocss'
export default defineConfig({
presets: [
presetUno(), // required
presetTypography(),
],
})
會套用到 markdown 的標籤加上 prose
的 class name,例外的內容加上 not-prose
。
<article class="text-base prose prose-truegray xl:text-xl">
{{ markdown }}
<p class="not-prose">
some text
</p>
</article>
prose-${colorName}
更換顏色。prose dark:prose-invert
即可。text-${size}
即可。preset-tagify是把 class name 直接當做 tag name 來使用,適用一些樣式簡單明確的情形,例如警告文字可以使用 <text-red>Warning</text-red>
,實用性普通。
npm i -D @unocss/preset-tagify
修改 UnoCSS 的 config,加入 preset-tagify
import presetTagify from '@unocss/preset-tagify'
Unocss({
presets: [
presetTagify({ /* options */ }),
// ...other presets
],
})
如同前面的說明,就是把單一個 class name 直接當成 tag name 來撰寫,官方範例如下:
<span class="text-red"> red text </span>
<div class="flex"> flexbox </div>
I'm feeling <span class="i-line-md-emoji-grin"></span> today!
<text-red> red text </text-red>
<flex> flexbox </flex>
I'm feeling <i-line-md-emoji-grin /> today!
顧名思義,把所有 rem 值自動換算成固定的 px 值,一般狀況下不太會用到。
npm i -D @unocss/preset-rem-to-px
修改 UnoCSS 的 config,加入 preset-rem-to-px
import presetUno from '@unocss/preset-uno'
import presetRemToPx from '@unocss/preset-rem-to-px'
Unocss({
presets: [
presetUno(),
presetRemToPx()
],
})
沒有什麼特別的使用法,只要是帶有尺寸數值的 class name 都會自動計算成 px 值,例如:
.m-2 {
margin: 0.5rem;
}
.m-2 {
margin: 8px;
}