logo

Estilizando Input File com CSS

logo
Estilizando input do tipo file com css

Estilizando input do tipo file com css

Como prometido, mais um tutorial sobre CSS.

Não preciso citar os benefícios do CSS ou encher de linguiça aqui, vamos direto ao ponto.
Vamos criar um input do tipo file estilizado com CSS e um pouco de javascript (sem ele não há vida rsrs).

Veja o DEMO.

Para começar devemos preparar o HTML.

< ?xml version="1.0" encoding="ISO-8859-1" ?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title>Estilizando input file com css</title>
</head>
<body>
	<form>
		<div id="div-input-file">
			<input type="file" />
			<div id="div-input-falso"><input name="file-falso" type="text" id="file-falso" /></div>
		</div>
	</form>
</body>
</html>

Bom agora vamos adicionar alguns IDS e alguns Names por ai.

< ?xml version="1.0" encoding="ISO-8859-1" ?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title>Estilizando input file com css</title>
</head>
<body>
	<form>
		<div id="div-input-file">
			<input name="file-original" type="file" size="30" id="file-original"/>
			<div id="div-input-falso"><input name="file-falso" type="text" id="file-falso" /></div>
		</div>
	</form>
</body>
</html>

Bom já deu para ter uma idéia de como vai ficar né? Agora falta o CSS e o Javascript básico.
No input file-original adicionamos o seguinte código javascript:

onchange="document.getElementById('file-falso').value = this.value;"

ficando assim:

<input name="file-original" type="file" size="30" id="file-original" onchange="document.getElementById('file-falso').value = this.value;"/>

Agora a mágica do CSS.

<style type="text/css">
#div-input-file{
	background:url(img/file.gif) no-repeat 100% 1px;
	height:28px;
	width:385px;
	margin:0px;
}
#div-input-file #file-original{
	opacity: 0.0;
	-moz-opacity: 0.0;
	filter: alpha(opacity=00);
	font-size:18px;
}
#div-input-falso{
	margin-top:-28px;
}
#div-input-falso #file-falso{
	width:265px;
	height:22px;
	font-size:18px;
	font-family: Verdana;
}
</style>

Agora é só baixar a imagem e colocar dentro da pasta img: file

Veja o DEMO.

Bookmark and Share

31 marcas, uhull to “Estilizando Input File com CSS”

  1. Show Ruan,

    Eu já tinha visto como fazer isso mas era uns códigos astronômicos, só que este é bem compacto e funciona perfeitamente.

    Vou usar em nossos projetos na Agência Hive.

    Abrçs…
    @oronaldosantos

  2. Ruan Carlos disse:

    Opa Ronaldo Valew.

    Eu não testei em todos os browsers para ver se funciona, mais funcionou no FF que é o que eu uso, para mim está bom.

  3. VITU disse:

    VLW CARA MTO UTIL e funciona direitinho
    xD!!

  4. Bárbara disse:

    Oie Ruan, eu fiz e ficou bem jóia, porém em alguns navegadores como Chrome e safári, não funcionou muito bem.

    Mas brigada mesmo assim pela ajuda.

    Abs,
    Bárbara

  5. Heitor Andrade disse:

    cara
    eu gostaria de esconder o text também, e ao invés de mandar o caminho para um tect eu gostaria de mandar o caminhjo para uma variavel

    tem como?

  6. Fico bem legal o botão vlw

  7. Grey disse:

    Meu.. tu salvou a minha vida!
    Entrei em uma penca de sites que tinha um monte de códigos JS e sempre dava pau em algum navegador. Esse funcionou até no IEca6!!! Tu é foda!!
    Parabéns e obrigada!

  8. Marcus Linares disse:

    Muito bom o exemplo, funcionou perfeitamente, somente um detalhe, quando copiei o código e gerei os arquivos não funcionou de primeira, percebi que as 2 primeiras linhas tem um espaço:

    Incorreto:

    Correto:

    Ruan, obrigado por compartilhar conhecimento.

    Abs,

  9. Marta disse:

    EU TE AMO MAN!!! VO TE MORDER

  10. Gustavo disse:

    Boa tarde,
    estou trabalhando com asp.net e preciso usar runat=”server” e quando uso desconfigura tudo e para de funcionar. Já usou assim? e sabe como consertar?

    Abraços

  11. Obrigada por compartilhar esse tutorial mais que sensacional! ;)

  12. perfeito… exatamente o que eu precisava!!
    valewww, 100% funcionando!

  13. toushirou disse:

    amigo tem algum codigo para ele enviar os dados automaticamente ou seja
    quando ele selecionar a imagem da um submit[o botao de enviar] sem ter o botao submit?? e enviar para a pagina onde pegarei os dados..

  14. Heronildes disse:

    para funcionar nos outros navegadores fora IE e FF. basta uns ajustes no CSS .. coisa de margins, e width do input verdadeiro . Abçs obrigado pelo código .. bastante funcional .

  15. Tatianne disse:

    Bom dia Ruan,
    Não consegui fazer funcionar no IE.
    Funciona corretamente no FF, mais no IE não funciona, vc sabe o que devo fazer??

  16. Urbano disse:

    Bom demais cara.

    Tu é fera!!

  17. Excelente codigo Ruan, valew por compatilhar e parabens pelo blog.

  18. Em pleno 2012, ainda utilizo bastante hehehe

  19. Silvio disse:

    Muito legal mesmo, valeu!

  20. Ah. Eu, particularmente, não gostei.
    Se o cara desabilita o uso de script na pagina o negócio não funciona mais!
    Mas vale como conhecimento, nunca tinha pensado em fazer assim.

    []‘s

logo
logo
Hospedado no Djalma | Ruan Carlos.