Element Plus 中 el-row 和 el-col 的完整使用指南**


一、基础概念(必须先懂)

组件 作用 类比
el-row 行容器(类似 flex 容器) <div class="row">
el-col 列容器(flex 子项) <div class="col">

✅ 本质是 24 分栏的网格系统


二、基础布局(最简单的 3 列)

vue 复制代码
<template>
  <el-row>
    <el-col :span="8">A (8/24)</el-col>
    <el-col :span="8">B (8/24)</el-col>
    <el-col :span="8">C (8/24)</el-col>
  </el-row>
</template>

📊 效果:

复制代码
[   A   ][   B   ][   C   ]

三、el-col 的核心属性

✅ 1. span(宽度)

vue 复制代码
<el-col :span="12">占一半 (12/24)</el-col>
<el-col :span="6">占 1/4 (6/24)</el-col>
<el-col :span="24">占满</el-col>

✅ 2. offset(偏移)

vue 复制代码
<el-row>
  <el-col :span="6">A</el-col>
  <el-col :span="6" :offset="6">B(向右偏移 6 列)</el-col>
</el-row>

📊 效果:

复制代码
[A][   空白   ][B]

✅ 3. push / pull(排序)

vue 复制代码
<el-row>
  <el-col :span="9" :push="15">A(被推到右边)</el-col>
  <el-col :span="9" :pull="9">B(被拉到左边)</el-col>
</el-row>

四、el-row 的核心属性

✅ 1. gutter(列间距)

vue 复制代码
<el-row :gutter="20">
  <el-col :span="8">A</el-col>
  <el-col :span="8">B</el-col>
  <el-col :span="8">C</el-col>
</el-row>

📊 效果:每个 col 之间 20px 间距


✅ 2. justify(水平对齐)

vue 复制代码
<el-row justify="center">  <!-- 居中 -->
<el-row justify="space-between">  <!-- 两端对齐 -->
<el-row justify="space-around">  <!-- 两侧留白 -->

✅ 3. align(垂直对齐)

vue 复制代码
<el-row align="middle">  <!-- 垂直居中 -->
<el-row align="bottom">  <!-- 底部对齐 -->

五、响应式布局(最重要)

✅ 1. 多断点配置

vue 复制代码
<el-row>
  <el-col
    :xs="24"   /* <768px 时占满 */
    :sm="12"   /* ≥768px 时占一半 */
    :md="8"    /* ≥992px 时占 1/3 */
    :lg="6"    /* ≥1200px 时占 1/4 */
    :xl="4"    /* ≥1920px 时占 1/6 */
  >
    响应式列
  </el-col>
</el-row>

✅ 2. 断点对应表

断点 宽度 适用设备
xs <768px 手机
sm ≥768px 平板
md ≥992px 桌面
lg ≥1200px 大屏
xl ≥1920px 超宽屏

六、实战示例(企业级布局)

✅ 示例 1:后台管理系统布局

vue 复制代码
<template>
  <el-row>
    <!-- 侧边栏 -->
    <el-col :span="4">
      <Sidebar />
    </el-col>
    
    <!-- 主内容 -->
    <el-col :span="20">
      <el-row>
        <el-col :span="24">
          <Header />
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <router-view />
        </el-col>
      </el-row>
    </el-col>
  </el-row>
</template>

✅ 示例 2:数据看板卡片

vue 复制代码
<template>
  <el-row :gutter="20">
    <el-col :xs="24" :sm="12" :md="8" :lg="6">
      <el-card>用户数</el-card>
    </el-col>
    <el-col :xs="24" :sm="12" :md="8" :lg="6">
      <el-card>交易额</el-card>
    </el-col>
    <el-col :xs="24" :sm="12" :md="8" :lg="6">
      <el-card>增长率</el-card>
    </el-col>
  </el-row>
</template>

📱 手机:1 列

📱 平板:2 列

💻 桌面:3 列

🖥️ 大屏:4 列


✅ 示例 3:表单布局

vue 复制代码
<template>
  <el-form>
    <el-row :gutter="20">
      <!-- 姓名 -->
      <el-col :span="12">
        <el-form-item label="姓">
          <el-input />
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="名">
          <el-input />
        </el-form-item>
      </el-col>
    </el-row>
    
    <!-- 地址 -->
    <el-row :gutter="20">
      <el-col :span="8">
        <el-form-item label="省">
          <el-select />
        </el-form-item>
      </el-col>
      <el-col :span="8">
        <el-form-item label="市">
          <el-select />
        </el-form-item>
      </el-col>
      <el-col :span="8">
        <el-form-item label="区">
          <el-select />
        </el-form-item>
      </el-col>
    </el-row>
  </el-form>
</template>

七、嵌套 el-row(复杂布局)

vue 复制代码
<template>
  <el-row>
    <el-col :span="12">
      <!-- 内部再分两列 -->
      <el-row>
        <el-col :span="12">A1</el-col>
        <el-col :span="12">A2</el-col>
      </el-row>
    </el-col>
    <el-col :span="12">B</el-col>
  </el-row>
</template>

八、常见问题(避坑)

❌ 1. 忘记加 el-row

vue 复制代码
<!-- 错误 -->
<el-col :span="12">A</el-col>
<el-col :span="12">B</el-col>

<!-- 正确 -->
<el-row>
  <el-col :span="12">A</el-col>
  <el-col :span="12">B</el-col>
</el-row>

❌ 2. span 总和超过 24

vue 复制代码
<el-row>
  <el-col :span="12">A</el-col>
  <el-col :span="12">B</el-col>
  <el-col :span="12">C</el-col>  <!-- 会换行 -->
</el-row>

❌ 3. 响应式断点顺序

vue 复制代码
<!-- 错误 -->
<el-col :lg="6" :xs="24"></el-col>

<!-- 正确(从小到大) -->
<el-col :xs="24" :lg="6"></el-col>

九、高级技巧

✅ 1. 动态 span

vue 复制代码
<template>
  <el-row>
    <el-col :span="dynamicSpan">动态宽度</el-col>
  </el-row>
</template>

<script setup>
import { ref } from 'vue'
const dynamicSpan = ref(12)
</script>

✅ 2. 隐藏列

vue 复制代码
<el-col :xs="0" :sm="6">手机上隐藏</el-col>

十、一句话总结

✅ el-row 是行,el-col 是列

✅ 24 分栏,span 控制宽度

✅ xs/sm/md/lg/xl 实现响应式

✅ gutter 控制间距


相关推荐
可乐鸡翅yeah_36 分钟前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说40 分钟前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
Ai-_Man2 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
liangshanbo12153 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once4 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
默_笙5 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript
Dovis(誓平步青云)6 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
xieter7 小时前
【技术精选】TypeScript 高级类型体操:条件类型与模板字面量深度剖析 (2026-10-06)
javascript
ss2737 小时前
AI全栈实战 | 3.3-02 Python 并发:有 GIL 为什么还用多线程,asyncio 和 JS 事件循环同源不同味
开发语言·javascript·python
CappuccinoRose8 小时前
输入事件进阶
前端·javascript·输入事件