Comme beaucoup de gens, j'aimerais personnaliser le moche input type=file
, et je sais que cela ne peut pas se faire sans quelques hacks et / ou javascript
. Mais, le fait est que dans mon cas, les boutons de téléchargement de fichiers sont juste pour télécharger des images ( jpeg | jpg | png | gif ), donc je me demandais si je pourrais utiliser une clickable
image " " qui agirait exactement comme un fichier de type d'entrée ( afficher la boîte de dialogue, et même $ _FILE sur la page soumise).
J'ai trouvé une solution de contournement ici , et celle-ci intéressante aussi (mais ne fonctionne pas sur Chrome = /).
Que faites-vous lorsque vous souhaitez ajouter du style à vos boutons de fichier? Si vous avez un point de vue à ce sujet, appuyez simplement sur le bouton de réponse;)
Réponses:
Cela fonctionne vraiment bien pour moi:
Fondamentalement, l' attribut for de l'étiquette fait en sorte que cliquer sur l'étiquette équivaut à cliquer sur l'entrée spécifiée .
De plus, la propriété display définie sur none fait en sorte que l'entrée du fichier ne soit pas rendue du tout, ce qui la masque de manière agréable et propre.
Testé dans Chrome mais selon le Web devrait fonctionner sur tous les principaux navigateurs. :)
EDIT: Ajout de JSFiddle ici: https://jsfiddle.net/c5s42vdz/
la source
En fait, cela peut être fait en pure css et c'est assez facile ...
Code HTML
Styles CSS
L'idée est de positionner l'entrée absolument à l'intérieur de votre étiquette. définissez la taille de la police de l'entrée sur quelque chose de grand, ce qui augmentera la taille du bouton "parcourir". Il faut ensuite quelques essais et erreurs en utilisant les propriétés négatives gauche / haut pour positionner le bouton de navigation d'entrée derrière votre étiquette.
Lorsque vous positionnez le bouton, réglez l'alpha sur 1. Lorsque vous avez terminé, remettez-le à 0 (pour que vous puissiez voir ce que vous faites!)
Assurez-vous de tester sur tous les navigateurs, car ils rendront tous le bouton d'entrée une taille légèrement différente.
la source
Excellente solution de @hardsetting, mais j'ai apporté quelques améliorations pour le faire fonctionner avec Safari (5.1.7) dans Windows
Je l' ai utilisé au
visibility: hidden, width:0
lieu dedisplay: none
pour la délivrance safari et ajoutépointer-events: none
dansimg
tag pour le faire fonctionner si balise de type de fichier d'entrée est dans la balise FORM.Semble fonctionner pour moi dans tous les principaux navigateurs.
J'espère que ça aide quelqu'un.
la source
J'utiliserais SWFUpload ou Uploadify . Ils ont besoin de Flash mais font tout ce que vous voulez sans problèmes.
Toute
<input type="file">
solution de contournement basée qui tente de déclencher la boîte de dialogue «Ouvrir le fichier» par des moyens autres que cliquer sur le contrôle réel peut être supprimée des navigateurs pour des raisons de sécurité à tout moment. (Je pense que dans les versions actuelles de FF et IE, il n'est plus possible de déclencher cet événement par programme.)la source
C'est ma méthode si j'ai votre point
HTML
jQuery
la source
c'est vraiment simple, vous pouvez essayer ceci:
la source
Vous pouvez mettre une image à la place et le faire comme ceci:
HTML:
JQuery:
CAVEAT : Dans IE9 et IE10, si vous déclenchez le onclick dans un fichier entré via javascript, le formulaire est signalé comme «dangereux» et ne peut pas être soumis avec javascript, vous ne savez pas s'il peut être soumis traditionnellement.
la source
L'entrée elle-même est masquée avec la visibilité CSS: hidden.
Ensuite, vous pouvez avoir n'importe quel élément que vous souhaitez - ancre ou image .., lorsque vous cliquez sur l'ancre / l'image, déclenchez un clic sur le champ de saisie caché - la boîte de dialogue de sélection d'un fichier apparaîtra.
EDIT: en fait cela fonctionne dans Chrome et Safari, je viens de remarquer que ce n'est pas le cas dans FF4Beta
la source
Code de travail:
cachez simplement la partie d'entrée et faites comme ça.
la source
RUN SNIPPET ou Copiez simplement le code ci-dessus et exécutez. Vous obtiendrez ce que vous vouliez. Très simple et efficace sans javascript. Prendre plaisir!!!
la source
J'ai eu beaucoup de problèmes avec des entrées cachées et non visibles au cours de la dernière décennie, parfois les choses sont beaucoup plus simples que nous ne le pensons.
J'ai eu un petit souhait avec IE 5, 6, 7, 8 et 9 pour ne pas prendre en charge l'opacité et donc l'entrée de fichier couvrirait l'image de téléchargement, mais le code css suivant a résolu le problème.
Ce qui suit est testé sur chrome, IE 5,6,7,8,9,10 le seul problème dans IE 5 est qu'il ne prend pas en charge la marge automatique.
Exécutez l'extrait de code, copiez et collez simplement le CSS et le HTML, modifiez la taille à votre guise.
la source