原子化CSS(Unocss)安装及使用

Unocss安装及使用

npm i -D unocss @unocss/preset-uno @unocss/preset-attributify @unocss/preset-icons

在 vite.config.ts 中使用

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
// 引入Unocss
import Unocss from "unocss/vite";
import { presetUno, presetAttributify, presetIcons } from "unocss";
export default defineConfig({
  plugins: [
    vue(),
    Unocss({
      // 使用Unocss
      presets: [presetUno(), presetAttributify(), presetIcons()],
    }),
  ],
});

在 main.ts 中引入 unocss

import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";
// 导入Unocss
import "uno.css";
createApp(App).mount("#app");

代码中具体使用

<template>
  <div class="text-25px text-#ff6700 bg-#ccc">你好Unocss</div>
</template>

图标库的具体使用

图标库, 你可以在里面看到大量的图标

安装图标库

pnpm i -D @iconify-json/logos

找到你喜欢的图标
例如:
在这里插入图片描述
选中你需要的图标,然后选中Unocss查看对应的class类名
在这里插入图片描述

代码中使用

<template>
  <div class="i-logos-atomic-icon w-50px h-50px"></div>
</template>

Unocss 也可以增加一些预设css配置

在vite.config.ts增加 rules 规则

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Unocss from 'unocss/vite';
import { presetUno, presetAttributify, presetIcons } from 'unocss'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    Unocss({
      presets: [
        presetUno(),
        presetAttributify(),
        presetIcons()
      ],
      rules: [ // 在这个可以增加预设规则, 也可以使用正则表达式
        [

          'p-c', // 使用时只需要写 p-c 即可应用该组样式
          {
            position: 'absolute',
            top: '50%',
            left: '50%',
            transform: `translate(-50%, -50%)`
          }
        ],
        [/^m-(\d+)$/, ([, d]) => ({ margin: `${d / 4}rem` })],
      ]
    })
  ]
})

vscode 插件选择-提供代码智能提示 – Unocss

<think>好的,用户现在问的是如何使用原子化CSS让div在同一行显示。首先,我需要回忆一下原子化CSS的基本概念,它通常指的是通过小而单一的类名来应用样式,比如Tailwind CSS这样的框架。用户可能是在使用类似Tailwind的工具,或者自己编写原子类。 用户的问题看起来是要将多个div元素水平排列在同一行。常见的解决方案包括使用flex布局、inline-block或者浮动。但需要结合原子化CSS的特点来回答。比如,在Tailwind中,flex布局对应的类是flex,而inline-block对应的类是inline-block。 接下来要考虑用户可能的场景。他们可能是在开发一个需要水平排列多个组件的页面,比如导航栏、按钮组或者图片列表。这时候,如果div默认是块级元素,会各自占据一行,导致垂直堆叠,不符合需求。用户需要知道如何快速应用原子类来改变这一行为。 另外,用户可能对原子化CSS的具体类名不太熟悉,或者不清楚不同方法之间的区别。需要解释每种方法的实现方式,并提供示例代码。比如,使用flex时,不仅要设置父容器为flex,还要处理子元素的对齐和间距。而使用inline-block时,要注意元素之间的空白间隙问题。 还需要考虑响应式设计,是否需要在不同屏幕尺寸下有不同的表现。比如,Tailwind中的响应式前缀可以用于调整布局。例如,md:flex可以在中等屏幕上启用flex布局。 可能用户遇到的另一个问题是子元素换行,特别是在容器宽度不足时。这时候可能需要添加flex-wrap类来控制换行行为,但用户的需求是保持在同一行,所以应该使用flex-nowrap或者省略相关类,保持默认不换行。 最后,要总结不同方法的适用场景,帮助用户根据具体情况选择最合适的方式。例如,flex布局适合需要对齐和分布空间的情况,inline-block适合简单排列,浮动可能用于旧项目维护,但新项目建议使用flex或grid。</think>### 解决方案:原子化CSS实现div同行排列 使用原子化CSS(如Tailwind/UnoCSS/WindiCSS)让多个`<div>`横向排列,主要通过 **控制display属性** 和 **处理元素间距** 实现,这里有3种典型方法: --- #### **方法一:Flex弹性布局(推荐)** ```html <!-- 父容器启用flex,子元素自动横向排列 --> <div class="flex gap-2"> <!-- gap控制子元素间距 --> <div>元素1</div> <div>元素2</div> <div>元素3</div> </div> ``` **关键原子类**: - `flex` → `display: flex` - `gap-{n}` → 子元素间距(如`gap-4`=1rem) --- #### **方法二:Inline-Block行内块** ```html <!-- 每个子div设置为行内块元素 --> <div class="space-x-2"> <!-- 横向间距 --> <div class="inline-block">元素1</div> <div class="inline-block">元素2</div> <div class="inline-block">元素3</div> </div> ``` **关键原子类**: - `inline-block` → `display: inline-block` - `space-x-{n}` → 横向间距(等同`margin-right`) --- #### **方法三:Float浮动(传统方式)** ```html <!-- 每个子元素左浮动,父容器需清除浮动 --> <div class="overflow-auto"> <!-- 清除浮动 --> <div class="float-left mr-2">元素1</div> <div class="float-left mr-2">元素2</div> <div class="float-left">元素3</div> </div> ``` **关键原子类**: - `float-left` → `float: left` - `mr-{n}` → `margin-right`间距 --- ### 效果对比演示 ``` 默认垂直排列: [div1] [div2] [div3] 使用后水平排列: [div1] [div2] [div3] ``` --- ### 原子类对照表 | CSS属性 | Tailwind类 | UnoCSS类 | |------------------|---------------------|-------------------| | `display: flex` | `flex` | `flex` | | `display: inline-block` | `inline-block` | `inline-block` | | `gap: 0.5rem` | `gap-2` | `gap-2` | | `float: left` | `float-left`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值