Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A draggable and resizable grid layout, for Vue.js.

License

NotificationsYou must be signed in to change notification settings

ponach/vue-grid-layout

 
 

Repository files navigation

vue-grid-layout is a grid layout system, likeGridster, for Vue.js.Heavily inspired inReact-Grid-Layout

Current version: 2.1.9 (Supports Vue 2.2+)

For Vue 2.1.10 and below use version2.1.3

For Vue 1 use version1.0.3


[Demo |Changelog]

Projects using vue-grid-layout

Know of others? Create a PR to let me know!

Features

  • Draggable widgets
  • Resizable widgets
  • Bounds checking for dragging and resizing
  • Widgets may be added or removed without rebuilding grid
  • Layout can be serialized and restored
  • Automatic RTL support

Installation

Install the vue-grid-layoutpackage package usingnpm:

npm install vue-grid-layout

Usage

npm install vue-grid-layout

or include the script in your html (download fromreleases):

<scriptsrc="vue-grid-layout.min.js"></script>
vartestLayout=[{"x":0,"y":0,"w":2,"h":2,"i":"0"},{"x":2,"y":0,"w":2,"h":4,"i":"1"},{"x":4,"y":0,"w":2,"h":5,"i":"2"},{"x":6,"y":0,"w":2,"h":3,"i":"3"},{"x":8,"y":0,"w":2,"h":3,"i":"4"},{"x":10,"y":0,"w":2,"h":3,"i":"5"},{"x":0,"y":5,"w":2,"h":5,"i":"6"},{"x":2,"y":5,"w":2,"h":5,"i":"7"},{"x":4,"y":5,"w":2,"h":5,"i":"8"},{"x":6,"y":4,"w":2,"h":4,"i":"9"},{"x":8,"y":4,"w":2,"h":4,"i":"10"},{"x":10,"y":4,"w":2,"h":4,"i":"11"},{"x":0,"y":10,"w":2,"h":5,"i":"12"},{"x":2,"y":10,"w":2,"h":5,"i":"13"},{"x":4,"y":8,"w":2,"h":4,"i":"14"},{"x":6,"y":8,"w":2,"h":4,"i":"15"},{"x":8,"y":10,"w":2,"h":5,"i":"16"},{"x":10,"y":4,"w":2,"h":2,"i":"17"},{"x":0,"y":9,"w":2,"h":3,"i":"18"},{"x":2,"y":6,"w":2,"h":2,"i":"19"}];varGridLayout=VueGridLayout.GridLayout;varGridItem=VueGridLayout.GridItem;newVue({el:'#app',components:{        GridLayout,        GridItem,},data:{layout:testLayout,},});
<grid-layout:layout="layout":col-num="12":row-height="30":is-draggable="true":is-resizable="true":vertical-compact="true":margin="[10, 10]":use-css-transforms="true"><grid-itemv-for="item in layout":x="item.x":y="item.y":w="item.w":h="item.h":i="item.i">            {{item.i}}</grid-item></grid-layout>

Events

Move and resize event listeners can be added to each grid-item, so that the parent Vue can be notified when a grid element is being moved or resized.Moved and resized event listeners can be added, if the only notification needed is when an item is finished moving or resizing.

Working examplehere

<grid-layout:layout="layout":col-num="12":row-height="30":is-draggable="true":is-resizable="true":vertical-compact="true":margin="[10, 10]":use-css-transforms="true"><grid-itemv-for="item in layout":x="item.x":y="item.y":w="item.w":h="item.h":i="item.i"@resize="resizeEvent"@move="moveEvent"@resized="resizedEvent"@moved="movedEvent">            {{item.i}}</grid-item></grid-layout>
  • Move event: every time an item is being moved and changes position
moveEvent:function(i,newX,newY){console.log("MOVE i="+i+", X="+newX+", Y="+newY);},
  • Resize event: every time an item is being resized and changes size
resizeEvent:function(i,newH,newW){console.log("RESIZE i="+i+", H="+newH+", W="+newW);},
  • Moved event: every time an item is finished being moved and changes position
movedEvent:function(i,newX,newY){console.log("MOVED i="+i+", X="+newX+", Y="+newY);},
  • Resized event: every time an item is finished being resized and changes size
/**     *     *@param i the item id/index     *@param newH new height in grid rows     *@param newW new width in grid columns     *@param newHPx new height in pixels     *@param newWPx new width in pixels     *     */resizedEvent:function(i,newH,newW,newHPx,newWPx){console.log("RESIZED i="+i+", H="+newH+", W="+newW+", H(px)="+newHPx+", W(px)="+newWPx);},

Contribute

If you have a feature request, please add it as an issue or make a pull request.

TODO List

  • Basic grid layout
  • Responsive
  • Draggable grid items
  • Resizable grid items
  • Static elements
  • Min/max w/h per item

About

A draggable and resizable grid layout, for Vue.js.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Vue65.1%
  • JavaScript34.5%
  • HTML0.4%

[8]ページ先頭

©2009-2025 Movatter.jp