<label class="radikalwp-form-dropzone" data-dropzone><input type="file" hidden><span class="radikalwp-form-dropzone-icon">⬆️<//span><strong class="radikalwp-form-dropzone-title">فایل را اینجا رها کنید<//strong><span class="radikalwp-form-dropzone-hint">یا کلیک کنید تا انتخاب شود — حداکثر ۵ مگابایت<//span><//label>
.radikalwp-form-dropzone {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 6px;
max-width: 380px;
padding: 34px 24px;
background: #f8fafc;
border: 2px dashed #cbd5e1;
border-radius: 16px;
cursor: pointer;
text-align: center;
transition: border-color .25s ease, background .25s ease, transform .25s ease;
}
.radikalwp-form-dropzone:hover { border-color: #94a3b8; }
.radikalwp-form-dropzone.is-over {
border-color: #6366f1;
background: #eef2ff;
transform: scale(1.015);
}
.radikalwp-form-dropzone-icon { font-size: 30px; margin-bottom: 4px; }
.radikalwp-form-dropzone-title { font-size: 14px; color: #334155; }
.radikalwp-form-dropzone-hint { font-size: 11.5px; color: #94a3b8; }
.radikalwp-form-dropzone[data-file] .radikalwp-form-dropzone-title { color: #4f46e5; }
// هایلایت هنگام درگ + نمایش نام فایل انتخابی
document.querySelectorAll('[data-dropzone]').forEach(function (zone) {
var input = zone.querySelector('input[type=file]');
var title = zone.querySelector('.radikalwp-form-dropzone-title');
zone.addEventListener('dragover', function (e) { e.preventDefault(); zone.classList.add('is-over'); });
zone.addEventListener('dragleave', function () { zone.classList.remove('is-over'); });
zone.addEventListener('drop', function (e) {
e.preventDefault();
zone.classList.remove('is-over');
if (e.dataTransfer.files.length) { input.files = e.dataTransfer.files; show(e.dataTransfer.files[0]); }
});
input.addEventListener('change', function () { if (input.files.length) show(input.files[0]); });
function show(file) {
zone.dataset.file = '1';
title.textContent = 'انتخاب شد: ' + file.name;
}
});
درباره این اسنیپت
ناحیه آپلود با خطچین گرد که در حالت عادی آیکون و راهنما نشان میدهد و با کشیدن فایل روی آن (dragover)، رنگ و پسزمینه تغییر میکند تا ناحیه آماده دریافت حس شود. بعد از انتخاب، نام فایل داخل ناحیه نمایش داده میشود. برای آپلود عکس پروفایل، پیوست تیکت و فرمهای ارسال محتوا مناسب است. فیلد واقعی input file مخفی و ناحیه فقط پوسته تعاملی است.
پرسشهای متداول
خیر؛ این اسنیپت فقط لایه رابط کاربری است. فایل انتخابی در input[type=file] قرار میگیرد و ارسال آن با فرم یا AJAX خودتان انجام میشود.
قبل از نمایش نام فایل، پسوند و size را چک کنید و در صورت نامعتبر بودن پیام خطا بدهید و مقدار input را خالی کنید.
برچسب بهصورت بومی کلیک را به input مخفی منتقل میکند؛ یعنی بدون حتی یک خط جاوااسکریپت هم قابل کلیک است و دسترسپذیری بهتری دارد.
امتیاز شما به این محتوا
میانگین امتیاز کاربران: ۴.۵ از ۴ رأی — برای امتیازدهی وارد شوید
دیدگاهها (۰)
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!