unocss在vue-cli中的使用

unocss+webpack

安装

pnpm i unocss @unocss/webpack -D

配置vue.config.js

const UnoCSS = require("@unocss/webpack").default
module.exports = defineConfig({
	configureWebpack: {
    resolve: {
      alias: {
        "@": path.resolve(__dirname, "src/"),
      },
    },
    //
    plugins: [UnoCSS()],
    optimization: {
      // unocss
      realContentHash: true,
    },
  },
})

main.js引入uno.css

如果报错Can't resolve uno.css,卸载上面的依赖,再重新装试试

import "uno.css"

配置uno.config.js

预设

presetUno的预设是继承于@unocss/preset-wind and @unocss/preset-mini.支持流行的css框架如Tailwind CSS, Windi CSS, Bootstrap, Tachyons的样式写法,如ml-3,ms-2,mt-10px,ma4

.ma4 { margin: 1rem; }
.ml-3 { margin-left: 0.75rem; }
.ms-2 { margin-inline-start: 0.5rem; }
.mt-10px { margin-top: 10px; }
import { defineConfig, presetUno,transformerVariantGroup } from "unocss"

export default defineConfig({
  // ...UnoCSS options
  presets: [presetUno()],
  // hover:text-white等
  transformers: [transformerVariantGroup()],
})

坑一:@apply指令

@unocss/transformer-directives只在vite工程中起作用,在webpack包括vue-cli在要使用@unocss/postcss地址

  1. 安装 @unocss/postcss
pnpm add -D @unocss/postcss
  1. 配置postcss.config.cjs
// postcss.config.cjs
module.exports = {
  plugins: {
    '@unocss/postcss': {},
  },
}
  1. 在需要使用 @apply 指令的地方,引入@unocss;
<style>
@unocss;
.test {
  @apply p-40px;
}
</style>

图标配置

  1. 安装@@iconify/json,可以使用iconfify图标
  2. 自定义图标集,包括mask模式(可以着色)和background-image模式(不能改变颜色)的图标,需要配置
//  uno.config.ts
import { defineConfig, presetUno, transformerVariantGroup, presetIcons } from "unocss"
import { FileSystemIconLoader } from "@iconify/utils/lib/loader/node-loaders"

export default defineConfig({
  // ...UnoCSS options
  presets: [
    presetUno(),
    presetIcons({
      prefix: "i-",
      // icon的样式
      extraProperties: {
        display: "inline-block",
        "vertical-align": "middle",
        width: "1em",
        height: "1em",
      },
      // icon的集合,每次新增图标都需要重启项目
      //  <i class="i-icon-xxx"></i> 可着色图标,mask模式
      //  <i class="i-origin-xxx"></i> 原先svg图标,background-image模式
      collections: {
        icon: FileSystemIconLoader("./src/assets/svgs", svg =>
          svg.replace(/fill="([^"]*)"/, 'fill="currentColor"'),
        ),
        "icon-color": FileSystemIconLoader("./src/assets/svgs"),
      },
      // mode: "mask", // mask 可以使用color改变颜色,根据是否有currentColor属性决定使用mask,或者background-image模式
    }),
  ],
  transformers: [transformerVariantGroup()],
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值