Um layout de grade arrastável e redimensionável, para Vue.js
vue-grid-layout
vue-grid-layout é um sistema de layout de grade, como Gridster , para Vue.js. Fortemente inspirado por React-Grid-Layout
Versão Atual: * 2.3.7 (Suporta Vue 2.2+)
Para Vue 2.1.10 e abaixo, use a versão 2.1.3
Para Vue 1 use a versão 1.0.3
[ Demo | Changelog ]
Inglês | chinês
todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão
Projetos usando vue-grid-layout
Conhece outros? Crie um PR para me informar!
Recursos
- Widgets arrastáveis
- Widgets redimensionáveis
- Widgets estáticos
- Verificação de limites para arrastar e redimensionar
- Os widgets podem ser adicionados ou removidos sem reconstruir a grade
- O layout pode ser serializado e restaurado
- Suporte RTL automático (redimensionamento não funciona com RTL em 2.2.0)
- Responsivo
Começando
Instalação
acima do nível do mar
# install with npm npm install vue-grid-layout --save # install with yarn yarn add vue-grid-layout
Importar a biblioteca
import VueGridLayout from 'vue-grid-layout';
Adicionar a outros componentes Vue
export default { components: { GridLayout: VueGridLayout.GridLayout, GridItem: VueGridLayout.GridItem }, // ... data, methods, mounted (), etc. }
navegador
Inclui o pacote pronto para navegador (baixe de lançamentos ) em sua página. Os componentes estarão disponíveis automaticamente.
Uso
var testLayout = [ {'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':3,'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'} ]; new Vue({ el: '#app', data: { layout: testLayout, }, });
{{item.i}}
Documentação
Propriedades
GridLayout
-
layout
- tipo:
Array
- obrigatório:
true
Este é o layout inicial da grade.
O valor deve ser
Array
deObject
Itens. Cada item deve teri
,x
,y
,w
eh
propriedades. Consulte a documentação paraGridItem
abaixo para mais informações. - tipo:
-
colNum
- tipo:
Number
- obrigatório:
false
- padrão:
12
Diz quantas colunas a grade tem.
O valor deve ser um número natural .
- tipo:
-
altura da linha
- tipo:
Number
- obrigatório:
false
- padrão:
150
Diz o que é a altura de uma única linha em pixels.
- tipo:
-
maxRows
- tipo:
Number
- obrigatório:
false
- padrão:
Infinity
Diz qual é o número máximo de linhas na grade.
- tipo:
-
margem
- tipo:
Array
- obrigatório:
false
- padrão:
[10, 10]
Diz quais são as margens dos elementos dentro da grade.
O valor deve ser de dois elementos
Array
deNumber
. Cada valor é expresso em pixels. O primeiro elemento é uma margem horizontalmente, o segundo elemento é uma margem vertical. - tipo:
-
isDraggable
- tipo:
Boolean
- obrigatório:
false
- padrão:
true
Diz se os itens da grade podem ser arrastados.
- tipo:
-
isResizable
- tipo:
Boolean
- obrigatório:
false
- padrão:
true
Diz se os itens das grades são redimensionáveis.
- tipo:
-
isMirrored
- tipo:
Boolean
- obrigatório:
false
- padrão:
false
Diz se o RTL / LTR deve ser revertido.
- tipo:
-
tamanho automático
- tipo:
Boolean
- obrigatório:
false
- padrão:
true
Diz se a altura do contêiner deve aumentar e contrair para caber no conteúdo.
- tipo:
-
verticalCompact
- tipo:
Boolean
- obrigatório:
false
- padrão:
true
Diz se o layout deve ser compacto verticalmente.
- tipo:
-
preventCollision
- tipo:
Boolean
- obrigatório:
false
- padrão:
false
Diz se os itens da grade se moverão ao serem arrastados.
- tipo:
-
useCssTransforms
- tipo:
Boolean
- obrigatório:
false
- padrão:
true
Diz se o CSS
transition-property: transform;
deve ser usado. - tipo:
-
responsivo
- tipo:
Boolean
- obrigatório:
false
- padrão:
false
Diz se o layout deve ser adequado à largura da janela
- tipo:
-
pontos de interrupção
- tipo:
Object
- obrigatório:
false
- padrão: {lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0}
Pontos de interrupção definidos para layout responsivo. Define as larguras em que o número da coluna muda
- tipo:
-
cols
- tipo:
Object
- obrigatório:
false
- padrão: {lg: 12, md: 10, sm: 6, xs: 4, xxs: 2}
Define o número de colunas para cada ponto de interrupção
- tipo:
GridItem
-
eu
- tipo:
String
- obrigatório:
true
Este é o identificador exclusivo do item.
- tipo:
-
x
- tipo:
Number
- obrigatório:
true
Diz qual é a posição horizontal inicial do item (em qual coluna ele deve ser colocado).
O valor deve ser um número inteiro .
- tipo:
-
e
- tipo:
Number
- obrigatório:
true
Diz qual é a posição vertical inicial do item (em qual linha ele deve ser colocado).
O valor deve ser um número inteiro .
- tipo:
-
no
- tipo:
Number
- obrigatório:
true
Diz qual é a largura inicial do item.
O valor é um número multiplicado por
colWidth
. - tipo:
-
h
onde comprar velo
- tipo:
Number
- obrigatório:
true
Diz qual é a altura inicial do item.
O valor é um número multiplicado por
rowHeight
. - tipo:
-
minW
- tipo:
Number
- obrigatório:
false
- padrão:
1
Diz qual é a largura mínima do item. Se
w
será menor queminW
depoisw
será definido comominW
.O valor é um número multiplicado por
colWidth
. - tipo:
-
brilhante
- tipo:
Number
- obrigatório:
false
- padrão:
1
Diz o que é um peso mínimo do item. Se
h
será menor queminH
depoish
será definido comominH
.O valor é um número multiplicado por
rowHeight
. - tipo:
-
maxW
- tipo:
Number
- obrigatório:
false
- padrão:
Infinity
Diz qual é a largura máxima do item. Se
w
será maior quemaxW
depoisw
será definido comomaxW
.O valor é um número multiplicado por
colWidth
. - tipo:
-
maxH
- tipo:
Number
- obrigatório:
false
- padrão:
Infinity
Diz qual é a altura máxima do item. Se
h
será maior quemaxH
depoish
será definido comomaxH
.O valor é um número multiplicado por
rowHeight
- tipo:
-
isDraggable
- tipo:
Boolean
- obrigatório:
false
- padrão:
null
Diz se o item pode ser arrastado.
Se o valor padrão for
null
então é herdado dos pais. - tipo:
-
isResizable
- tipo:
Boolean
- obrigatório:
false
- padrão:
null
Diz se o item é redimensionável.
Se o valor padrão for
null
então é herdado dos pais. - tipo:
-
estático
- tipo:
Boolean
- obrigatório:
false
- padrão:
false
Diz se o item é estático (não pode ser arrastado, redimensionado ou movido por outros itens).
- tipo:
-
dragIgnoreFrom
conversor online de voz passiva para voz ativa
- tipo:
String
- obrigatório:
false
- padrão:
'a, button'
Diz quais elementos do item não devem acionar o evento de arrastar do item.
O valor é
css-like
seqüência do seletor.Para obter mais informações, consulte
ignoreFrom
no interact.js docs . - tipo:
-
dragAllowFrom
- tipo:
String
- obrigatório:
false
- padrão:
null
Diz quais elementos do item devem acionar o evento de arrastar do item.
O valor é
css-like
seqüência do seletor.Se
null
então, pode-se arrastar por qualquer (excluindodragIgnoreFrom
) elemento do item.Para obter mais informações, consulte
allowFrom
no interact.js docs . - tipo:
-
resizeIgnoreFrom
- tipo:
String
- obrigatório:
false
- padrão:
'a, button'
Diz quais elementos do item não devem acionar o evento de redimensionamento do item.
O valor é
css-like
seqüência do seletor.Para obter mais informações, consulte
ignoreFrom
no interact.js docs . - tipo:
Eventos
Mover e redimensionar ouvintes de eventos podem ser adicionados a cada item da grade, para que o Vue pai possa ser notificado quando um elemento da grade estiver sendo movido ou redimensionado. Ouvintes de eventos movidos e redimensionados podem ser adicionados, se a única notificação necessária for quando um item for movido ou redimensionado.
Exemplo de trabalho aqui
{{item.i}}
-
layoutCreatedEvent
Layout criado evento
Emitido no gancho do ciclo de vida criado pelo componente
layoutCreatedEvent: function(newLayout){ console.log('Created layout: ', newLayout) }
-
layoutBeforeMountEvent
Layout beforeMount event
Emitido no gancho do ciclo de vida do componente beforeMount
layoutBeforeMountEvent: function(newLayout){ console.log('beforeMount layout: ', newLayout) }
-
layoutMountedEvent
Evento montado em layout
Emitido no gancho de ciclo de vida montado no componente
layoutMountedEvent: function(newLayout){ console.log('Mounted layout: ', newLayout) }
-
layoutReadyEvent
Evento pronto para layout
Emitido quando todas as operações no gancho de montagem terminam
layoutReadyEvent: function(newLayout){ console.log('Ready layout: ', newLayout) }
-
layoutUpdatedEvent
Evento atualizado de layout
Cada vez que o layout termina de ser atualizado e as posições de todos os itens da grade são recalculadas
layoutUpdatedEvent: function(newLayout){ console.log('Updated layout: ', newLayout) }
-
moveEvent
Mover evento
Cada vez que um item está sendo movido e muda de posição
moveEvent: function(i, newX, newY){ console.log('MOVE i=' + i + ', X=' + newX + ', Y=' + newY); },
-
resizeEvent
Redimensionar evento
Cada vez que um item está sendo redimensionado e muda de tamanho
resizeEvent: function(i, newH, newW, newHPx, newWPx){ console.log('RESIZE i=' + i + ', H=' + newH + ', W=' + newW + ', H(px)=' + newHPx + ', W(px)=' + newWPx); },
-
moveuEvento
Evento movido
Cada vez que um item termina de ser movido e muda de posição
baixar qt designer python
movedEvent: function(i, newX, newY){ console.log('MOVED i=' + i + ', X=' + newX + ', Y=' + newY); },
-
resizedEvent
Evento redimensionado
Cada vez que um item termina de ser redimensionado e muda de tamanho
/** * * @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); },
-
containerResizedEvent
Evento de contêiner redimensionado
Cada vez que o item de grade / recipiente de layout muda de tamanho (janela do navegador ou outro)
/** * * @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 * */ containerResizedEvent: function(i, newH, newW, newHPx, newWPx){ console.log('CONTAINER RESIZED i=' + i + ', H=' + newH + ', W=' + newW + ', H(px)=' + newHPx + ', W(px)=' + newWPx); },
Contribuir
Se você tiver uma solicitação de recurso, adicione-a como um problema ou faça uma solicitação de pull.
Lista de afazeres
- [x] Layout básico da grade
- [x] Responsivo
- [x] Itens de grade arrastáveis
- [x] Itens de grade redimensionáveis
- [x] Elementos estáticos
- [x] Min / max w / h por item
Detalhes do download:
Autor: jbaysolutions
Demonstração ao vivo: https://jbaysolutions.github.io/vue-grid-layout/examples/01-basic.html
GitHub: https://github.com/jbaysolutions/vue-grid-layout
#vuejs #javascript #vue # vue-js