Est-il possible de changer l'apparence de <input type="file">
?
html
css
file-upload
input
Codeur débutant
la source
la source
Réponses:
Vous ne pouvez pas beaucoup modifier le
input[type=file]
contrôle lui-même.Puisque cliquer sur un
label
élément correctement associé à une entrée l'activera / le focalisera, nous pouvons utiliser alabel
pour déclencher la boîte de dialogue de navigation du système d'exploitation.Voici comment vous pouvez le faire…
Le CSS pour le contrôle de la forme fera apparaître invisible et ne pas prendre place dans la mise en page de documents, mais encore exister de sorte qu'il peut être activé via le
label
.Si vous souhaitez afficher le chemin choisi par l'utilisateur après la sélection, vous pouvez écouter l'
change
événement avec JavaScript puis lire le chemin que le navigateur met à votre disposition (pour des raisons de sécurité, il peut vous mentir sur le chemin exact). Un moyen de le rendre joli pour l'utilisateur final est d'utiliser simplement le nom de base du chemin qui est retourné (de sorte que l'utilisateur voit simplement le nom de fichier choisi).Il existe un excellent guide de Tympanus pour le style.
la source
#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>
(comme le montre Tympanus) est beaucoup plus sémantique et moins hacky. En outre, cette question a été posée à nouveau quelques années plus tard et a de bien meilleures réponses: style personnalisé multi-navigateur pour le bouton de téléchargement de fichiers .Quelque chose comme ça peut-être?
la source
display: none
supprimera l'entrée de l'ordre de tabulation, rendant la page moins accessible. L'utilisation<label>
(comme le montre Tympanus) est beaucoup plus sémantique et moins hacky. En outre, cette question a été posée à nouveau quelques années plus tard et a de bien meilleures réponses: style personnalisé multi-navigateur pour le bouton de téléchargement de fichiers .pourquoi pas? ^ _ ^
Voir l'exemple ici
la source
<label>
(comme le montre Tympanus) est une solution sémantiquement correcte. En outre, cette question a été posée à nouveau quelques années plus tard et a de bien meilleures réponses: style personnalisé multi-navigateur pour le bouton de téléchargement de fichiers .Si vous utilisez bootstrap, voici une meilleure solution:
Pour IE8 et inférieurs http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/
Source: https://stackoverflow.com/a/18164555/625952
la source
Le moyen le plus simple.
la source
Dans Webkit, vous pouvez essayer ceci ...
la source
tout d'abord c'est un conteneur:
Le second, c'est un style CSS, si vous voulez vraiment plus de personnalisation, il suffit de garder les yeux ouverts :)
Cet exemple n'a pas de style pour le texte à l'intérieur du bouton, cela dépend de la taille de la police, corrigez simplement les valeurs de hauteur et de remplissage du haut du conteneur
la source
right: 0
, au lieu deleft: 0
? De cette façon, vous auriez la zone de texte ie hors du conteneur. Cliquer sur la zone de texte n'ouvre pas la boîte de dialogue de sélection de fichier. De plus, je pense que créer un fichier d'entrée volumineux avecfont-size
est une bien meilleure idée, puis utiliserwidth
etheight
.L'astuce consiste à masquer l'entrée et à personnaliser l'étiquette.
HTML:
CSS:
JS:
Vous pouvez consulter cet exemple: https://jsfiddle.net/rjurado/hnf0zhy1/4/
la source
C'est beaucoup mieux si vous utilisez simplement a
<label>
, masquez<input>
et personnalisez l'étiquette.HTML:
CSS:
la source
display: none
supprimera l'élément de l'ordre de tabulation. Utiliser<label>
(comme le montre Tympanus) est la méthode sémantiquement correcte, mais nécessite quelques améliorations. En outre, cette question a été posée à nouveau quelques années plus tard et a de bien meilleures réponses: style personnalisé multi-navigateur pour le bouton de téléchargement de fichiers .pour afficher le chemin du fichier sélectionné, vous pouvez essayer ceci sur html:
et en javascript:
et style:
la source
Exemple de bootstrap
la source
J'ai opté pour cette option qui clarifie comment personnaliser entièrement le bouton de navigation en incluant un gestionnaire du nom du fichier téléchargé, également personnalisé. Il ajoute des champs supplémentaires et des contrôles côté client sur eux juste pour montrer comment inclure la navigation sous une forme "réelle", pas seulement autonome.
Voici le codepen: http://codepen.io/emiemi/pen/zxNXWR
JS:
HTML:
la source
Voici une manière que j'aime car elle fait remplir tout le conteneur. L'astuce est le "font-size: 100px", et il faut aller avec le "overflow: hidden" et la position relative.
la source
position: absolute; right: 0; font-size: <many>px;
Vous pouvez les styliser, mais vous ne pouvez pas supprimer les éléments qui s'y trouvent déjà. Si vous êtes créatif, vous pouvez travailler avec cela et faire quelque chose comme ceci:
http://jsfiddle.net/zr1x1m2b/1/
Je vous suggère de jouer avec ce code, de supprimer des lignes, d'ajouter les vôtres, de faire n'importe quoi jusqu'à ce que vous obteniez quelque chose qui vous ressemble!
la source
<label>
(comme le montre Tympanus) est sémantique et offre une personnalisation complète. En outre, cette question a été posée à nouveau quelques années plus tard et a de bien meilleures réponses: style personnalisé multi-navigateur pour le bouton de téléchargement de fichiers .Stylisez simplement un bouton normal comme vous le souhaitez, en utilisant votre CSS préféré.
Appelez ensuite une fonction JS simple pour créer et lier un élément d'entrée masqué à votre bouton stylisé. N'ajoutez pas de CSS spécifique au navigateur pour faire la partie cachée.
Notez comment le code ci-dessus le lie à nouveau après chaque fois que l'utilisateur choisit un fichier. Ceci est important car "onchange" n'est appelé que si l'utilisateur modifie le nom du fichier. Mais vous souhaitez probablement obtenir le fichier chaque fois que l'utilisateur le fournit.
Pour plus de détails, recherchez les téléchargements DropZone et Gmail.
la source
Ceci est mon téléchargement / pièce jointe de fichier customerized entièrement fonctionnel en utilisant jquery et javascript (Visual studio). Ce sera utile!
Le code sera disponible dans la section commentaires!
Lien: https://youtu.be/It38OzMAeig
Prendre plaisir :)
la source
Voici une solution de contournement CSS pure et rapide (fonctionne sur chrome et inclut une solution de secours FireFox), y compris le nom du fichier, une étiquette et un bouton de téléchargement personnalisé, fait ce qu'il faut - pas besoin de JavaScript du tout! 🎉
Remarque: ☝ Cela fonctionne sur Chrome et a une solution de secours FireFox - de toute façon, je ne l'utiliserais pas sur un site Web réel - si la compatibilité du navigateur est une chose pour vous (ce qu'elle devrait être). C'est donc plus expérimental.
la source
Voici une façon que j'ai récemment découverte, avec un peu de jQuery
Code HTML:
Pour la partie javascript / jQuery:
Dans cet exemple, j'ai mis une balise «ancre» pour déclencher le téléchargement du fichier. Vous pouvez remplacer par tout ce que vous voulez, n'oubliez pas de mettre l'attribut "onclick" avec la fonction appropriée.
J'espère que cela t'aides!
PS: n'oubliez pas d'inclure jQuery de CDN ou de toute autre source
la source
display: none
supprimera l'entrée de l'ordre de tabulation. L'utilisation<label>
(comme le montre Tympanus) est beaucoup plus sémantique et moins hacky. En outre, cette question a été posée à nouveau quelques années plus tard et a de bien meilleures réponses: style personnalisé multi-navigateur pour le bouton de téléchargement de fichiers .