程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入手

  • 基础组件

  • 表单组件

  • 数据展示组件

  • 反馈组件

  • 导航组件

  • 其他组件

    • 对话框组件 (Dialog)
    • 文字提示组件 (Tooltip)
    • 弹出框组件 (Popover)
    • 气泡确认框组件 (Popconfirm)
    • 卡片组件 (Card)
    • 走马灯组件 (Carousel)
    • 折叠面板组件 (Collapse)
    • 时间线组件 (Timeline)
    • 分割线组件 (Divider)
    • 日历组件 (Calendar)
    • 图片组件 (Image)
    • 回到顶部组件 (Backtop)
    • 无限滚动 (InfiniteScroll)
    • 无限滚动 (vue-infinite-loading)
    • 抽屉组件 (Drawer)
      • 1. 基本用法
        • Drawer 属性
        • Drawer 方法
        • Drawer 事件
        • Drawer 插槽
      • 2. Drawer 常用示例
        • 不同方向的 Drawer
        • 自定义大小的 Drawer
        • 使用 before-close 进行确认关闭
      • 3. 总结
  • Element-UI
  • 其他组件
scholar
2024-08-12
目录

抽屉组件 (Drawer)

# 抽屉组件 (Drawer)

Element-UI 的 Drawer 组件用于在屏幕一侧弹出一个可滑动的面板,可以在其中展示信息、表单或其他内容,适合需要更大空间或与主页面区隔的场景。

提示

Drawer 组件官方文档:https://element.eleme.cn/#/zh-CN/component/drawer (opens new window)

# 1. 基本用法

基本语法:使用 <el-drawer> 标签定义抽屉,设置 visible 属性控制其显示,title 属性定义标题,通过 slot 可以自定义内容。

<template>
  <div>
    <el-button type="primary" @click="drawer = true">打开 Drawer</el-button>
    <el-drawer title="示例 Drawer" :visible.sync="drawer" :size="size" direction="rtl" @close="handleClose">
      <span>这里是 Drawer 的内容</span>
      <el-button type="primary" @click="drawer = false">关闭</el-button>
    </el-drawer>
  </div>
</template>

<script>
export default {
  data() {
    return {
      drawer: false, // 控制 Drawer 的显示与隐藏
      size: '30%' // 控制 Drawer 的大小
    };
  },
  methods: {
    handleClose() {
      console.log('Drawer 关闭了');
    }
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  • visible 绑定:通过 visible 属性与组件的 v-model 进行绑定,控制 Drawer 的显示与隐藏。
  • 方向设置:使用 direction 属性控制 Drawer 的打开方向,可以选择 rtl、ltr、ttb 和 btt。

# Drawer 属性

参数 说明 类型 可选值 默认值
append-to-body Drawer 自身是否插入至 body 元素上。嵌套的 Drawer 必须指定该属性并赋值为 true boolean — false
before-close 关闭前的回调,会暂停 Drawer 的关闭,回调函数接受一个 done 参数,用于在回调中手动关闭 Drawer function(done: Function) — —
close-on-press-escape 是否可以通过按下 ESC 关闭 Drawer boolean — true
custom-class Drawer 的自定义类名 string — —
destroy-on-close 控制是否在关闭 Drawer 之后将子元素全部销毁 boolean — false
modal 是否需要遮罩层 boolean — true
modal-append-to-body 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Drawer 的父元素上 boolean — true
direction Drawer 打开的方向 string rtl / ltr / ttb / btt rtl
show-close 是否显示关闭按钮 boolean — true
size Drawer 窗体的大小,支持像素值或百分比 number / string — '30%'
title Drawer 的标题,可以通过 slot 自定义 string — —
visible 是否显示 Drawer,支持 .sync 修饰符 boolean — false
wrapperClosable 点击遮罩层是否可以关闭 Drawer boolean — true
withHeader 控制是否显示 header 栏,若为 false,则 title 属性和 title slot 均不生效 boolean — true

# Drawer 方法

方法名 说明 参数
closeDrawer 用于关闭 Drawer,并调用 before-close 方法 —

# Drawer 事件

事件名称 说明 回调参数
open Drawer 打开的回调 —
opened Drawer 打开动画结束时的回调 —
close Drawer 关闭的回调 —
closed Drawer 关闭动画结束时的回调 —

# Drawer 插槽

名称 说明
— Drawer 的内容
title Drawer 标题区的内容

# 2. Drawer 常用示例

# 不同方向的 Drawer

通过 direction 属性,可以让 Drawer 从不同方向滑入。

<template>
  <div>
    <el-button @click="drawer = true">从右侧打开</el-button>
    <el-drawer :visible.sync="drawer" title="从右侧打开" direction="rtl">
      <p>这是一个从右侧滑出的 Drawer</p>
    </el-drawer>
    <el-button @click="drawerLeft = true">从左侧打开</el-button>
    <el-drawer :visible.sync="drawerLeft" title="从左侧打开" direction="ltr">
      <p>这是一个从左侧滑出的 Drawer</p>
    </el-drawer>
  </div>
</template>

<script>
export default {
  data() {
    return {
      drawer: false, // 控制从右侧打开的 Drawer
      drawerLeft: false // 控制从左侧打开的 Drawer
    };
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 自定义大小的 Drawer

使用 size 属性可以自定义 Drawer 的宽度或高度。

<template>
  <div>
    <el-button @click="drawer = true">自定义大小的 Drawer</el-button>
    <el-drawer :visible.sync="drawer" title="自定义大小" :size="'50%'" direction="rtl">
      <p>这是一个宽度为 50% 的 Drawer</p>
    </el-drawer>
  </div>
</template>

<script>
export default {
  data() {
    return {
      drawer: false // 控制 Drawer 的显示与隐藏
    };
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 使用 before-close 进行确认关闭

通过 before-close 属性可以在关闭 Drawer 之前进行一些操作,比如用户确认。

<template>
  <div>
    <el-button @click="drawer = true">带关闭确认的 Drawer</el-button>
    <el-drawer :visible.sync="drawer" title="关闭前确认" :before-close="beforeClose">
      <p>关闭前会进行确认</p>
    </el-drawer>
  </div>
</template>

<script>
export default {
  data() {
    return {
      drawer: false // 控制 Drawer 的显示与隐藏
    };
  },
  methods: {
    beforeClose(done) {
      this.$confirm('确定关闭吗?').then(() => {
        done(); // 调用 done 方法以关闭 Drawer
      });
    }
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 3. 总结

  1. 灵活的布局:通过 direction 和 size 属性,可以实现从任意方向滑出的 Drawer,并自定义其大小。
  2. 高级的交互:before-close 属性允许你在关闭 Drawer 前执行确认操作,使交互更友好。
  3. 丰富的事件和插槽:通过内置的事件和插槽,开发者可以灵活定制 Drawer 的行为和内容。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
无限滚动 (vue-infinite-loading)

← 无限滚动 (vue-infinite-loading)

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式