一个 Vue3 的侧滑组件
- Vue.js 3.x
- Less
npm i @hyjiacan/vue-slideout@3
或
yarn add @hyjiacan/vue-slideout@3
你若想要兼容 Vue.js 2.x,那么使用版本 @hyjiacan/vue-slideout@2
。
可以通过以下方式获取最新代码:
git clone https://github.com/hyjiacan/vue-slideout.git
或 下载归档
与 node 环境一样, 此时会暴露一个全局 Slideout
。
使用最新版本
<script src="https://cdn.jsdelivr.net/npm/@hyjiacan/vue-slideout/dist/slideout.umd.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hyjiacan/vue-slideout/dist/slideout.css"/>
使用指定版本
<script src="https://cdn.jsdelivr.net/npm/@hyjiacan/vue-slideout@<VERSION>/dist/slideout.umd.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hyjiacan/vue-slideout@<VERSION>/dist/slideout.css"/>
unpkg 也可以使用: 替换 cdn.jsdelivr.net 为 unpkg.com 可以通过替换 slideout.umd.min.js 为 slideout.umd.js 使用未被压缩的文件来
main.js
import Vue from 'vue'
import Slideout from '@hyjiacan/vue-slideout'
import '@hyjiacan/vue-slideout/dist/slideout.css'
// 引入 Slideout 组件,并设置组件默认值
Vue.use(Slideout, {
// 在此处填写默认的属性值
})
Foobar.vue
<template>
<slideout @closing="onClosing" v-model="visible" title="The title">
<div>content</div>
</slideout>
</template>
<script>
import Slideout from '@hyjiacan/vue-slideout'
import '@hyjiacan/vue-slideout/dist/slideout.css'
export default {
name: 'Foobar',
components: { Slideout },
data () {
return {
visible: false
}
},
methods: {
onClosing (e) {
// 阻止关闭,等待同步或异步的操作
e.pause = true
// 3秒后关闭slide
setTimeout(() => {
// 设置 close 为 true 以关闭,设置为 false 为什么也不做保持打开状态
e.resume = true
}, 3000)
}
}
}
</script>
- 更多的用法,参见 http://hyjiacan.gitee.io/vue-slideout
- API文档参见 API.zh-CN.md
马上到 CodePen
yarn
# 启动服务器
yarn serve
# 构建仓库
yarn release
情景:当指定了属性 offset
,size
的高度参数为 0
(自动适应高度), 并且 dock=left/right
时, 内容太高会导致溢出(无滚动条)。
解决方案:显式地给内容指定最大高度为确定的值(注意,不要超出可见区域),如:
<slide-out dock="left" :size="[300, 0]" offset="100px">
<div style="max-height: 540px;overflow: auto">
<!-- contents -->
</div>
</slide-out>
其中的 max-height: 540px;overflow: auto
即可解决此问题。
max-height
可以通过 js 计算得到。
注意: 可能还需要考虑监听
window.resize
事件,以适应浏览器大小的变化。