vue3+vite+ts使用daisyui/tailwindcss

vite创建vue3脚手架

npm init vite@latest myVue3 -- --template vue

cd .\myVue3\

npm i

npm run dev

安装tailwindcss/daisyui

依赖安装

npm install -D tailwindcss postcss autoprefixer daisyui

npx tailwindcss init -p

这条命令将生成postcss.config.js(因为加了-p)和tailwind.config.js用户将特定指令翻译为最终css或者加入daisyUI插件

:::

danger

可能出现的情况及解决方案

npm error could not determine executable to run

npm error A complete log of this run can be found in:

说明版本冲突,降低tailwind版本

npm install tailwindcss@3.3.3 -D

若还是不行请自行查找其对应关系

:::

修改配置

./src/style.css

javascript 复制代码
/* 全部替换或者添加 */
@tailwind base;
@tailwind components;
@tailwind utilities;

出现Unknown at rule @tailwindcss(unknownAtRules)

1、打开 vs code 设置;

2、搜索设置 css Unknown;

3、改成ignore;

./postcss.config.js

用于解析style.css文件的@tailwind指令

javascript 复制代码
export default {
  plugins: {
    // 这是专门处理Tailwind的工具
    // 你写的那些 class="bg-blue-500" 都要靠它来翻译成真正的CSS代码
    // 它会把Tailwind的魔法语法变成浏览器能看懂的东西
    tailwindcss: {},

    // 这是专门给CSS加"马甲"的工具
    // 比如你写 display:flex,它会自动帮你补全:
    // -webkit-flex (给老版Chrome用)
    // -moz-flex (给老版Firefox用)
    // 这样你的网站在各种浏览器都能正常显示
    autoprefixer: {},
  },
}

./tailwind.config.js

javascript 复制代码
/**
 * 这是Tailwind CSS的配置文件
 * 相当于你家的装修设计图
 * @type {import('tailwindcss').Config} <-- 这是TS类型提示,告诉编辑器这是Tailwind配置
 */
import daisyui from "daisyui"; // 把DaisyUI家具城搬进来

export default {
  // 告诉Tailwind去哪里找需要装修的房间(扫描哪些文件)
  content: [
    './index.html',          // 主卧室(入口文件)
    './src/**/*.{vue,js,ts,jsx,tsx}' // 所有其他房间(各种组件文件)
  ],
  
  // 装修风格定制(可以改颜色、间距等)
  theme: {
    extend: {}, // 这里空着表示用默认风格
  },

  // 请来的装修队(插件)
  plugins: [
    daisyui // 这是专门装DaisyUI家具的施工队
  ],
}

插件Tailwind CSS IntelliSense

测试样式

html 复制代码
<script setup lang="ts">
  const handleChangeTheme = () => {
    const html = document.getElementsByTagName('html')[0]
    const darkTheme = html.dataset.theme

    if (darkTheme === 'dark') {
      html.dataset.theme = 'light'
    } else {
      html.dataset.theme = 'dark'
    }
  }
</script>

<template>
  <div class="button-container flex justify-center my-10">
    <button class="btn">Button</button>
    <button class="btn btn-primary">Button</button>
    <button class="btn btn-secondary">Button</button>
    <button class="btn btn-accent">Button</button>
    <button class="btn btn-ghost">Button</button>
    <button class="btn btn-link">Button</button>
  </div>

  <div class="flex justify-center my-10">
    <label class="swap swap-rotate">
      <!-- this hidden checkbox controls the state -->
      <input type="checkbox" @click="handleChangeTheme" />

      <!-- sun icon -->
      <svg
        class="swap-on fill-current w-10 h-10"
        xmlns="http://www.w3.org/2000/svg"
        viewBox="0 0 24 24"
        >
        <path
          d="M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1,1,0,0,0,0-1.41l-.71-.71A1,1,0,0,0,4.93,6.34Zm12,.29a1,1,0,0,0,.7-.29l.71-.71a1,1,0,1,0-1.41-1.41L17,5.64a1,1,0,0,0,0,1.41A1,1,0,0,0,17.66,7.34ZM21,11H20a1,1,0,0,0,0,2h1a1,1,0,0,0,0-2Zm-9,8a1,1,0,0,0-1,1v1a1,1,0,0,0,2,0V20A1,1,0,0,0,12,19ZM18.36,17A1,1,0,0,0,17,18.36l.71.71a1,1,0,0,0,1.41,0,1,1,0,0,0,0-1.41ZM12,6.5A5.5,5.5,0,1,0,17.5,12,5.51,5.51,0,0,0,12,6.5Zm0,9A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z"
          />
      </svg>

      <!-- moon icon -->
      <svg
        class="swap-off fill-current w-10 h-10"
        xmlns="http://www.w3.org/2000/svg"
        viewBox="0 0 24 24"
        >
        <path
          d="M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z"
          />
      </svg>
    </label>
  </div>

  <div class="flex justify-center">
    <div class="alert alert-success shadow-lg w-96">
      <div>
        <svg
          xmlns="http://www.w3.org/2000/svg"
          class="stroke-current flex-shrink-0 h-6 w-6"
          fill="none"
          viewBox="0 0 24 24"
          >
          <path
            stroke-linecap="round"
            stroke-linejoin="round"
            stroke-width="2"
            d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
                    />
                </svg>
                <span>Your purchase has been confirmed!</span>
            </div>
        </div>
    </div>
</template>
 
<style scoped></style>

启动服务器

npm run dev

相关推荐
醉城夜风~27 分钟前
CSS元素显示模式(display)
前端·css
AI大模型-小华1 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子3 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅4 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni4 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学5 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端
赵庆明老师6 小时前
Vben精讲:21-详解web-antd:tsconfig.json
前端·json·vim
wc886 小时前
微软EDGE浏览器功能学习
前端·学习·edge
Csvn6 小时前
🎯 原生 `<dialog>` 元素:终于可以扔掉一半的自定义弹窗组件了?
前端