1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/JJJqubian-vue3-draggable-resizable

Клонировать/Скачать
README.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.06.2025 20:09 e2854f5

logo

Vue3DraggableResizable

[Forks https://github.com/a7650/vue3-draggable-resizable](https://github.com/a7650/vue3-draggable-resizable)

npm version Software License npm vue version

[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" />

initH

Тип: Number
По умолчанию: null

Устанавливает начальную высоту (в пикселях)

<Vue3DraggableResizable :initH="100" />

w

Тип: Number
По умолчанию: 0

Текущая ширина (в пикселях) контейнера.
Вы можете использовать "v-model:w", чтобы поддерживать актуальность

<Vue3DraggableResizable v-model:w="100" />

h

Тип: Number
По умолчанию: 0

Текущая высота (в пикселях) контейнера.
Вы можете использовать "v-model:h", чтобы поддерживать актуальность

<Vue3DraggableResizable v-model:h="100" />

x

Тип: Number
По умолчанию: 0

Текущее значение left (в пикселях) контейнера.
Вы можете использовать "v-model:x", чтобы поддерживать актуальность

<Vue3DraggableResizable v-model:x="100" />

y

Тип: Number
По умолчанию: 0

Текущее расстояние сверху контейнера (в пикселях).
Вы можете использовать "v-model:y", чтобы поддерживать его актуальность.

<Vue3DraggableResizable v-model:y="100" />

minW

Тип: Number
По умолчанию: 20

Минимальная ширина контейнера (в пикселях).

<Vue3DraggableResizable :minW="100" />

minH

Тип: Number
По умолчанию: 20

Минимальная высота контейнера (в пикселях).

<Vue3DraggableResizable :minH="100" />

active

Тип: Логическое значение
По умолчанию: false

Указывает, выбран ли компонент.
Вы можете использовать "v-model:active", чтобы поддерживать его актуальность.```html


#### draggable

тип: `Логическое значение`<br>
по умолчанию: `true`<br>

Определяет, может ли компонент быть перемещаемым.

```html
<Vue3DraggableResizable :draggable="true" />

resizable

тип: Логическое значение
по умолчанию: true

Определяет, может ли компонент быть изменяемым по размеру.

<Vue3DraggableResizable :resizable="true" />

lockAspectRatio

тип: Логическое значение
по умолчанию: false

Свойство lockAspectRatio используется для блокировки соотношения сторон.

<Vue3DraggableResizable :lockAspectRatio="true" />

disabledX

тип: Логическое значение
по умолчанию: false

Определяет, может ли компонент быть перемещаемым по оси X.

<Vue3DraggableResizable :disabledX="true" />

disabledY

тип: Логическое значение
по умолчанию: false

Определяет, может ли компонент быть перемещаемым по оси Y.

<Vue3DraggableResizable :disabledY="true" />

disabledW

тип: Логическое значение
по умолчанию: false

Определяет, может ли ширина компонента быть изменена.

<Vue3DraggableResizable :disabledW="true" />

disabledH

тип: Логическое значение
по умолчанию: false

Определяет, может ли высота компонента быть изменена.

<Vue3DraggableResizable :disabledH="true" />

parent

тип: Логическое значение
по умолчанию: 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']" />

classNameDraggable

тип: Строка
по умолчанию: draggable

Используется для установки пользовательского class компонента draggable-resizable при включении draggable.

<Vue3DraggableResizable classNameDraggable="draggable" />

classNameResizable

тип: Строка
по умолчанию: resizable

Используется для установки пользовательского class компонента draggable-resizable при включении resizable.

<Vue3DraggableResizable classNameResizable="resizable" />

classNameDragging

тип: Строка
по умолчанию: dragging

Используется для установки пользовательского class компонента draggable-resizable при перетаскивании.

<Vue3DraggableResizable classNameDragging="dragging" />

classNameResizing

тип: Строка
по умолчанию: resizing

Используется для установки пользовательского class компонента draggable-resizable при изменении размера.

<Vue3DraggableResizable classNameResizing="resizing" />

classNameActive

тип: Строка
по умолчанию: 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>
...

scaleRatio

тип: 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>

События

activated

payload: -

<Vue3DraggableResizable @activated="activatedHandle" />

deactivated

payload: -

<Vue3DraggableResizable @deactivated="deactivatedHandle" />

drag-start

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

Эти пропсы применяются к DraggableContainer

disabled

Тип: Boolean
По умолчанию: false

Отключает эту функцию

<DraggableContainer :disabled="true">
  <Vue3DraggableResizable>
    Test
  </Vue3DraggableResizable>
  <Vue3DraggableResizable>
    Another test
  </Vue3DraggableResizable>
</DraggableContainer>

adsorbParent

Тип: 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>

adsorbRows

Тип: Array<Number>
По умолчанию: null

Пользовательские направляющие (строки)

<DraggableContainer :adsorbRows="[10, 20, 30]">
  <Vue3DraggableResizable>
    Test
  </Vue3DraggableResizable>
  <Vue3DraggableResizable>
    Another test
  </Vue3DraggableResizable>
</DraggableContainer>

referenceLineVisible

Тип: Boolean
По умолчанию: true

Видимость линии-ссылки

<DraggableContainer :referenceLineVisible="false">
  <Vue3DraggableResizable>
    Test
  </Vue3DraggableResizable>
  <Vue3DraggableResizable>
    Another test
  </Vue3DraggableResizable>
</DraggableContainer>

referenceLineColor

Тип: String
По умолчанию: #f00

Цвет линии-ссылки

<DraggableContainer :referenceLineColor="#0f0">
  <Vue3DraggableResizable>
    Test
  </Vue3DraggableResizable>
  <Vue3DraggableResizable>
    Another test
  </Vue3DraggableResizable>
</DraggableContainer>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/JJJqubian-vue3-draggable-resizable.git
git@api.gitlife.ru:oschina-mirror/JJJqubian-vue3-draggable-resizable.git
oschina-mirror
JJJqubian-vue3-draggable-resizable
JJJqubian-vue3-draggable-resizable
master