<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
margin: 0;
padding: 20px;
font-family: Arial, sans-serif;
transition: background-color 0.3s ease;
}
.file-drop {
border: 2px dashed #ccc;
padding: 20px;
text-align: center;
cursor: pointer;
}
.file-drop:hover {
background-color: #f0f0f0;
}
.file-list {
margin-top: 20px;
}
.file-list ul {
list-style-type: none;
padding: 0;
}
.file-list li {
margin-bottom: 5px;
}
</style>
</head>
<body>
<div id="app">
<div class="file-drop" v-if="!file">
<p>拖拽单个文件到这里 (仅限 .jpg 和 .png 文件)</p>
</div>
<div class="file-list" v-else>
<ul>
<li>
{{ file.name }} ({{ file.size }} bytes)
</li>
</ul>
</div>
</div>
<!-- 引入 Vue 2 CDN -->
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1-dev.js"></script>
<script>
new Vue({
el: '#app',
data() {
return {
file: null
};
},
methods: {
handleDragOver(event) {
event.preventDefault();
document.body.style.backgroundColor = '#e0f7fa'; // 拖动时改变背景颜色
},
handleDragLeave() {
document.body.style.backgroundColor = ''; // 拖动离开时恢复背景颜色
},
handleDrop(event) {
event.preventDefault();
document.body.style.backgroundColor = ''; // 放开时恢复背景颜色
const files = event.dataTransfer.files;
if (files.length === 1) {
const file = files[0];
const allowedTypes = ['image/jpeg', 'image/png'];
if (allowedTypes.includes(file.type)) {
this.file = file;
} else {
alert('只能拖拽 .jpg 和 .png 文件');
}
} else {
alert('只能拖拽单个文件');
}
}
},
mounted() {
document.body.addEventListener('dragover', this.handleDragOver);
document.body.addEventListener('dragleave', this.handleDragLeave);
document.body.addEventListener('drop', this.handleDrop);
},
beforeDestroy() {
document.body.removeEventListener('dragover', this.handleDragOver);
document.body.removeEventListener('dragleave', this.handleDragLeave);
document.body.removeEventListener('drop', this.handleDrop);
}
});
</script>
</body>
</html> 网友回复


