- Fast: No overhead or attached window event listeners, uses pure CSS for resizing.
- Compatible: Works great in IE9, and even loads in IE8 with polyfills. Early Firefox/Chrome/Safari/Opera supported too.
npm:
$ npm install --save vue2-split
// using ES6 modules
import Vue2Split from 'vue2-split'
Vue.use(Vue2Split)A split with two elements, starting at 25% and 75% wide.
<split style="height: 500px;">
<split-area :size="25">
panel left
</split-area>
<split-area>
panel right
</split-area>
</split>A split with three elements, starting with even widths with 100px, 100px and 300px minimum widths, respectively.
<split style="height: 500px;">
<split-area :size="33" :minSize="100">
panel left
</split-area>
<split-area :size="33" :minSize="100">
panel center
</split-area>
<split-area :size="33" :minSize="300">
panel right
</split-area>
</split>A vertical split with two elements.
<split style="height: 500px;" :direction="vertical">
<split-area>
panel left
</split-area>
<split-area>
panel center
</split-area>
</split>A Setting the gutter size to 20px.
<split style="height: 500px;" :gutterSize="20">
<split-area>
panel left
</split-area>
<split-area>
panel center
</split-area>
</split>Callbacks that can be added on drag (fired continously), drag start and drag end. If doing more than basic operations in onDrag, add a debounce function to rate limit the callback.
<split style="height: 500px;" @onDragEnd="onDragEnd" @onDragStart="onDragStart" onDrag="onDrag">
<split-area>
panel left
</split-area>
<split-area>
panel center
</split-area>
</split>methods: {
onDragStart (size) {
console.log('Drag Start', size) // callback existing size
},
onDrag (size) {
console.log('on Drag', size) // callback new size
},
onDragEnd (size) {
console.log('Drag End', size) // callback new size
}
}
A Reset the panel and get new sizes
<split style="height: 500px;" ref="mySplit">
<split-area>
panel left
</split-area>
<split-area>
panel center
</split-area>
</split>methods: {
Reset () {
console.log(this.$refs.mySplit.reset())
}
getSizes () {
console.log(this.$refs.mySplit.getSizes())
}
}
| Property | Type | Default | Description |
|---|---|---|---|
gutterSize |
Number | 10 | Gutter size in pixels. |
direction |
String | 'horizontal' | Direction to split: horizontal or vertical. |
| Event Name | Description | Return Value |
|---|---|---|
onDrag |
Callback on drag. | current size |
onDragStart |
Callback on drag start. | new size |
onDragEnd |
Callback on drag end. | new size |
| Method Name | Description | Arguments |
|---|---|---|
reset |
Reset panel. | none |
| Property | Type | Default | Description |
|---|---|---|---|
sizes |
Array | Initial sizes of each element in percents or CSS values. | |
minSize |
Number or Array | 100 | Minimum size of each element. |
vue2-split does not set CSS beyond the minimum needed to manage the width or height of the elements.
This library uses split.js. These features are supported in the following browsers:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|---|
| 22+ ✔ | 6+ ✔ | 9+ ✔ | 15+ ✔ | 6.2+ ✔ | Sponsored ✔ |
This project is licensed under the MIT License - see the LICENSE.md file for details





