[Vue3 компонент] Компонент для перетаскивания и изменения размера, поддерживающий конфликтную проверку, адсорбцию и выравнивание элементов, а также реальные линии отсчета. [Vue3 Component] Компонент для перетаскивания и изменения размера для Vue3, поддерживающий адсорбцию и выравнивание элементов, реальные линии отсчета и т.д.
Перейти к русской документации
$ npm install @v3e/vue3-draggable-resizable
Регистрация Vue3DraggableResizable
// >main.js
import { createApp } from 'vue'
import App from './App.vue'
import Vue3DraggableResizable from '@v3e/vue3-draggable-resizable'
//default styles
import '@v3e/vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
// Вы получите глобальный компонент с именем "Vue3DraggableResizable"
createApp(App)
.use(Vue3DraggableResizable)
.mount('#app')
Вы также можете использовать его отдельно внутри компонента
// >component.js
import { defineComponent } from 'vue'
import Vue3DraggableResizable from '@v3e/vue3-draggable-resizable'
//default styles
import '@v3e/vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
Вот полный пример использования "vue-template"
<template>
<div id="app">
<div class="parent">
<Vue3DraggableResizable
:initW="110"
:initH="120"
v-model:x="x"
v-model:y="y"
v-model:w="w"
v-model:h="h"
v-model:active="active"
:draggable="true"
:resizable="true"
@activated="print('activated')"
@deactivated="print('deactivated')"
@drag-start="print('drag-start')"
@resize-start="print('resize-start')"
@dragging="print('dragging')"
@resizing="print('resizing')"
@drag-end="print('drag-end')"
@resize-end="print('resize-end')"
>
Это тестовый пример
</Vue3DraggableResizable>
</div>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import Vue3DraggableResizable from '@v3e/vue3-draggable-resizable'
//default styles
import '@v3e/vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
export default defineComponent({
components: { Vue3DraggableResizable },
data() {
return {
x: 100,
y: 100,
h: 100,
w: 100,
active: false
}
},
methods: {
print(val) {
console.log(val)
}
}
})
</script>
<style>
.parent {
width: 200px;
height: 200px;
position: absolute;
top: 100px;
left: 100px;
border: 1px solid #000;
user-select: none;
}
</style>
```### Пропсы
#### initW
Тип: `Number`<br>
По умолчанию: `null`<br>
Устанавливает начальную ширину (в пикселях)
```html
<Vue3DraggableResizable :initW="100" />
Тип: Number
По умолчанию: null
Устанавливает начальную высоту (в пикселях)
<Vue3DraggableResizable :initH="100" />
Тип: Number
По умолчанию: 0
Текущая ширина (в пикселях) контейнера.
Вы можете использовать "v-model:w", чтобы поддерживать актуальность
<Vue3DraggableResizable v-model:w="100" />
Тип: Number
По умолчанию: 0
Текущая высота (в пикселях) контейнера.
Вы можете использовать "v-model:h", чтобы поддерживать актуальность
<Vue3DraggableResizable v-model:h="100" />
Тип: Number
По умолчанию: 0
Текущее значение left (в пикселях) контейнера.
Вы можете использовать "v-model:x", чтобы поддерживать актуальность
<Vue3DraggableResizable v-model:x="100" />
Тип: Number
По умолчанию: 0
Текущее расстояние сверху контейнера (в пикселях).
Вы можете использовать "v-model:y", чтобы поддерживать его актуальность.
<Vue3DraggableResizable v-model:y="100" />
Тип: Number
По умолчанию: 20
Минимальная ширина контейнера (в пикселях).
<Vue3DraggableResizable :minW="100" />
Тип: Number
По умолчанию: 20
Минимальная высота контейнера (в пикселях).
<Vue3DraggableResizable :minH="100" />
Тип: Логическое значение
По умолчанию: false
Указывает, выбран ли компонент.
Вы можете использовать "v-model:active", чтобы поддерживать его актуальность.```html
#### draggable
тип: `Логическое значение`<br>
по умолчанию: `true`<br>
Определяет, может ли компонент быть перемещаемым.
```html
<Vue3DraggableResizable :draggable="true" />
тип: Логическое значение
по умолчанию: true
Определяет, может ли компонент быть изменяемым по размеру.
<Vue3DraggableResizable :resizable="true" />
тип: Логическое значение
по умолчанию: false
Свойство lockAspectRatio
используется для блокировки соотношения сторон.
<Vue3DraggableResizable :lockAspectRatio="true" />
тип: Логическое значение
по умолчанию: false
Определяет, может ли компонент быть перемещаемым по оси X.
<Vue3DraggableResizable :disabledX="true" />
тип: Логическое значение
по умолчанию: false
Определяет, может ли компонент быть перемещаемым по оси Y.
<Vue3DraggableResizable :disabledY="true" />
тип: Логическое значение
по умолчанию: false
Определяет, может ли ширина компонента быть изменена.
<Vue3DraggableResizable :disabledW="true" />
тип: Логическое значение
по умолчанию: false
Определяет, может ли высота компонента быть изменена.
<Vue3DraggableResizable :disabledH="true" />
тип: Логическое значение
по умолчанию: false
Ограничивает перемещение и размеры компонента внутри его родительского узла.
<Vue3DraggableResizable :parent="true" />
```#### handles
тип: `Массив`<br>
по умолчанию: `['tl', 'tm', 'tr', 'ml', 'mr', 'bl', 'bm', 'br']`
Определяет массив обработчиков для ограничения изменения размера элемента.
- `tl` : Верхний левый
- `tm` : Верхний центральный
- `tr` : Верхний правый
- `mr` : Центральный правый
- `ml` : Центральный левый
- `bl` : Нижний левый
- `bm` : Нижний центральный
- `br` : Нижний правый```html
<Vue3DraggableResizable :handles="['tl','tr','bl','br']" />
тип: Строка
по умолчанию: draggable
Используется для установки пользовательского class
компонента draggable-resizable при включении draggable
.
<Vue3DraggableResizable classNameDraggable="draggable" />
тип: Строка
по умолчанию: resizable
Используется для установки пользовательского class
компонента draggable-resizable при включении resizable
.
<Vue3DraggableResizable classNameResizable="resizable" />
тип: Строка
по умолчанию: dragging
Используется для установки пользовательского class
компонента draggable-resizable при перетаскивании.
<Vue3DraggableResizable classNameDragging="dragging" />
тип: Строка
по умолчанию: resizing
Используется для установки пользовательского class
компонента draggable-resizable при изменении размера.
<Vue3DraggableResizable classNameResizing="resizing" />
тип: Строка
по умолчанию: active
Используется для установки пользовательского class
компонента draggable-resizable при активности.
<Vue3DraggableResizable classNameActive="active" />
```#### classNameHandle
тип: `String`<br>
по умолчанию: `handle`
Используется для установки общего пользовательского `class` каждого элемента-ручки.
```html
<Vue3DraggableResizable classNameHandle="my-handle" />
следующие узлы-ручки будут отображены
...
<div class="vdr-handle vdr-handle-tl my-handle my-handle-tl"></div>
<div class="vdr-handle vdr-handle-tm my-handle my-handle-tm"></div>
<div class="vdr-handle vdr-handle-tr my-handle my-handle-tr"></div>
<div class="vdr-handle vdr-handle-ml my-handle my-handle-mr"></div>
...
тип: Number
{x: Number; y: Number}
по умолчанию: 1
коэффициент масштабирования
<Vue3DraggableResizable :scaleRatio="0.8">
x, y оба масштабируются до 0.8
</Vue3DraggableResizable>
<Vue3DraggableResizable :scaleRatio="{x: 0.5, y: 0.8}">
x масштабируется до 0.5, y масштабируется до 0.8
</Vue3DraggableResizable>
payload: -
<Vue3DraggableResizable @activated="activatedHandle" />
payload: -
<Vue3DraggableResizable @deactivated="deactivatedHandle" />
payload: { x: number, y: number }
<Vue3DraggableResizable @drag-start="dragStartHandle" />
payload: { x: number, y: number }
<Vue3DraggableResizable @dragging="draggingHandle" />
payload: { x: number, y: number }
<Vue3DraggableResizable @drag-end="dragEndHandle" />
payload: { x: number, y: number, w: number, h: number }
<Vue3DraggableResizable @resize-start="resizeStartHandle" />
payload: { x: number, y: number, w: number, h: number }
<Vue3DraggableResizable @resizing="resizingHandle" />
payload: { x: number, y: number, w: number, h: number }
<Vue3DraggableResizable @resize-end="resizeEndHandle" />
```### Использование адсорбции выравнивания
Для использования функции "адсорбции выравнивания" вам нужно импортировать другой компонент.
Это можно использовать следующим образом.
```vue
<template>
<div id="app">
<div class="parent">
<DraggableContainer>
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
</div>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import Vue3DraggableResizable from '@v3e/vue3-draggable-resizable'
// Этот компонент не экспортируется по умолчанию
// Если вы использовали "app.use(Vue3DraggableResizable)", то вам не нужно импортировать его, вы можете использовать его напрямую.
import { DraggableContainer } from '@v3e/vue3-draggable-resizable'
// стандартные стили
import '@v3e/vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
export default defineComponent({
components: { Vue3DraggableResizable, DraggableContainer }
})
</script>
<style>
.parent {
width: 200px;
height: 200px;
position: absolute;
top: 100px;
left: 100px;
border: 1px solid #000;
user-select: none;
}
</style>
Эти пропсы применяются к DraggableContainer
Тип: Boolean
По умолчанию: false
Отключает эту функцию
<DraggableContainer :disabled="true">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
Тип: Boolean
По умолчанию: true
Адсорбция рядом с родительским компонентом
<DraggableContainer :adsorbParent="false">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
```#### adsorbCols
Тип: `Array<Number>`<br>
По умолчанию: `null`<br>
Пользовательские направляющие (столбцы)
```html
<DraggableContainer :adsorbCols="[10, 20, 30]">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
Тип: Array<Number>
По умолчанию: null
Пользовательские направляющие (строки)
<DraggableContainer :adsorbRows="[10, 20, 30]">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
Тип: Boolean
По умолчанию: true
Видимость линии-ссылки
<DraggableContainer :referenceLineVisible="false">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
Тип: String
По умолчанию: #f00
Цвет линии-ссылки
<DraggableContainer :referenceLineColor="#0f0">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )