拖放事件
This commit is contained in:
parent
2112870a8b
commit
065df5cc9e
@ -1,4 +1,4 @@
|
||||
export function createElement({ innerText, textContent, onclick, onchange, onkeydown, onmouseenter, onmouseleave, readOnly, children = [], dataset, style, classList = [], ...attributes }, tagName = 'div') {
|
||||
export function createElement({ innerText, textContent, onclick, onchange, ondrop, ondragover, ondragleave, onkeydown, onmouseenter, onmouseleave, readOnly, children = [], dataset, style, classList = [], ...attributes }, tagName = 'div') {
|
||||
const element = document.createElement(tagName)
|
||||
for (const key in attributes) element.setAttribute(key, attributes[key])
|
||||
if (style) Object.assign(element.style, style)
|
||||
@ -13,6 +13,9 @@ export function createElement({ innerText, textContent, onclick, onchange, onkey
|
||||
if (children) children.forEach(child => element.appendChild(child))
|
||||
if (onmouseenter) element.onmouseenter = onmouseenter
|
||||
if (onmouseleave) element.onmouseleave = onmouseleave
|
||||
if (ondrop) element.ondrop = ondrop
|
||||
if (ondragover) element.ondragover = ondragover
|
||||
if (ondragleave) element.ondragleave = ondragleave
|
||||
return element
|
||||
}
|
||||
|
||||
@ -43,7 +46,7 @@ export function Avatar(options) {
|
||||
}
|
||||
|
||||
export function UploadMusic(options) {
|
||||
const text = createElement({
|
||||
const drop = createElement({
|
||||
textContent: '点击或拖拽音乐到此处共享您的音乐',
|
||||
style: {
|
||||
width: '100%',
|
||||
@ -87,10 +90,32 @@ export function UploadMusic(options) {
|
||||
input.click()
|
||||
},
|
||||
onmouseenter: event => {
|
||||
text.style.display = 'block'
|
||||
drop.style.display = 'block'
|
||||
},
|
||||
onmouseleave: event => {
|
||||
text.style.display = 'none'
|
||||
drop.style.display = 'none'
|
||||
},
|
||||
// 如果拖拽到了子元素上, 也要触发父元素的事件
|
||||
ondragover: event => {
|
||||
console.log('dragover')
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
event.dataTransfer.dropEffect = 'copy'
|
||||
drop.style.display = 'block'
|
||||
},
|
||||
ondrop: event => {
|
||||
console.log('drop')
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
const files = Array.from(event.dataTransfer.files)
|
||||
if (files.length === 0) return console.log('没有文件')
|
||||
console.log('files', files)
|
||||
options.onchange(files)
|
||||
},
|
||||
ondragleave: event => {
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
drop.style.display = 'none'
|
||||
},
|
||||
children: [
|
||||
// 绘制一个云朵上传图标(别放弃...还有我呢!)
|
||||
@ -141,7 +166,7 @@ export function UploadMusic(options) {
|
||||
})
|
||||
]
|
||||
}),
|
||||
text
|
||||
drop
|
||||
//createElement({
|
||||
// style: {
|
||||
// position: 'absolute',
|
||||
|
Loading…
Reference in New Issue
Block a user