<!DOCTYPE html>
<html>
<head>
    <title>Cloud Upload Icon</title>
    <style>
        #box {
            width: 20rem;
            height: 5rem;
            backdrop-filter: blur(5px);
            background-color: rgb(252, 252, 252);
            border-radius: 1em;
            border: 1px solid rgb(241, 241, 241);
            position: relative;
            user-select: none;
            cursor: pointer;
            margin: 1rem 2rem;
        }
        #box:hover > #drop {
            display: block;
        }

        #cloud {
            width: 82px;
            height: 30px;
            background: #e7f4fd;
            background: -webkit-linear-gradient(top,#e7f4fd 5%,#ceedfd 100%);
            border-radius: 25px;
            position: relative;
            margin: 33px auto 5px;
        }
        #cloud:before {
            width: 45px;
            height: 45px;
            top: -22px;
            right: 12px;
            border-radius: 50px;
        }
        #cloud:after {
            width: 25px;
            height: 25px;
            top: -12px;
            left: 12px;
            border-radius: 25px;
        }
        #cloud:before,
        #cloud:after {
            content: "";
            background: #e7f4fd;
            position: absolute;
            z-index: -1;
        }
        #cloud span {
            width: 87px;
            position: absolute;
            bottom: -2px;
            background: #000;
            z-index: -1;
            box-shadow: 0 0 6px 2px rgba(0,0,0,0.1);
            border-radius: 50%;
        }

        #drop {
            width: 100%;
            color: #999;
            line-height: 5rem;
            text-align: center;
            position: absolute;
            top: 0;
            display: none;
        }
    </style>
    <script>
        onload = () => {
            const file = document.createElement('input')
            file.type = 'file'
            file.onchange = event => {
                for (const i of file.files) {
                    console.log('已获取文件:', i)
                }
                file.value = null
            }

            box.onclick = () => file.click()

            let dragStats = 0
            document.ondragover = e => {
                e.preventDefault()
                if(dragStats) return
                drop.style.display = 'block'
            }

            document.ondragleave = e => {
                e.preventDefault()
                if(dragStats) return
                dragStats = setTimeout(() => {
                    dragStats = 0
                    drop.style.display = ''
                }, 1000)
            }

            document.ondrop = e => {
                e.preventDefault()
                dragStats = 0
                drop.style.display = ''
                const files = e.dataTransfer.files
                for (const i of files) {
                    console.log('已获取文件:', i)
                }
            }
        }
    </script>
</head>
<body>
    <div id="box">
        <div id="cloud"><span></span></div>
        <span id="drop">点击或拖拽音乐到此处共享您的音乐</span>
    </div>
</body>
</html>