【unocss】自用

unocss中文官网1

不知道简写的可以在这里查

第一步

js 复制代码
npm install -D unocss

第二步

js 复制代码
// vite.config.ts
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [UnoCSS()]
})
js 复制代码
// main.ts
import 'virtual:uno.css'

第三步

在原子css的默认预设中,默认单位为rem,且1rem = 4px

所以如果想要默认单位为 px,需要如下设置

js 复制代码
npm i @unocss/preset-rem-to-px -D
js 复制代码
// unocss.config.js
import { defineConfig, presetAttributify, presetUno } from 'unocss'
import presetRemToPx from '@unocss/preset-rem-to-px'

export default defineConfig({
  presets: [
    presetUno(),
    presetAttributify(),
    presetRemToPx({
      baseFontSize: 4,
    }),
  ],
})

注释:

presetAttributify 的作用是支持属性的写法。

例如,可以用下面的方式替代全部写在class=" "里的方式

html 复制代码
<button
      flex
      justify-center
      items-center
      text-14
      cursor-pointer
      select-none
      px-15
      py-8
      border-rd-4
      border-none
      box-border
      color="#9b1fb9"
      bg="#409eff"
      m-auto
      hover="bg-#67c23a"
      transition="duration-.3s"
    >
	button
</button>

第四步

可以自己加一些预设,例如下面的 rules

js 复制代码
// uno.config.ts
import { defineConfig, presetAttributify, presetUno } from "unocss";
import presetRemToPx from "@unocss/preset-rem-to-px";

export default defineConfig({
  // ...UnoCSS options
  presets: [
    presetUno(),
    presetAttributify(),
    presetRemToPx({
      baseFontSize: 4,
    }),
  ],
  rules: [
    // [/^m-([\.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
    [/^lines-(\d+)$/, ([_, lines]) => ({
      'overflow': 'hidden',
      'text-overflow': 'ellipsis', // 文本溢出时显示省略号
      'display': '-webkit-box',
      "-webkit-box-orient": 'vertical', 
      '-webkit-line-clamp': lines, // 使用捕获组中的数字来设置行数
    })],
    [
      'p-c', // 使用时只需要写 p-c 即可应用该组样式
       {
         position: 'absolute',
         top: '50%',
         left: '50%',
         transform: `translate(-50%, -50%)`
       }
   	],
  ],
  
});

用了插件才知道,原来上面的预设也是没必要的

相关推荐
梦65021 小时前
Vue 单页面应用 (SPA) 与 多页面应用 (MPA) 对比
前端·javascript·vue.js
清铎21 小时前
大模型训练_week3_day15_Llama概念_《穷途末路》
前端·javascript·人工智能·深度学习·自然语言处理·easyui
岛泪1 天前
把 el-cascader 的 options 平铺为一维数组(只要叶子节点)
前端·javascript·vue.js
Kiyra1 天前
阅读 Netty 源码关于 NioEventLoop 和 Channel 初始化部分的思考
运维·服务器·前端
冰暮流星1 天前
javascript的switch语句介绍
java·前端·javascript
做科研的周师兄1 天前
【MATLAB 实战】|多波段栅格数据提取部分波段均值——批量处理(NoData 修正 + 地理信息保真)_后附完整代码
前端·算法·机器学习·matlab·均值算法·分类·数据挖掘
da_vinci_x1 天前
图标量产:从“手绘地狱”到“风格克隆”?Style Reference 的工业化实战
前端·游戏·ui·prompt·aigc·设计师·游戏美术
利刃大大1 天前
【ES6】变量与常量 && 模板字符串 && 对象 && 解构赋值 && 箭头函数 && 数组 && 扩展运算符 && Promise/Await/Async
开发语言·前端·javascript·es6
天若有情6731 天前
ES6 模块与 CommonJS 的区别详解
前端·javascript·es6
大猫会长1 天前
postgreSQL中,RLS的using与with check
开发语言·前端·javascript