允许用户在一个元素上点击并按住鼠标按钮,拖动它到别的位置,然后松开鼠标按钮将元素放到那儿。
在拖动操作过程中,被拖动元素会以半透明形式展现,并跟随鼠标指针移动。放置元素的位置可能会在不同的应用内。
## 源元素事件
**所谓源元素**就是被拖动的元素。
| 事件名称 | 作用 | 触发次数 |
| --- | --- | --- |
| dragstart事件 | 开始拖动源元素时被触发 | 只被触发一次|
| drag事件 | 拖动的过程中,实时被触发 | 被触发多次 |
| dragend事件 | 结束拖动源元素时被触发 | 只被触发一次 |
```html
```
## 目标元素事件
**所谓目标元素**就是投放到的元素。
| 事件名称 | 作用 | 触发次数 |
| --- | --- | --- |
| dragenter事件 | 当源元素到达目标元素时被触发 | 只被触发一次|
| dragover事件 | 当源元素到达目标元素时被触发 | 被触发多次。阻止默认行为,触发drop事件 |
| drop事件 | 当源元素投放在目标元素时被触发 | 默认该事件不会被触发 |
| dragleave事件 | 当源元素离开目标元素时被触发 | 只被触发一次 |
```html
```
## dataTransfer对象
该对象已被集成在 `event` 对象中,起到剪切板的功能。
| 方法名称 | 作用 | 场景 |
| --- | --- | --- |
| setData(type,data) | 存储数据 | 在源元素事件中 |
| getData(type) | 取出数据 | 在目标元素事件中 |
| clearData() | 清除剪切板中所有数据 | |
参数:
- type:指定当前存储数据的类型(标识)。
- data:需要中转的数据内容。
```html
```