vue-css-grid v1.0.1
vue-css-grid 
Components for easier grid CSS layouts in Vue
Important! Version 0.1.1 users
Breaking changes on this new version:
- All components names were changed to follow the rules of style guide.
- The usage of the
responsivecomponent (nowviewport-listener), changed from listening to events to av-modelapproach (see details below).
Installation
npm install --save vue-css-gridSetup
import Vue from 'vue'
import { CssGrid, CssGridItem, ViewportListener } from 'vue-css-grid'
// Your main grid component, it declares the layout
Vue.component('css-grid', CssGrid)
// A grid item to use inside the grid component
Vue.component('css-grid-item', CssGridItem)
// Optional component to listen to viewport width and height changes
Vue.component('viewport-listener', ViewportListener)Examples and usage
You can clone this project, install all dev dependencies with npm install and then npm run dev to see a live running example with responsive breakpoints.
For usage reference you can also check directly Example.vue and MainContent.vue components.
Component's props and events
<css-grid>
A component to define the grid properties. It should contain css-grid-item components directly in the first level.
Props
columns
Array of strings that defines the number of columns and their size. You can use any combination of css sizing rules like
20px,1fr,20%orauto.rows
Array of strings that defines the number of rows and their size. Also you can use any combination of css sizing rules.
areas
A matrix of strings with dimensions
rows x columns. It defines the areas that will fill each cell of the grid.htmlTag: default 'div'
String that defines the type of html node that the grid component should be.
gap
Defines the gutter between
grid-items, can be either one value (10px) or two (5px 10px) for horizontal and vertical gutter.autoRows
Useful to define the size of rows when the number of
grid-itemscan be larger than the defined grid, causing more rows than expected. This is just a shorthand for the CSS grid propertygrid-auto-rows, so you can use any of the allowed strings.autoColumns
Similar to gridAutoRows but for columns. Also a shorthand for the CSS grid property
grid-auto-columns, so you can use any of the allowed strings.inline: default false
Boolean to define if the
displayproperty should beinline-gridinstead of justgrid.
<css-grid-item>
Component to define the area of the grid to be used. It must be directly inside a css-grid component.
You can add another css-grid component inside the css-grid-item to create more complex layouts nesting grids.
Props
area
A string that matches one of the areas defined in the grid component
html-tag
By default the
css-grid-itemwill create a<div>, with this property you can define the HTML element.x
endX | width
When not using the
areaproperty, you can define thegrid-column-startwithx, and either useendXto declare where the item ends, orwidthto declare the number of columns the item should cover.y
endY | height
Similarly you can use
y,endYorheightto define the row position of the gridItem. Remember that if an area is already defined, this will not work.
<viewport-listener>
A component that just adds functionality (won't render anything), it emits an object with viewport data, that you can use with v-model.
Viewport v-model object properties
width: Number
When the viewport width changes, this property will have the current value.
height: Number
When the viewport height changes, this property will have the current value.
isPhone: Boolean
True when
viewport.width < 768isTablet: Boolean
True when
768 <= viewport.width < 992isDesktop: Boolean
True when
992 <= viewport.width < 1200isLargeDesktop: Boolean
True when
viewport.width >= 1200