WinDesign WinDesign
首页
设计语言
基础组件
三维集合
图表组件
主题方案
资源下载
生态产品
v2-4-38
  • v2-4-38
  • v2-4-9
  • v2-4-8
  • v2-4-7
  • v2-4-6
  • v2-4-5
  • v2-4-4
  • v2-4-37
  • v2-4-36
  • v2-4-35
  • v2-4-34
  • v2-4-33
  • v2-4-32
  • v2-4-31
  • v2-4-30
  • v2-4-3
  • v2-4-28
  • v2-4-27
  • v2-4-26
  • v2-4-25
  • v2-4-24
  • v2-4-23
  • v2-4-22
  • v2-4-21
  • v2-4-20
  • v2-4-2
  • v2-4-19
  • v2-4-18
  • v2-4-17
  • v2-4-16
  • v2-4-15
  • v2-4-14
  • v2-4-13
  • v2-4-12
  • v2-4-11
  • v2-4-10
  • v2-4-1
  • v2-4-0
  • v2-3-9
  • v2-3-8
  • v2-3-7
  • v2-3-6
  • v2-3-5
  • v2-3-4
  • v2-3-3
  • v2-3-2
  • v2-3-10
  • v2-3-1
  • v2-3-0
  • v2-2-9
  • v2-2-8
  • v2-2-7
  • v2-2-6
  • v2-2-5
  • v2-2-4
  • v2-2-3
  • v2-2-22
  • v2-2-21
  • v2-2-20
  • v2-2-2
  • v2-2-19
  • v2-2-18
  • v2-2-17
  • v2-2-16
  • v2-2-15
  • v2-2-14
  • v2-2-13
  • v2-2-12
  • v2-2-11
  • v2-2-10
  • v2-2-1
  • v2-2-0
  • v2-1-6
  • v2-1-5
  • v2-1-4
  • v2-1-3
  • v2-1-2
  • v2-1-1
  • v2-1-0
  • v2-0-8
  • v2-0-7
  • v2-0-6
  • v2-0-5
  • v2-0-4
  • v2-0-3
  • v2-0-2
  • v2-0-11
  • v2-0-10
  • v2-0-1
  • v2-0-0
  • v1-7-16
  • v1-7-15
首页
设计语言
基础组件
三维集合
图表组件
主题方案
资源下载
生态产品
v2-4-38
  • v2-4-38
  • v2-4-9
  • v2-4-8
  • v2-4-7
  • v2-4-6
  • v2-4-5
  • v2-4-4
  • v2-4-37
  • v2-4-36
  • v2-4-35
  • v2-4-34
  • v2-4-33
  • v2-4-32
  • v2-4-31
  • v2-4-30
  • v2-4-3
  • v2-4-28
  • v2-4-27
  • v2-4-26
  • v2-4-25
  • v2-4-24
  • v2-4-23
  • v2-4-22
  • v2-4-21
  • v2-4-20
  • v2-4-2
  • v2-4-19
  • v2-4-18
  • v2-4-17
  • v2-4-16
  • v2-4-15
  • v2-4-14
  • v2-4-13
  • v2-4-12
  • v2-4-11
  • v2-4-10
  • v2-4-1
  • v2-4-0
  • v2-3-9
  • v2-3-8
  • v2-3-7
  • v2-3-6
  • v2-3-5
  • v2-3-4
  • v2-3-3
  • v2-3-2
  • v2-3-10
  • v2-3-1
  • v2-3-0
  • v2-2-9
  • v2-2-8
  • v2-2-7
  • v2-2-6
  • v2-2-5
  • v2-2-4
  • v2-2-3
  • v2-2-22
  • v2-2-21
  • v2-2-20
  • v2-2-2
  • v2-2-19
  • v2-2-18
  • v2-2-17
  • v2-2-16
  • v2-2-15
  • v2-2-14
  • v2-2-13
  • v2-2-12
  • v2-2-11
  • v2-2-10
  • v2-2-1
  • v2-2-0
  • v2-1-6
  • v2-1-5
  • v2-1-4
  • v2-1-3
  • v2-1-2
  • v2-1-1
  • v2-1-0
  • v2-0-8
  • v2-0-7
  • v2-0-6
  • v2-0-5
  • v2-0-4
  • v2-0-3
  • v2-0-2
  • v2-0-11
  • v2-0-10
  • v2-0-1
  • v2-0-0
  • v1-7-16
  • v1-7-15
  • 开始

    • 介绍
    • 快速上手
    • 主题定制
    • 国际化(多语言) 🎉
    • 关于字号
    • 更新日志
    • 组件索引 🎉
    • 组件差异
    • WUED FE
  • 基础

    • 图标管理平台 🎉
    • Color 色彩
    • Color 色彩对比度
    • 内置过渡动画 🎉
    • Box 盒子
    • Typography 字体
    • 框架布局规范 🎉
    • 无障碍设计规范
    • 常用鼠标指针规范
    • 滚动条规范
    • 快捷键规范 🎉
    • UI 自动化测试 🎉
  • 通用

    • Avatar 头像
    • Button 按钮
    • Link 文字链接
    • Text 文本 🎉
    • Icon 通用图标
    • Iconx 业务图标
    • Iconi 行业标识
    • Layout 布局
    • Space 间距
  • 导航

    • Affix 固钉
    • Breadcrumb 面包屑
    • Dropdown 下拉菜单
    • Menu 菜单
    • Pagination 分页
    • Steps 步骤条
    • PageHeader 页头
  • 数据录入

    • Checkbox 多选框
    • Cascader 级联选择器
    • Color-picker 颜色选择器
    • Time-picker 时间选择器
    • Date-picker 日期选择器
    • Date-time-picker 日期时间选择器
    • Time-picker-pro 🎉
    • Date-picker-pro 🎉
    • Date-time-picker-pro 🎉
    • Form 表单
    • Input 输入框
    • Input-number 数字输入框
    • Radio 单选按钮
    • Rate 评分
    • Select 选择器
    • Select 虚拟列表选择器 🎉
    • Table-select 下拉表格 🎉
    • Tree-select 选择器
    • Switch 开关
    • Slider 滑块
    • Transfer 穿梭框
    • Upload 上传
  • 数据展示

    • Badge 徽标
    • Empty 空状态(支持换肤)
    • Descriptions 描述列表
    • Result 结果
    • Progress 进度条
    • Popover 弹出框
    • Seamless-scroll 无缝滚动
    • Status 状态
    • Statistic 统计数值
    • Table 表格
    • Table-v2 虚拟化表格 🎉
    • Virtual-list 虚拟列表 🎉
    • Tabs 标签页
    • Tag 标签
    • Timeline 时间轴
    • Tooltip 文字提示
    • Tree 树
    • List 列表
    • Tour 漫游式引导
  • 反馈

    • Alert 警告
    • Drawer 抽屉
      • Loading 加载
      • Message 全局提示
      • Message-box 弹框
      • Modal 对话框
      • Notification 通知
      • Popconfirm 气泡确认框
      • Skeleton 骨架屏
    • 其他

      • Anchor 锚点
      • Back-top 回到顶部
      • Card 卡片
      • Collapse 折叠面板
      • Collapse-trigger 折叠触发器
      • Carousel 走马灯
      • Calendar 日历
      • Calendar-plus 日历
      • Divider 分割线
      • Image 图片
      • Infinite-scroll 无限滚动
      • Title 标题
      • Watermark 水印
    • 迁移

      • 从WinDesign 1.x迁移

    # Drawer 抽屉

    # 代码演示

    基础用法

    drawer组件实际上是一个容器组件, 需要展示的内容, 全权由 slot 传入。

    报告问题

    查看代码

    <template>
      <div class="demo-wrapper">
        <w-button type="primary" @click="visible = true">open</w-button>
        <w-drawer
          :visible.sync="visible"
          title="Drawer的基础用法"
          @onClose="handleClose"
        >
          <div class="content-container">
            <!-- slot -->
            <ul>
              <li>点击触发按钮打开抽屉, 抽屉默认位置在左侧;</li>
              <li>默认点击遮罩部分或头部关闭按钮可以将抽屉关闭;</li>
              <li>
                通过
                <strong>slot</strong>
                的方式向抽屉传入需要展示的内容;
              </li>
            </ul>
          </div>
        </w-drawer>
      </div>
    </template>
    <script>
    export default {
      data () {
        return {
          visible: false
        }
      },
      methods: {
        handleClose () {
          this.visible = false
        }
      }
    }
    </script>
    <style scoped lang="scss">
    .drawer-demo {
      .content-container {
        width: 280px;
        padding-bottom: 20px;
        ul {
          list-style: none;
        }
        ul li {
          font-size: 14px;
          color: #666;
        }
        li + li {
          margin-top: 10px;
        }
      }
    }
    </style>

    底部插槽 👉 V2.4.26、V2.4.27

    通过 slot='footer' 插槽传入。通过 body-style 设置内容样式。

    报告问题

    查看代码

    <template>
      <div class="demo-wrapper">
        <w-button type="primary" @click="visible = true">open</w-button>
        <w-drawer
          :wrapper-closable="false"
          :body-style="{ display: 'flex', padding: '0 20px' }"
          :visible.sync="visible"
          title="Drawer的基础用法"
          @onClose="handleClose"
        >
          <div class="content-container">
            <!-- slot -->
            <ul>
              <li>点击触发按钮打开抽屉, 抽屉默认位置在左侧;</li>
              <li>默认点击遮罩部分或头部关闭按钮可以将抽屉关闭;</li>
              <li>
                通过
                <strong>slot</strong>
                的方式向抽屉传入需要展示的内容;
              </li>
            </ul>
          </div>
        </w-drawer>
      </div>
    </template>
    <script>
    export default {
      data () {
        return {
          visible: false
        }
      },
      methods: {
        handleClose () {
          this.visible = false
        }
      }
    }
    </script>
    <style scoped lang="scss">
    .drawer-demo {
      .content-container {
        width: 280px;
        padding-bottom: 20px;
        ul {
          list-style: none;
        }
        ul li {
          font-size: 14px;
          color: #666;
        }
        li + li {
          margin-top: 10px;
        }
      }
    }
    </style>

    多层嵌套

    拥有多层嵌套的方法。

    报告问题

    查看代码

    <template>
      <div class="demo-wrapper">
        <w-button type="primary" @click="drawer = true">open</w-button>
        <w-drawer
          title="我是外面的 Drawer"
          position="right"
          :visible.sync="drawer"
          size="40%"
        >
          <div>
            <w-button @click="innerDrawer = true">打开里面的!</w-button>
            <w-drawer
              position="right"
              title="我是里面的"
              :append-to-body="true"
              :before-close="handleClose"
              :visible.sync="innerDrawer"
            >
              <p>_(:зゝ∠)_</p>
            </w-drawer>
          </div>
        </w-drawer>
      </div>
    </template>
    <script>
    export default {
      data () {
        return {
          drawer: false,
          innerDrawer: false,
        }
      },
      methods: {
        handleClose(done) {
          this.$Confirm('还有未保存的工作哦确定关闭吗?')
            .then((_) => {
              done()
            })
            .catch((_) => {})
        }
      }
    }
    </script>
    <style scoped lang="scss">
    .drawer-demo {
      .w-drawer__body {
        margin: 0 16px;
      }
    }
    </style>

    选择位置

    抽屉是 fixed定位, 默认从视窗左侧打开, 可以通过改动 position属性, 传入 top /bottom / left / right来指定抽屉的位置。

    报告问题

    查看代码

    <template>
      <div class="demo-wrapper">
        <w-radio-group v-model="position">
          <w-radio label="top">top</w-radio>
          <w-radio label="right">right</w-radio>
          <w-radio label="bottom">bottom</w-radio>
          <w-radio label="left">left</w-radio>
        </w-radio-group>
        <w-button type="primary" @click="visible = true">open</w-button>
        <w-drawer
          :direction="position"
          :visible.sync="visible"
          :title="`Drawer的位置 position = '${position}'`"
          @onClose="handleClose"
        >
          <div class="content-container">
            <!-- slot -->
            <ul>
              <li>抽屉默认出现的位置在左侧, 即 position = "left";</li>
              <li>position的其他可选值为: "right", "top", "bottom";</li>
              <li>更多参数请查看参数配置说明;</li>
            </ul>
          </div>
        </w-drawer>
      </div>
    </template>
    <script>
    export default {
      data () {
        return {
          position: 'left',
          visible: false
        }
      },
      methods: {
        handleClose () {
          this.visible = false
        }
      }
    }
    </script>
    <style scoped lang="scss">
      .drawer-demo {
        .content-container {
          .w-drawer--left,
          .w-drawer--right {
            .content-container {
              width: 320px;
            }
          }
          ul li {
              font-size: 14px;
              color: #666;
          }
          li + li {
              margin-top: 10px;
          }
        }
      }
    </style>

    关闭拦截

    beforeClose参数,用于拦截关闭抽屉的动作,可以用于处理一些在关闭之前需要处理的事件。

    报告问题

    查看代码

    <template>
      <div class="demo-wrapper">
        <w-button type="primary" @click="visible = true">open</w-button>
        <w-drawer
          title="Drawer的基础用法"
          :visible.sync="visible"
          :before-close="beforeCloseHandler"
        >
          <div class="content-container">
            <!-- slot -->
            <ul>
              <li>点击触发按钮打开抽屉, 抽屉默认位置在左侧;</li>
              <li>默认点击遮罩部分关闭抽屉;</li>
              <li>
                通过
                <strong>slot</strong>
                的方式向抽屉传入需要展示的内容;
              </li>
            </ul>
          </div>
        </w-drawer>
      </div>
    </template>
    <script>
    export default {
      data () {
        return {
          visible: false
        }
      },
      methods: {
        beforeCloseHandler (done) {
          this.$Confirm('是否确认关闭 drawer?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }).then(() => {
            done()
          }).catch(() => {
            this.$Message({
              type: 'info',
              message: '已取消操作'
            })
          })
        }
      }
    }
    </script>
    <style scoped lang="scss">
    .drawer-demo {
      .content-container {
        width: 280px;
        padding-bottom: 20px;
        ul {
          list-style: none;
        }
        ul li {
          font-size: 14px;
          color: #666;
        }
        li + li {
          margin-top: 10px;
        }
      }
    }
    </style>

    # API

    # Attributes

    参数 说明 类型 可选值 默认值 Version
    before-close 关闭之前的回调, 会拦截抽屉的关闭操作 Function Function (done) {}, 确认关闭时,调用 done 即可 — v1.6.0
    close-on-click-modal 是否可以点击遮罩关闭 drawer, 默认可以 Boolean — true v1.4.13
    drawer-class 为 drawer 组件添加 class String — —
    custom-class * 同 drawer-class String — — v2.0.0
    destroy-on-close 是否在关闭 drawer 时摧毁子元素 Boolean — false v1.6.0
    modal 是否显示遮罩, 默认显示 Boolean — true v1.4.13
    modal-append-to-body 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Drawer 的父元素上 Boolean — true
    position 抽屉出现的位置 String 'top' | 'right' | 'bottom' | 'left' 'left'
    direction * 同 position String 'top' | 'right' | 'bottom' | 'left' 'left' v2.0.0
    visible 抽屉的显示与隐藏控制参数,是否显示 Drawer,v1.4.13 以上版本支持 .sync 修饰符 Boolean — false
    size drawer 窗口内容的大小,当抽屉方向为left, right时,size 限制窗体宽度,当抽屉方向为top, bottom时,size 限制的是窗体的高度。 string — 320px v1.6.0
    append-to-body Drawer 自身是否插入至body元素上。 Boolean — false v2.0.0
    close-on-press-escape 是否可以通过按下 ESC 关闭 Drawer Boolean — true v2.0.0
    title Drawer 的标题, 也可以用具名的 slot 传入 String — — v2.0.0
    wrapper-closable 点击遮罩层是否可以关闭 Drawer Boolean — true v2.0.0
    with-header 控制是否显示 header 栏 Boolean — true v2.0.0
    body-style 设置 body 的样式 object — {} V2.4.27

    # Methods

    参数 说明 回调参数 Version
    handleCloseDrawer 关闭 drawer(before-close 仍有效) — v1.6.0

    # Events

    参数 说明 回调参数 Version
    onClose 关闭 drawer 时触发 —
    close * 同 onClose — v2.0.0
    onOpen 打开 drawer 时触发 —
    open * 同 onOpen — v2.0.0
    opened Drawer 打开动画结束时的回调 — v2.0.0
    closed Drawer 关闭动画结束时的回调 — v2.0.0

    # Drawer Slots

    name 说明 Version
    — Drawer 主体内容
    title Drawer 标题 v2.0.0
    footer Drawer 底部 v2.4.26
    上次更新: 9/23/2024, 3:34:20 PM

    ← Alert 警告 Loading 加载 →