É possível alterar a aparência de <input type="file">
?
html
css
file-upload
input
Newbie Coder
fonte
fonte
Respostas:
Você não pode modificar muito sobre o
input[type=file]
controle em si.Como clicar em um
label
elemento corretamente emparelhado com uma entrada irá ativá-lo / focalizá-lo, podemos usar alabel
para acionar a caixa de diálogo de navegação do SO.Aqui está como você pode fazer isso…
O CSS para o controle de formulário fará com que pareça invisível e não ocupe espaço no layout do documento, mas ainda existirá para que possa ser ativado via
label
.Se você deseja exibir o caminho escolhido pelo usuário após a seleção, pode escutar o
change
evento com JavaScript e ler o caminho que o navegador disponibiliza para você (por motivos de segurança, pode mentir para você sobre o caminho exato). Uma maneira de torná-lo bonito para o usuário final é simplesmente usar o nome base do caminho retornado (para que o usuário simplesmente veja o nome do arquivo escolhido).Existe um ótimo guia da Tympanus para modelar isso.
fonte
#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>
(como mostrado pelo Tympanus) é muito mais semântico e menos invasivo. Além disso, essa pergunta foi feita novamente alguns anos depois e tem respostas muito melhores: estilo personalizado no navegador para o botão de upload de arquivo .Algo assim talvez?
fonte
display: none
removerá a entrada da ordem das guias, tornando a página menos acessível. O uso<label>
(como mostrado pelo Tympanus) é muito mais semântico e menos invasivo. Além disso, essa pergunta foi feita novamente alguns anos depois e tem respostas muito melhores: estilo personalizado no navegador para o botão de upload de arquivo .Por que não? ^ _ ^
Veja o exemplo aqui
fonte
<label>
(como mostrado pelo Tympanus) é uma solução semanticamente correta. Além disso, essa pergunta foi feita novamente alguns anos depois e tem respostas muito melhores: estilo personalizado no navegador para o botão de upload de arquivo .Se você estiver usando o bootstrap, aqui está uma solução melhor:
Para o IE8 e abaixo http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/
Fonte: https://stackoverflow.com/a/18164555/625952
fonte
Caminho mais fácil..
fonte
No webkit, você pode tentar isso ...
fonte
Antes de tudo, é um contêiner:
A segunda, é um estilo CSS, se você quiser mais personalização, mantenha os olhos abertos :)
Este exemplo não possui estilo para texto dentro do botão, depende do tamanho da fonte, apenas corrija os valores de altura e preenchimento para o contêiner
fonte
right: 0
, em vez deleft: 0
? Dessa forma, você teria a caixa de texto do ie fora do contêiner. Clicar na caixa de texto não abre a caixa de diálogo de seleção de arquivo. Além disso, acredito que aumentar o arquivo de entradafont-size
é uma ideia muito melhor do que usarwidth
eheight
.O truque é ocultar a entrada e personalizar o rótulo.
HTML:
CSS:
JS:
Você pode verificar este exemplo: https://jsfiddle.net/rjurado/hnf0zhy1/4/
fonte
É muito melhor se você apenas usar
<label>
, ocultar<input>
e personalizar o rótulo.HTML:
CSS:
fonte
display: none
removerá o elemento da ordem das guias. Usar<label>
(como mostrado pelo Tympanus) é a maneira semanticamente correta, mas precisa de alguns refinamentos. Além disso, essa pergunta foi feita novamente alguns anos depois e tem respostas muito melhores: estilo personalizado no navegador para o botão de upload de arquivo .para mostrar o caminho do arquivo selecionado, você pode tentar isso em html:
e em javascript:
e estilo:
fonte
Exemplo de inicialização
fonte
Eu optei por esta opção que esclarece como personalizar completamente o botão de navegação, incluindo um manipulador do nome do arquivo enviado, também personalizado. Ele adiciona campos adicionais e controles do lado do cliente, apenas para mostrar como incluir a navegação em um formulário "real", não apenas autônomo.
Aqui está o código de código: http://codepen.io/emiemi/pen/zxNXWR
JS:
HTML:
fonte
Aqui está uma maneira que eu gosto, porque faz com que a entrada preencha todo o contêiner. O truque é o "tamanho da fonte: 100px", e ele precisa acompanhar o "estouro: oculto" e a posição relativa.
fonte
position: absolute; right: 0; font-size: <many>px;
Você pode estilizá-los, mas não pode remover os elementos que já estão lá. Se você é criativo, pode trabalhar com isso e fazer algo assim:
http://jsfiddle.net/zr1x1m2b/1/
Eu sugiro que você brinque com esse código, remova linhas, adicione suas próprias, faça o que for, até obter algo parecido com o que você gosta!
fonte
<label>
(como mostrado pelo Tympanus) é semântico e oferece personalização completa. Além disso, essa pergunta foi feita novamente alguns anos depois e tem respostas muito melhores: estilo personalizado no navegador para o botão de upload de arquivo .Basta estilizar um botão normal como desejar, usando seu CSS favorito.
Em seguida, chame uma função JS simples para criar e vincular um elemento de entrada oculto ao seu botão estilizado. Não adicione CSS específico do navegador para fazer a parte oculta.
Observe como o código acima o vincula novamente após cada vez que o usuário escolhe um arquivo. Isso é importante porque "onchange" é chamado apenas se o usuário alterar o nome do arquivo. Mas você provavelmente deseja obter o arquivo sempre que o usuário o fornecer.
Para mais detalhes, pesquise os carregamentos do DropZone e do Gmail.
fonte
Este é o meu upload / anexo de arquivo com clientes totalmente funcional usando jquery e javascript (Visual studio). Isso será útil!
O código estará disponível na seção de comentários!
Link: https://youtu.be/It38OzMAeig
Aproveitar :)
fonte
Aqui está uma solução rápida e pura de CSS (funciona no chrome e inclui um fallback do FireFox), incluindo o nome do arquivo, um rótulo e um botão de upload personalizado, faz o que deveria - sem a necessidade de JavaScript! 🎉
Nota: ☝ Isso funciona no Chrome e tem um fallback do FireFox - de qualquer forma, eu não o usaria em um site do mundo real - se a compatibilidade do navegador for importante para você (o que deveria ser). Então é mais experimental.
fonte
Aqui está uma maneira que eu descobri recentemente, com um pouco de jQuery
Código HTML:
Para a parte javascript / jQuery:
Neste exemplo, coloquei uma tag "anchor" para acionar o upload do arquivo. Você pode substituir com o que quiser, lembre-se de colocar o atributo "onclick" com a função adequada.
Espero que isto ajude!
PS: Não esqueça de incluir o jQuery da CDN ou de qualquer outra fonte
fonte
display: none
removerá a entrada da ordem de tabulação. O uso<label>
(como mostrado pelo Tympanus) é muito mais semântico e menos invasivo. Além disso, essa pergunta foi feita novamente alguns anos depois e tem respostas muito melhores: estilo personalizado no navegador para o botão de upload de arquivo .