一文搞懂 Tailwind CSS 弹性布局:从原理到实战

一文搞懂 Tailwind CSS 弹性布局:从原理到实战

本文结合 Tailwind CSS 的实战用法,系统讲解 Flexbox 弹性布局的全部核心属性和常见场景。适合有一定 CSS 基础、想快速上手 Tailwind 的前端开发者。

前言

很多同学学了 CSS 的 display: flex,但写布局时还是靠"试"------加一个属性试一下,不对再换。这篇文章的目标是:让你看完后,看到任何布局需求都能直接写出正确的 Flex 代码。

我们用 Tailwind CSS 来演示,因为它把所有 Flex 属性封装成了简洁的工具类,学起来更快、记得更牢。

📑 目录

  • [一、什么是 Tailwind CSS?](#一、什么是 Tailwind CSS? "#%E4%B8%80%E4%BB%80%E4%B9%88%E6%98%AF-tailwind-css")
  • 二、什么是弹性布局(Flexbox)?
  • 三、核心属性详解
    • [3.1 开启弹性布局](#3.1 开启弹性布局 "#31-%E5%BC%80%E5%90%AF%E5%BC%B9%E6%80%A7%E5%B8%83%E5%B1%80")
    • [3.2 主轴方向](#3.2 主轴方向 "#32-%E4%B8%BB%E8%BD%B4%E6%96%B9%E5%90%91flex-direction")
    • [3.3 主轴对齐](#3.3 主轴对齐 "#33-%E4%B8%BB%E8%BD%B4%E5%AF%B9%E9%BD%90justify-content")
    • [3.4 交叉轴对齐](#3.4 交叉轴对齐 "#34-%E4%BA%A4%E5%8F%89%E8%BD%B4%E5%AF%B9%E9%BD%90align-items")
    • [3.5 伸缩比](#3.5 伸缩比 "#35-%E4%BC%B8%E7%BC%A9%E6%AF%94flex-grow--flex-shrink")
    • [3.6 换行控制](#3.6 换行控制 "#36-%E6%8D%A2%E8%A1%8C%E6%8E%A7%E5%88%B6flex-wrap")
    • [3.7 排序控制](#3.7 排序控制 "#37-%E6%8E%92%E5%BA%8F%E6%8E%A7%E5%88%B6order")
    • [3.8 单项对齐覆盖](#3.8 单项对齐覆盖 "#38-%E5%8D%95%E9%A1%B9%E5%AF%B9%E9%BD%90%E8%A6%86%E7%9B%96align-self")
  • 四、实战场景汇总
  • 五、综合实战:响应式后台骨架
  • 六、速查口诀
  • 七、常见踩坑
  • [八、Flex vs Grid:怎么选?](#八、Flex vs Grid:怎么选? "#%E5%85%ABflex-vs-grid%E6%80%8E%E4%B9%88%E9%80%89")

一、什么是 Tailwind CSS?

1.1 原子化 CSS 的理念

Tailwind CSS 是一个 原子化 CSS(Utility-First)框架 。它不提供 .btn.card 这样的预制组件,而是提供大量细粒度的工具类:

html 复制代码
<!-- 传统框架思路 -->
<button class="btn btn-primary btn-lg">下载</button>

<!-- Tailwind 思路 -->
<button class="px-6 py-3 bg-blue-500 text-white rounded-lg hover:bg-blue-600">
  下载
</button>

1.2 为什么选 Tailwind?

对比维度 Bootstrap 等传统框架 Tailwind CSS
设计思路 提供预定义组件 提供原子化工具类
自定义成本 需要覆盖框架样式 直接组合,天然可定制
样式冲突 容易出现覆盖问题 不存在,每个类独立
包体积 引入整个框架 自动 tree-shake,只打包用到的类

一句话总结:Tailwind 不给你"成品零件",而是给你"螺丝、扳手、胶带"------你用它们拼出任何想要的 UI。

1.3 安装 Tailwind

bash 复制代码
# 安装
npm install -D tailwindcss
npx tailwindcss init

# 在 CSS 入口文件中引入
@tailwind base;
@tailwind components;
@tailwind utilities;

二、什么是弹性布局(Flexbox)?

2.1 一句话本质

弹性布局的核心:让父容器能"控制"其所有子元素在主轴上的排列方式,并允许子元素"伸缩"填满空间。

2.2 两条轴的思维模型

Flexbox 的所有行为都围绕两条轴展开:

markdown 复制代码
        交叉轴
          ↑
          |
 ┌────────┼────────────┐
 |        |            │
 |   ┌────┼───┐ ┌────┐ |
 |   │ 子1|   │ │ 子2| |  ← 主轴 (row)
 |   └────┼───┘ └────┘ |
 |        |            │
 └────────┼────────────┘
          ↓
概念 默认方向 可改为 对应属性
主轴 水平(左→右) 垂直(上→下) flex-direction
交叉轴 垂直(上→下) 水平(左→右) 自动与主轴垂直

💡 记住justify-* 管主轴,items-* 管交叉轴。这是最关键的区分。

2.3 两个角色

  • Flex 容器 (父):设置了 display: flex 的元素
  • Flex 项目(子):容器内的直接子元素(只对直接子元素生效!)

三、核心属性详解(Tailwind 写法)

3.1 开启弹性布局

在父容器上加 flex,即 display: flex

html 复制代码
<!-- 没有 flex:子元素从上到下排列(块级流) -->
<div class="bg-gray-100">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- 加了 flex:子元素默认从左到右排列 -->
<div class="flex bg-gray-100">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

3.2 主轴方向(flex-direction)

控制子元素是横着排 还是竖着排

Tailwind 类 CSS 属性 效果说明
flex-row(默认) flex-direction: row 左→右(水平主轴)
flex-row-reverse flex-direction: row-reverse 右→左
flex-col flex-direction: column 上→下(垂直主轴)
flex-col-reverse flex-direction: column-reverse 下→上

实战场景:移动端导航竖排,PC 端横排:

html 复制代码
<nav class="flex flex-col md:flex-row gap-4">
  <a href="#">首页</a>
  <a href="#">产品</a>
  <a href="#">关于</a>
</nav>

3.3 主轴对齐(justify-content)

控制子元素在主轴上的分布位置:

Tailwind 类 效果(水平举例) 视觉示意
justify-start(默认) 靠左对齐 │123_____│
justify-center 居中对齐 │___123__│
justify-end 靠右对齐 │_____123│
justify-between 两端对齐,中间等距 │1___2___3│
justify-around 每个元素两侧等距 │_1__2__3_│
justify-evenly 所有间距完全相等 │__1_2_3__│

🔥 justify-around vs justify-evenly 的区别around 是每个元素两侧各占一半间距(首尾有间距),evenly 是所有间距完全相等(包括首尾)。实际开发中 justify-between 最常用。
🔥 最常用 的是 justify-between,做导航栏、卡片头部非常好用。

代码示例(经典导航栏)

html 复制代码
<!-- Logo 在左,菜单在右 -->
<nav class="flex justify-between items-center p-4 bg-white shadow">
  <span class="text-xl font-bold">Logo</span>
  <div class="flex space-x-4">
    <a href="#">首页</a>
    <a href="#">关于</a>
  </div>
</nav>

3.4 交叉轴对齐(align-items)

控制子元素在交叉轴上的对齐方式(水平主轴时,交叉轴是上下方向):

Tailwind 类 效果说明
items-stretch(默认) 子元素拉伸填满父容器高度
items-start 顶部对齐
items-center 垂直居中(最常用)
items-end 底部对齐
items-baseline 按文字基线对齐

实战场景:按钮里的图标 + 文字垂直居中:

html 复制代码
<button class="flex items-center gap-2 px-4 py-2 bg-blue-500 text-white rounded">
  <svg><!-- 图标 --></svg>
  <span>下载</span>
</button>

3.5 伸缩比(flex-grow / flex-shrink)

这是弹性布局最"弹性"的地方------谁该变胖,谁该变瘦?

Tailwind 类 CSS 值 含义
flex-1 flex: 1 1 0% 能伸能缩,均分剩余空间
flex-auto flex: 1 1 auto 根据内容大小伸缩
flex-initial flex: 0 1 auto 可缩不可伸,保持默认大小
flex-none flex: 0 0 auto 固定大小,打死不变

经典三栏布局(两侧固定,中间自适应):

html 复制代码
<div class="flex h-32">
  <!-- 固定侧边栏 -->
  <div class="w-20 bg-red-200 flex-none">固定侧边栏</div>
  <!-- 中间自适应:填满剩余空间 -->
  <div class="flex-1 bg-blue-200">自适应内容区</div>
  <!-- 固定侧边栏 -->
  <div class="w-20 bg-green-200 flex-none">固定侧边栏</div>
</div>

💡 只要给中间加了 flex-1,无论窗口怎么拖拽,它都会自动撑满剩余空间。

3.6 换行控制(flex-wrap)

默认情况下,所有子元素会挤在一行。如果空间不够,需要手动控制换行:

Tailwind 类 效果
flex-nowrap(默认) 不换行,强行挤压
flex-wrap 换行,从上往下排
flex-wrap-reverse 换行,从下往上排

响应式卡片列表(PC 横排多个,手机自动换行):

html 复制代码
<div class="flex flex-wrap gap-4">
  <!-- 每个卡片 flex-1 保证至少 200px 宽,空间不够自动换行 -->
  <div class="flex-1 min-w-[200px] bg-white shadow p-4 rounded">商品卡片 1</div>
  <div class="flex-1 min-w-[200px] bg-white shadow p-4 rounded">商品卡片 2</div>
  <div class="flex-1 min-w-[200px] bg-white shadow p-4 rounded">商品卡片 3</div>
</div>

flex-wrap 配合 min-w-[200px],让卡片在空间不够时自动换行,完美替代复杂的 Grid 计算。

3.7 排序控制(order)

Flex 子项默认按 HTML 顺序排列。用 order 可以改变它们的视觉顺序(不影响 HTML 源码和屏幕阅读器)。

Tailwind 类 CSS 值 含义
order-first order: -9999 排到最前面
order-last order: 9999 排到最后面
order-none order: 0 恢复默认顺序
order-1 ~ order-12 order: 1 ~ order: 12 自定义排序,数字越小越靠前

实战场景 :移动端"内容优先"------HTML 先写内容再写侧边栏,PC 端通过 order 调换顺序:

html 复制代码
<div class="flex flex-col md:flex-row">
  <!-- 移动端先显示内容,PC 端排到右边 -->
  <main class="flex-1 order-2 md:order-1 p-4">主内容</main>
  <!-- 移动端排在上方,PC 端排到左边 -->
  <aside class="w-full md:w-64 order-1 md:order-2 p-4 bg-gray-100">侧边栏</aside>
</div>

💡 order 配合响应式前缀(md:order-*),可以轻松实现不同屏幕下的布局重排,而不用改动 HTML 结构。

3.8 单项对齐覆盖(align-self)

align-items 设置的是所有子项 的交叉轴对齐。如果某个子项需要单独的对齐方式,用 self-*

Tailwind 类 效果说明
self-auto 继承父容器的 align-items
self-start 单独顶部对齐
self-center 单独垂直居中
self-end 单独底部对齐
self-stretch 单独拉伸填满
self-baseline 单独按基线对齐

实战场景:表单中,标签顶部对齐,输入框居中:

html 复制代码
<div class="flex items-center gap-4 p-4">
  <label class="self-start pt-2">用户名</label>
  <input class="flex-1 border rounded px-3 py-2" type="text" placeholder="请输入">
  <button class="self-center px-4 py-2 bg-blue-500 text-white rounded">提交</button>
</div>

💡 self-*align-items 的"单兵覆盖"机制,适合容器中大部分子项对齐方式一致、但有个别例外的场景。


四、实战场景汇总

4.1 水平垂直居中(万能方案)

html 复制代码
<div class="flex justify-center items-center h-screen">
  <div class="bg-white p-8 rounded shadow">我居中了!</div>
</div>

justify-center(主轴居中)+ items-center(交叉轴居中)= 完美居中。

4.2 等分布局(三等分)

html 复制代码
<div class="flex">
  <div class="flex-1 p-4 bg-blue-100">1/3</div>
  <div class="flex-1 p-4 bg-blue-200">1/3</div>
  <div class="flex-1 p-4 bg-blue-300">1/3</div>
</div>

三个 flex-1 自动均分容器宽度。

4.3 固定 + 自适应(侧边栏布局)

html 复制代码
<div class="flex h-screen">
  <aside class="w-64 flex-none bg-gray-800 text-white p-4">侧边栏</aside>
  <main class="flex-1 p-4">主内容区,自动填满</main>
</div>

4.4 底部固定(Footer 沉底)

html 复制代码
<div class="flex flex-col min-h-screen">
  <header class="p-4 bg-white shadow">Header</header>
  <main class="flex-1 p-4">内容区域,自动撑开</main>
  <footer class="p-4 bg-gray-100">Footer 始终在底部</footer>
</div>

flex-col 纵向排列 + flex-1 给 main = Footer 自动沉底。

4.5 卡片内元素对齐

html 复制代码
<div class="flex items-center gap-4 p-4 bg-white rounded shadow">
  <!-- 头像用占位图,实际项目替换为真实图片 -->
  <img class="w-12 h-12 rounded-full" src="https://ui-avatars.com/api/?name=User" alt="头像">
  <div class="flex-1">
    <h3 class="font-bold">用户名</h3>
    <p class="text-gray-500 text-sm">这是一段描述文字</p>
  </div>
  <button class="px-4 py-2 bg-blue-500 text-white rounded">关注</button>
</div>

4.6 标签组 / Tag 列表(自动换行)

html 复制代码
<div class="flex flex-wrap gap-2">
  <span class="px-3 py-1 bg-blue-100 text-blue-700 rounded-full text-sm">JavaScript</span>
  <span class="px-3 py-1 bg-green-100 text-green-700 rounded-full text-sm">Tailwind CSS</span>
  <span class="px-3 py-1 bg-purple-100 text-purple-700 rounded-full text-sm">Flexbox</span>
  <span class="px-3 py-1 bg-yellow-100 text-yellow-700 rounded-full text-sm">前端开发</span>
  <span class="px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm">响应式设计</span>
</div>

五、综合实战:响应式后台骨架

下面这个案例串联了前文所有核心知识点:flexflex-colflex-rowflex-noneflex-1items-centerjustify-betweenself-*order、响应式前缀。

html 复制代码
<body class="flex flex-col min-h-screen bg-gray-50">

  <!-- 顶部导航:flex + justify-between + items-center -->
  <header class="flex justify-between items-center px-6 py-3 bg-white shadow">
    <span class="text-xl font-bold text-blue-600">Admin Panel</span>
    <nav class="hidden md:flex gap-4">
      <a href="#" class="text-gray-600 hover:text-blue-500">仪表盘</a>
      <a href="#" class="text-gray-600 hover:text-blue-500">用户管理</a>
      <a href="#" class="text-gray-600 hover:text-blue-500">设置</a>
    </nav>
    <div class="flex items-center gap-2">
      <img class="w-8 h-8 rounded-full" src="https://ui-avatars.com/api/?name=Admin" alt="头像">
      <span class="text-sm">Admin</span>
    </div>
  </header>

  <!-- 主体:flex-row(PC) / flex-col(移动端)-->
  <div class="flex flex-1 flex-col md:flex-row">

    <!-- 侧边栏:移动端 order-2(排到下面),PC 端 order-1 -->
    <aside class="w-full md:w-56 flex-none order-2 md:order-1 bg-gray-800 text-white p-4">
      <ul class="space-y-2">
        <li><a href="#" class="block px-3 py-2 rounded hover:bg-gray-700">📊 仪表盘</a></li>
        <li><a href="#" class="block px-3 py-2 rounded hover:bg-gray-700">👥 用户列表</a></li>
        <li><a href="#" class="block px-3 py-2 rounded hover:bg-gray-700">📝 内容管理</a></li>
        <li><a href="#" class="block px-3 py-2 rounded hover:bg-gray-700">⚙️ 系统设置</a></li>
      </ul>
    </aside>

    <!-- 内容区:flex-1 自适应,order-1(移动端优先显示) -->
    <main class="flex-1 order-1 md:order-2 p-6">
      <h1 class="text-2xl font-bold mb-4">仪表盘</h1>

      <!-- 统计卡片:flex-wrap + gap + flex-1 + min-w -->
      <div class="flex flex-wrap gap-4 mb-6">
        <div class="flex-1 min-w-[200px] bg-white p-4 rounded shadow">
          <p class="text-gray-500 text-sm">总用户</p>
          <p class="text-2xl font-bold">12,345</p>
        </div>
        <div class="flex-1 min-w-[200px] bg-white p-4 rounded shadow">
          <p class="text-gray-500 text-sm">今日活跃</p>
          <p class="text-2xl font-bold">1,234</p>
        </div>
        <div class="flex-1 min-w-[200px] bg-white p-4 rounded shadow">
          <p class="text-gray-500 text-sm">转化率</p>
          <p class="text-2xl font-bold">8.5%</p>
        </div>
      </div>

      <!-- 表格区域 -->
      <div class="bg-white rounded shadow p-4">
        <h2 class="font-bold mb-2">最近活动</h2>
        <p class="text-gray-400">暂无数据...</p>
      </div>
    </main>
  </div>

  <!-- 底部:flex-none 固定高度 -->
  <footer class="flex-none px-6 py-3 bg-white text-center text-gray-400 text-sm border-t">
    © 2026 Admin Panel. All rights reserved.
  </footer>

</body>

知识点串联说明

用到的 Tailwind 类 对应知识点 在哪里用的
flex flex-col min-h-screen 开启 Flex + 纵向排列 + Footer 沉底 <body>
flex justify-between items-center 主轴两端对齐 + 交叉轴居中 <header>
flex-none 固定大小不伸缩 侧边栏 w-56<footer>
flex-1 自适应填满剩余空间 <main>
flex-col md:flex-row 响应式方向切换 主体容器
order-1 md:order-2 响应式排序重排 内容区和侧边栏
flex flex-wrap gap-4 换行 + 间距 统计卡片容器
flex-1 min-w-[200px] 自适应 + 最小宽度 每个统计卡片

💡 从设计稿到代码的思维过程

  1. 先看整体结构 → 纵向三段(Header + 主体 + Footer)→ flex flex-col
  2. 再看主体 → 左右两栏 → flex-col md:flex-row
  3. 看导航栏 → Logo 左、菜单右 → justify-between items-center
  4. 看卡片 → 横排 + 自动换行 → flex flex-wrap + flex-1 min-w-[200px]
  5. 看响应式 → 移动端内容优先 → order-* + md:order-*

六、速查口诀(帮你记忆)

口诀 Tailwind 类 用途
父容器先写 flex flex 开启弹性布局模式
想横写 flex-row,想竖写 flex-col flex-row / flex-col 控制主轴方向
主轴上用 justify-* justify-between 控制左右/上下分布
交叉轴用 items-* items-center 控制垂直/水平对齐
某个子项要例外,用 self-* self-start / self-end 单项覆盖交叉轴对齐
想改顺序用 order-* order-first / order-last 改变视觉排列顺序
想占满空位,直接写 flex-1 flex-1 自动填满剩余空间
不想被挤压,立刻加 flex-none flex-none 固定大小不变
想换行,加 flex-wrap flex-wrap 空间不够时自动换行

七、常见踩坑

坑 1:flex-1flex-auto 的区别

  • flex-1flex: 1 1 0%):忽略内容大小,平均分配剩余空间
  • flex-autoflex: 1 1 auto):根据内容大小分配剩余空间
html 复制代码
<!-- flex-1:三个等宽(不管内容长短) -->
<div class="flex">
  <div class="flex-1 bg-blue-100">短</div>
  <div class="flex-1 bg-blue-200">这是一段很长很长的文字</div>
  <div class="flex-1 bg-blue-300">中等</div>
</div>

<!-- flex-auto:内容多的占更多空间 -->
<div class="flex">
  <div class="flex-auto bg-blue-100">短</div>
  <div class="flex-auto bg-blue-200">这是一段很长很长的文字</div>
  <div class="flex-auto bg-blue-300">中等</div>
</div>

坑 2:子元素不生效

Flex 属性只对直接子元素 生效。如果你的孙元素没反应,检查是不是多套了一层 div

html 复制代码
<!-- ❌ 错误:inner 的子元素不会参与 flex 布局 -->
<div class="flex">
  <div class="inner">
    <span>A</span>  <!-- 这个不会被 flex 控制 -->
  </div>
</div>

<!-- ✅ 正确:直接子元素才生效 -->
<div class="flex">
  <span>A</span>  <!-- 这个才会被 flex 控制 -->
  <span>B</span>
</div>

坑 3:gapspace-x 的选择

  • gap-4:Flex 容器上设置,所有子元素间距统一,首尾无多余间距(推荐)
  • space-x-4:通过 margin 实现,首尾会有多余间距
html 复制代码
<!-- 推荐:gap 首尾无多余间距 -->
<div class="flex gap-4">
  <div>A</div>
  <div>B</div>
  <div>C</div>
</div>

<!-- 不推荐:space-x 首尾有多余 margin -->
<div class="flex space-x-4">
  <div>A</div>
  <div>B</div>
  <div>C</div>
</div>

💡 gap 在 Flex 布局中已获得所有现代浏览器支持(Chrome 84+, Firefox 63+, Safari 14.1+),放心使用。

坑 4:items-stretch 导致高度异常

默认 items-stretch 会让子元素拉伸到容器高度。如果你的子元素高度莫名变大,试试加 items-start

html 复制代码
<!-- 子元素会被拉伸到容器高度 -->
<div class="flex h-32 bg-gray-100">
  <div class="bg-blue-200">我被拉高了!</div>
</div>

<!-- 加 items-start 恢复正常 -->
<div class="flex items-start h-32 bg-gray-100">
  <div class="bg-blue-200">我是正常高度</div>
</div>

坑 5:嵌套 Flex 容器

Flex 布局不会自动继承 。如果父容器是 flex,子容器的子元素不会自动参与 flex 排列------子容器自己也需要声明 flex

html 复制代码
<!-- ❌ 父容器是 flex,但孙元素不参与 -->
<div class="flex">
  <div>  <!-- 这层没声明 flex -->
    <span>A</span>  <!-- 不会被排列到一行 -->
    <span>B</span>
  </div>
</div>

<!-- ✅ 每层需要排列的容器都要声明 flex -->
<div class="flex">
  <div class="flex">  <!-- 子容器也要声明 -->
    <span>A</span>  <!-- 现在会排列到一行 -->
    <span>B</span>
  </div>
</div>

八、Flex vs Grid:怎么选?

场景 推荐 原因
导航栏、按钮组 Flex 一维排列,简单直接
两栏/三栏布局 Flex flex-1 非常方便
等高的卡片行 Flex items-stretch 天然等高
标签/Tag 列表 Flex flex-wrap 自动换行
复杂网格(瀑布流、棋盘) Grid 二维布局更直观
不规则布局 Grid 可以精确控制行列
等分多列 Grid grid-cols-3 比多个 flex-1 更简洁

经验法则一维布局优先考虑 Flex,二维或需要精确行列控制时用 Grid。 两者不冲突,实际项目中经常嵌套使用。

💡 在 Tailwind 中,Grid 的等分写法 grid grid-cols-3 gap-4 确实比 Flex 的三个 flex-1 更简洁。如果你的需求是"等宽 N 列",Grid 往往是更好的选择。


总结

弹性布局的核心就三句话:

  1. 父容器加 flex,开启布局
  2. justify-* 管主轴,items-* 管交叉轴,self-* 管单个
  3. flex-1 让子元素自动填满空间,flex-none 固定不动

掌握这三点,90% 的布局场景都能搞定。剩下的就是多写多练,形成肌肉记忆。


📌 参考资料


你在项目中遇到过哪些 Flex 布局的坑?欢迎评论区分享交流 👇

相关推荐
阳光是sunny1 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
小林ixn2 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
REDcker2 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
এ慕ོ冬℘゜3 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康3 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
一点一木4 小时前
从60首歌到1个网站:输入你的故事,还你一首歌
前端·github
IT_陈寒5 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
kyriewen5 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
小白巨白5 小时前
玫瑰花园管理系统:AI识病+3D可视化,一套面向中小型玫瑰种植园的数字化管理工具
css·人工智能·计算机视觉·html5