Vue components for stack grid/waterfall/Pinterest type layouts. Inspired by react-stack-grid.
Coming soon. Please see react-stack-grid for an indication of the features.
NPM:
npm install --save vue-stack-grid
<template>
<div>
<stack :column-min-width="320" :gutter-width="8" :gutter-height="8">
<stack-item v-for="(item, i) in items" :key="i">
{{ item.someContent }}
</stack-item>
</stack>
</div>
</template>
<script>
import { Stack, StackItem } from 'vue-stack-grid';
export default {
components: { Stack, StackItem }
}
</script>
For animation, simply add style="transition: transform 300ms"
to the stack-item
s.
If images appear anywhere in the stack items, apply the monitor-images-loaded
prop to the stack
component.
Name | Type | Required | Default | Description |
---|---|---|---|---|
column-min-width |
Number | Yes | The minimum width of columns. If the columns do not fit into the container anymore, the number of columns is reduced. | |
gutter-width |
Number | No | 0 |
The space between columns in pixels. |
gutter-height |
Number | No | 0 |
The space between items in the same column. |
monitor-images-loaded |
Boolean | No | false |
If true, reflow once all images are loaded using vue-images-loaded. This is recommended if any of the stack items contain images, as the images might not be loaded yet when the initial positions and sizes are computed. |
Note that gutter-width
and gutter-height
can also be replaced by adding margin/padding to the stack items.
Clone the repository and run: npm run examples
- Handle adding/removing items.
- Add build system.
- Add demo.
- Please make feature requests if you have any!