Como muita gente, gostaria de customizar o feio input type=file
, e sei que não pode ser feito sem alguns hacks e / ou javascript
. Mas, o que acontece é que, no meu caso, os botões de upload de arquivo são apenas para upload de imagens ( jpeg | jpg | png | gif ), então eu queria saber se poderia usar uma clickable
imagem " " que atuaria exatamente como um arquivo de tipo de entrada ( mostra a caixa de diálogo e mesmo $ _FILE na página enviada).
Eu encontrei uma solução alternativa aqui , e esta interessante também (mas não funciona no Chrome = /).
O que vocês fazem quando querem adicionar algum estilo aos botões de arquivo? Se você tem algum ponto de vista sobre isso, basta clicar no botão de resposta;)
Respostas:
Isso funciona muito bem para mim:
Basicamente, o atributo for do rótulo faz com que clicar no rótulo seja o mesmo que clicar na entrada especificada .
Além disso, a propriedade display definida como none faz com que a entrada do arquivo não seja renderizada de forma alguma, ocultando-a de forma limpa.
Testado no Chrome, mas de acordo com a web deve funcionar em todos os principais navegadores. :)
EDITAR: JSFiddle adicionado aqui: https://jsfiddle.net/c5s42vdz/
fonte
Na verdade, isso pode ser feito em puro css e é muito fácil ...
Código HTML
Estilos CSS
A ideia é posicionar a entrada absolutamente dentro de sua etiqueta. defina o tamanho da fonte da entrada para algo grande, o que aumentará o tamanho do botão "navegar". Em seguida, é necessária alguma tentativa e erro usando as propriedades esquerda / superior negativa para posicionar o botão de navegação de entrada atrás de sua etiqueta.
Ao posicionar o botão, defina o alfa para 1. Quando terminar, defina-o novamente para 0 (para que você possa ver o que está fazendo!)
Certifique-se de testar em vários navegadores, pois todos eles renderizarão o botão de entrada em um tamanho ligeiramente diferente.
fonte
Ótima solução por @hardsetting, mas fiz algumas melhorias para fazê-lo funcionar com Safari (5.1.7) no Windows
Eu tenho usado
visibility: hidden, width:0
em vez dedisplay: none
para emissão safari e acrescentoupointer-events: none
emimg
tag para torná-lo trabalhar se o tipo de arquivo de entrada tag está na tag FORM.Parece funcionar para mim em todos os principais navegadores.
Espero que ajude alguém.
fonte
Eu usaria SWFUpload ou Uploadify . Eles precisam do Flash, mas fazem tudo o que você quiser sem problemas.
Qualquer
<input type="file">
solução alternativa que tente acionar a caixa de diálogo "abrir arquivo" por meios diferentes de clicar no controle real pode ser removida dos navegadores por motivos de segurança a qualquer momento. (Acho que nas versões atuais do FF e do IE, não é mais possível acionar esse evento programaticamente.)fonte
Este é o meu método se entendi
HTML
jQuery
fonte
é muito simples, você pode tentar isso:
fonte
Em vez disso, você pode colocar uma imagem e fazer assim:
HTML:
JQuery:
CAVEAT : No IE9 e IE10, se você acionar o onclick em uma entrada de arquivo via javascript, o formulário é sinalizado como 'perigoso' e não pode ser enviado com javascript, não há certeza se pode ser enviado tradicionalmente.
fonte
RUN SNIPPET ou apenas copie o código acima e execute. Você vai conseguir o que queria. Muito simples e eficaz sem javascript. Aproveitar!!!
fonte
A própria entrada está oculta com a visibilidade CSS: oculta.
Então você pode ter qualquer elemento que desejar - âncora ou imagem .., quando a âncora / imagem for clicada, acione um clique no campo de entrada oculto - a caixa de diálogo para selecionar um arquivo aparecerá.
EDIT: Na verdade funciona no Chrome e Safari, acabei de notar que não é o caso no FF4Beta
fonte
Código de Trabalho:
apenas esconda a parte de entrada e faça assim.
fonte
Tive muitos problemas com entradas ocultas e não visíveis na última década, às vezes as coisas são muito mais simples do que pensamos.
Tive um pequeno desejo com o IE 5,6,7,8 e 9 de não suportar a opacidade e, portanto, a entrada do arquivo cobriria a imagem de upload, entretanto o seguinte código css resolveu o problema.
O seguinte recorte foi testado no Chrome, IE 5,6,7,8,9,10, o único problema no IE 5 é que ele não suporta margem automática.
Execute o snippet simplesmente copie e cole o CSS e o HTML modifique o tamanho como desejar.
fonte