如何在vue中使用unocss以及基本使用方法

 更新时间:2023年07月04日 11:34:18   作者:头发掉完就不学了  
这篇文章主要给大家介绍了关于如何在vue中使用unocss以及基本使用方法的相关资料,unocss是一个即时的原子CSS引擎,它可以让你用简短的类名来控制元素的样式,而不需要写复杂的CSS代码,需要的朋友可以参考下

什么是unocss?

unocss是一个即时的原子CSS引擎,它可以让你用简短的类名来控制元素的样式,而不需要写复杂的CSS代码。

unocss的优点

  • 它可以让你快速地开发和原型设计,而不需要考虑CSS的细节。
  • 它可以让你的CSS文件更小,因为它只生成你用到的工具类。
  • 它可以让你的CSS更一致,因为它遵循一套预设的规则和变量。
  • 它可以让你的CSS更灵活,因为它支持自定义工具类,变体,指令和图标。
  • 它可以让你的CSS更易于维护,因为它避免了样式冲突和重复代码。

安装unocss

pnpm add -D unocss
// or
yarn add -D unocss
// or
npm install -D unocss

在打包工具配置文件中配置插件

vite配置

// vite.config.ts
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'
export default defineConfig({
  plugins: [
    UnoCSS(),
  ],
})

在webpack5中配置

// webpack.config.js
const UnoCSS = require('@unocss/webpack').default
module.exports = {
  plugins: [
    UnoCSS(),
  ],
  optimization: {
    realContentHash: true,
  },
}

在webopack4中配置

// webpack.config.js
const UnoCSS = require('@unocss/webpack').default
module.exports = {
  plugins: [
    UnoCSS(),
  ],
  css: {
    extract: {
      filename: '[name].[hash:9].css',
    },
  },
}

创建一个`uno.config.ts 配置文件

// uno.config.ts
import { defineConfig } from 'unocss'
export default defineConfig({
  // ...UnoCSS options
})

在main.ts中使用

// main.ts
import 'virtual:uno.css'

安装vscode插件unocss

如图所示

在settings.json中配置,这里的作用是写css的时候带智能提示

 "editor.quickSuggestions": {
    "strings": true,
    "other": true,
    "comments": true,
  },

配置完后如下图

查询交互式文档

刚开始入手的小白怎么办,咱啥也母鸡啊,那就查看unocss的交互式文档

在其中输入属性获取类名。如图所示

基本用法(以下都是一些常用例子,并不代表只有这些)

unocss支持用预设单位,也可以自定义单位,例如

.px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.px-10rpx {
  padding-left: 10rpx;
  padding-right: 10rpx;
}

padding相关用法

.p-t-1 {
  padding-top: 0.25rem;
}
.p-b-1 {
  padding-bottom: 0.25rem;
}
.p-l-1 {
  padding-left: 0.25rem;
}
.p-r-1 {
  padding-right: 0.25rem;
}
.p-1 {
  padding: 10px;
}
.px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

magin相关用法

margin和padding用法一模一样

例如:

.mx-1 {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}
.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}

flex相关用法

用法大同小异,下面是部分常用例子

.flex {
  display: flex;
}
.flex-1 {
  flex: 1 1 0%;
}
.items-center {
  align-items: center;
}
.justify-center {
  justify-content: center;
}

文本相关用法

.color-#999 {
  --un-text-opacity: 1;
  color: rgba(153, 153, 153, var(--un-text-opacity));
}
.text-12px {
  font-size: 12px;
}
.break-all {
  word-break: break-all;
}

配置用法

静态规则配置

export default defineConfig({
 rules: [
   ['m-1', { margin: '0.3rem' }]
 ]
})

如上配置之后,在css中检测到m-1就会编译成

.m-1 { margin: 0.3rem; }

动态规则

export default defineConfig({
  rules: [
    /** match[1]代表获取到的值 */
    [/^m-(\d+)$/, match => ({ margin: `${+match[1] * 10}px` })],
    [/^p-(\d+)$/, match => ({ padding: `${+match[1] * 10}px` })],
  ]
})

这样就可以修改unocss预设的大小,例如m-1会编译成

 .m-1 { margin: 10px; }

快捷方式

在vscode中我们都会有用到快捷键一键生成代码,unocss也不例外,假如你有个盒子,里面的内容需要垂直居中,那么就可以定义为

export default defineConfig({
  shortcuts: [
   'flex-center': 'flex items-center justify-center',
  ]
})

动态快捷方式

export default defineConfig({
 shortcuts: [
    [/^base-border-(.*)$/, match => `border-1 border-style-dashed border-${match[1]}`],
  ]
})

编译结果

.base-border-red {
  border-width: 1px;
  --un-border-opacity: 1;
  border-color: rgba(248, 113, 113, var(--un-border-opacity));
  border-style: dashed;
}

总结

unocss刚上手可能有点不习惯,写多了再加上unocss的插件有语法智能提示,能使我们工作效率大大提高,接下来就是unocss熟练度的问题了。加油,看这篇文章的陌生人。

相关文章

  • 基于Vue3实现扫码枪扫码并生成二维码实例代码

    基于Vue3实现扫码枪扫码并生成二维码实例代码

    vue3生成二维码的方式有很多种,下面这篇文章主要给大家介绍了关于如何基于Vue3实现扫码枪扫码并生成二维码的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • vue中使用Cesium加载shp文件、wms服务、WMTS服务问题

    vue中使用Cesium加载shp文件、wms服务、WMTS服务问题

    这篇文章主要介绍了vue中使用Cesium加载shp文件、wms服务、WMTS服务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Vue中Vue-Baidu-Map基本使用方法实例

    Vue中Vue-Baidu-Map基本使用方法实例

    最近有一个项目需要用到地图来展示位置并进行数据交互,用vue-baidu-map实现出来,下面这篇文章主要给大家介绍了关于Vue中Vue-Baidu-Map基本使用的相关资料,需要的朋友可以参考下
    2023-03-03
  • vue项目前端埋点的实现

    vue项目前端埋点的实现

    这篇文章主要介绍了vue项目前端埋点的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Vue Baidu Map之自定义点图标bm-marker的示例

    Vue Baidu Map之自定义点图标bm-marker的示例

    这篇文章主要介绍了Vue Baidu Map之自定义点图标bm-marker,文中给大家介绍了vue-baidu-api地图标记点(自定义标记图标),设置标记点的优先级问题,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Vue脚手架安装时遇到的无法安装问题详解

    Vue脚手架安装时遇到的无法安装问题详解

    开发中遇到bug是在正常不过了,而程序也基本都是bug堆里爬出来的,下面这篇文章主要给大家介绍了关于Vue脚手架安装时遇到的无法安装问题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • vue实现后台管理权限系统及顶栏三级菜单显示功能

    vue实现后台管理权限系统及顶栏三级菜单显示功能

    这篇文章主要介绍了vue实现后台管理权限系统及顶栏三级菜单显示功能,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 使用element组件table表格实现某条件下复选框无法勾选

    使用element组件table表格实现某条件下复选框无法勾选

    这篇文章主要介绍了使用element组件table表格实现某条件下复选框无法勾选问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue3项目如何使用样式穿透修改elementUI默认样式

    vue3项目如何使用样式穿透修改elementUI默认样式

    这篇文章主要介绍了vue3项目使用样式穿透修改elementUI默认样式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • vue结合element-ui使用示例

    vue结合element-ui使用示例

    这一篇主要是创建一个vue项目并结合饿了么框架element-ui的文章。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01

最新评论