Apakah mungkin untuk mengubah tampilan <input type="file">
?
html
css
file-upload
input
Pemula Pemula
sumber
sumber
Jawaban:
Anda tidak dapat memodifikasi banyak tentang
input[type=file]
kontrol itu sendiri.Karena mengklik
label
elemen dengan benar dipasangkan dengan input akan mengaktifkan / memfokuskannya, kita dapat menggunakan alabel
untuk memicu dialog penelusuran OS.Inilah cara Anda dapat melakukannya ...
CSS untuk kontrol formulir akan membuatnya tampak tidak terlihat dan tidak memakan ruang di tata letak dokumen, tetapi akan tetap ada sehingga dapat diaktifkan melalui
label
.Jika Anda ingin menampilkan jalur yang dipilih pengguna setelah pemilihan, Anda dapat mendengarkan
change
acara dengan JavaScript dan kemudian membaca jalur yang disediakan peramban untuk Anda (untuk alasan keamanan, itu bisa berbohong kepada Anda tentang jalur yang tepat). Cara untuk membuatnya cantik bagi pengguna akhir adalah dengan hanya menggunakan nama dasar dari jalur yang dikembalikan (sehingga pengguna hanya melihat nama file yang dipilih).Ada panduan hebat dari Tympanus untuk menata gaya ini.
sumber
#container { position: relative; width: ...px; height: ...px; overflow: hidden; } #input { position: absolute; right: 0; font-size: <many a>px; opacity: 0; margin: 0; padding: 0; border: none; }
<label>
(seperti yang ditunjukkan oleh Tympanus) jauh lebih semantik dan kurang hacky. Juga, pertanyaan ini ditanyakan lagi beberapa tahun kemudian dan memiliki jawaban yang jauh lebih baik di sana: gaya kustom lintas-browser untuk tombol unggah file .Mungkin sesuatu seperti itu?
sumber
display: none
akan menghapus input dari urutan tab, membuat halaman menjadi kurang dapat diakses. Menggunakan<label>
(seperti yang ditunjukkan oleh Tympanus) jauh lebih semantik dan kurang hacky. Juga, pertanyaan ini ditanyakan lagi beberapa tahun kemudian dan memiliki jawaban yang jauh lebih baik di sana: gaya kustom lintas-browser untuk tombol unggah file .kenapa tidak? ^ _ ^
Lihat contoh di sini
sumber
<label>
(seperti yang ditunjukkan oleh Tympanus) adalah solusi yang semantik benar. Juga, pertanyaan ini ditanyakan lagi beberapa tahun kemudian dan memiliki jawaban yang jauh lebih baik di sana: gaya kustom lintas-browser untuk tombol unggah file .Jika Anda menggunakan bootstrap di sini adalah solusi yang lebih baik:
Untuk IE8 dan di bawah ini http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/
Sumber: https://stackoverflow.com/a/18164555/625952
sumber
Cara termudah ..
sumber
Di webkit Anda dapat mencoba ini ...
sumber
pertama-tama ini adalah wadah:
Yang kedua, ini adalah gaya CSS, jika Anda ingin kustomisasi yang lebih nyata, jaga agar mata Anda tetap terbuka :)
Contoh ini tidak memiliki gaya untuk teks di dalam tombol, itu tergantung pada ukuran font, cukup perbaiki nilai tinggi dan padding-top untuk wadah
sumber
right: 0
, bukanleft: 0
? Dengan begitu Anda akan memiliki kotak teks yaitu dari wadah. Mengklik pada kotak teks tidak membuka dialog file pilih. Juga, saya percaya membuat file input besar denganfont-size
ide yang jauh lebih baik, kemudian menggunakanwidth
danheight
.Caranya adalah menyembunyikan input dan menyesuaikan label.
HTML:
CSS:
JS:
Anda dapat memeriksa contoh ini: https://jsfiddle.net/rjurado/hnf0zhy1/4/
sumber
Jauh lebih baik jika Anda hanya menggunakan
<label>
, menyembunyikan<input>
, dan menyesuaikan label.HTML:
CSS:
sumber
display: none
akan menghapus elemen dari urutan tab. Menggunakan<label>
(seperti yang ditunjukkan oleh Tympanus) adalah cara semantik yang benar, tetapi membutuhkan beberapa penyempurnaan. Juga, pertanyaan ini ditanyakan lagi beberapa tahun kemudian dan memiliki jawaban yang jauh lebih baik di sana: gaya kustom lintas-browser untuk tombol unggah file .untuk menampilkan jalur file yang dipilih, Anda dapat mencoba ini di html:
dan dalam javascript:
dan gaya:
sumber
Contoh bootstrap
sumber
Saya memilih opsi ini yang menjelaskan cara menyesuaikan sepenuhnya tombol browse dengan memasukkan penangan nama file yang diunggah, juga disesuaikan. Itu menambahkan bidang tambahan dan kontrol sisi klien pada mereka hanya untuk menunjukkan bagaimana memasukkan browse dalam bentuk "nyata", bukan hanya mandiri.
Berikut codepen: http://codepen.io/emiemi/pen/zxNXWR
JS:
HTML:
sumber
Inilah salah satu cara yang saya suka karena itu membuat input mengisi seluruh wadah. Triknya adalah "font-size: 100px", dan harus dengan "overflow: hidden" dan posisi relatif.
sumber
position: absolute; right: 0; font-size: <many>px;
Anda bisa mendesainnya, tetapi Anda tidak bisa menghapus elemen yang sudah ada. Jika Anda kreatif, Anda dapat bekerja dengan itu dan melakukan sesuatu seperti ini:
http://jsfiddle.net/zr1x1m2b/1/
Saya sarankan Anda bermain-main dengan kode ini, menghapus garis, menambahkan sendiri, melakukan apa pun sampai Anda mendapatkan sesuatu yang Anda inginkan!
sumber
<label>
(seperti yang ditunjukkan oleh Tympanus) adalah semantik dan menawarkan kemampuan penyesuaian yang lengkap. Juga, pertanyaan ini ditanyakan lagi beberapa tahun kemudian dan memiliki jawaban yang jauh lebih baik di sana: gaya kustom lintas-browser untuk tombol unggah file .Cukup gaya tombol normal seperti yang Anda inginkan, menggunakan CSS favorit Anda.
Kemudian panggil fungsi JS sederhana untuk membuat dan menautkan elemen input tersembunyi ke tombol gaya Anda. Jangan tambahkan CSS khusus browser untuk melakukan bagian persembunyian.
Perhatikan bagaimana kode di atas menghubungkan kembali setelah setiap kali pengguna memilih file. Ini penting karena "onchange" hanya dipanggil jika pengguna mengubah nama file. Tetapi Anda mungkin ingin mendapatkan file setiap kali pengguna menyediakannya.
Untuk lebih jelasnya, teliti DropZone dan unggahan gmail.
sumber
Ini adalah unggahan / lampiran file saya yang berfungsi penuh dengan fungsi menggunakan jquery & javascript (Visual studio). Ini akan bermanfaat!
Kode akan tersedia di bagian komentar!
Tautan: https://youtu.be/It38OzMAeig
Nikmati :)
sumber
Berikut ini adalah solusi CSS murni yang cepat (berfungsi pada chrome dan memiliki cadangan FireFox termasuk), termasuk nama file, label dan tombol unggah kustom, melakukan apa yang seharusnya - tidak perlu JavaScript sama sekali! 🎉
Catatan: ☝ Ini berfungsi di Chrome dan memiliki FireFox fallback - lagipula, saya tidak akan menggunakannya di situs web dunia nyata - jika kompatibilitas browser sesuai untuk Anda (apa yang seharusnya). Jadi ini lebih eksperimental.
sumber
Ini adalah salah satu cara yang saya temukan baru-baru ini, dengan sedikit jQuery
Kode HTML:
Untuk bagian javascript / jQuery:
Dalam contoh ini, saya telah memasang tag "jangkar" untuk memicu unggahan file. Anda dapat mengganti dengan apa pun yang Anda inginkan, ingatlah untuk meletakkan atribut "onclick" dengan fungsi yang tepat.
Semoga ini membantu!
PS: Jangan lupa untuk menyertakan jQuery dari CDN atau sumber lain
sumber
display: none
akan menghapus input dari urutan tab. Menggunakan<label>
(seperti yang ditunjukkan oleh Tympanus) jauh lebih semantik dan kurang hacky. Juga, pertanyaan ini ditanyakan lagi beberapa tahun kemudian dan memiliki jawaban yang jauh lebih baik di sana: gaya kustom lintas-browser untuk tombol unggah file .