1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import {
- defineConfig,
- presetAttributify,
- presetTypography,
- presetUno,
- presetWebFonts,
- } from 'unocss'
- import presetIcons from '@unocss/preset-icons'
- import presetRemToPx from '@unocss/preset-rem-to-px'
- import transformerVariantGroup from '@unocss/transformer-variant-group'
- import transformerDirectives from '@unocss/transformer-directives'
- export default defineConfig({
- // ...UnoCSS options
- presets: [
- // 此预设尝试提供流行的实用程序优先框架的通用超集,包括 Tailwind CSS、Windi CSS、Bootstrap、Tachyons 等
- presetUno(),
- // 模板使用 viewport 作为移动端适配方案,unocss 默认单位为 rem
- // 所以需要转成 px,然后由 postcss 把 px 转成 vw/vh,完成适配
- // https://unocss.dev/presets/rem-to-px
- presetRemToPx({
- // default
- baseFontSize: 16,
- }),
- // 图标预设: https://unocss.dev/presets/icons
- presetIcons({
- // cdn: 'https://esm.sh/',
- extraProperties: {
- 'display': 'inline-block',
- 'vertical-align': 'middle',
- },
- }),
- // 属性模式(在 class 属性过多的情况下优先使用属性模式,否则将会变得难以维护)
- // https://unocss.dev/presets/attributify#attributify-mode
- presetAttributify(),
- // https://unocss.dev/presets/typography#usage
- presetTypography(),
- // 网络字体预设:https://unocss.dev/presets/web-fonts
- presetWebFonts({
- // 默认字体提供商 https://unocss.dev/presets/web-fonts#providers
- provider: 'google',
- // https://unocss.dev/presets/web-fonts#example
- fonts: {
- mono: ['Fira Code'],
- },
- }),
- ],
- transformers: [
- // 启用 Windi CSS for UnoCSS 的变体组功能(就是简写,具体看链接): https://unocss.dev/transformers/variant-group#usage
- transformerVariantGroup(),
- // 在样式类里你也可以写原子化 css 具体看链接: https://unocss.dev/transformers/directives#usage
- // Unknown at rule @apply: https://github.com/unocss/unocss/issues/2401
- transformerDirectives(),
- ],
- // 一些实用的自定义组合
- shortcuts: {
- 'm-0-auto': 'm-0 ma', // margin: 0 auto
- 'wh-full': 'w-full h-full', // width: 100%, height: 100%
- 'flex-center': 'flex justify-center items-center', // flex布局居中
- 'flex-x-center': 'flex justify-center', // flex布局:主轴居中
- 'flex-y-center': 'flex items-center', // flex布局:交叉轴居中
- 'text-overflow': 'overflow-hidden whitespace-nowrap text-ellipsis', // 文本溢出显示省略号
- 'text-break': 'whitespace-normal break-all break-words', // 文本溢出换行
- },
- // 由于 UnoCSS 在构建时工作,这意味着只会生成静态呈现的 icon 并将其发送到你的组件中
- // 通过模板字符串 :class="menu.meta?.icon" 来动态生成 CSS 类名。
- // 这个类名是在运行时计算的,UnoCSS 在构建时无法知道 menu.meta?.icon 的具体值,
- // 因此无法生成对应的 CSS。为了解决这个问题,你可以使用 UnoCSS 的 safelist 选项来指定一些始终需要生成的 CSS 类。
- // https://unocss.dev/guide/advanced#safelist
- safelist: [
- 'i-simple-icons:atlassian',
- 'i-simple-icons:soundcharts',
- 'i-simple-icons:docsify',
- 'i-material-symbols:award-star',
- ],
- })
|