Segunda-feira, 18 de setembro de 2006 às 11h08

Agilizando o desenvolvimento com o CSS Browser Selector

Este artigo é para aqueles que desenvolvem sites ou sistemas na web e se preocupam em fazê-los funcionar bem nos diversos navegadores e plataformas. É muito triste entrar em um site e perceber que ele não funciona bem no navegador e sistema operacional que você está usando. Às vezes o site até funciona, mas você percebe que alguns detalhes não estão funcionando bem.

Eu sou paranóico com isso, faço diversos testes, no Linux com o Firefox, Konqueror, Mozilla e Opera e no Windows com Internet Explorer, Firefox, Opera e agora o Swift que é o engine do Safari para o Windows. Os teste no Mac são feitos pelo meu parceiro designer Vinicius Braga, nos navegadores Internet Explorer, Firefox e Safari. O trabalho de colocar os sites para funcionar bem em todos os navegadores sempre me tomou muito tempo, dedicação e paciência. Por isso até entendo que alguns sites não funcionem bem, imagino que seja problema de orçamento ou prazo apertado que dificultaram a vida do programador.

Inspirado pela 37signals, que postou em seu blog um desejo de como poderia ser mais fácil especificar os atributos de CSS, eu desenvolvi o CSS Browser Selector. Trata-se de um pequeno script que tem por objetivo facilitar a definição de atributos CSS específicos para cada navegador/plataforma.

Como usar o CSS Browser Selector

. Baixe o script em http://rafael.adm.br/css_browser_selector/.

. Copie para o diretório onde você guarda os arquivos de javascript (ex: /js). Lembre-se de renomear o arquivo baixado, retirando o .txt do final.

. Coloque a linha abaixo acima dentro da tag header:

<script src="/js/css_browser_selector.js" type="text/javascript"></script>

. Utilize os códigos dos navegadores na especificação do CSS

Códigos de sistemas operacionais

. win - Microsoft Windows
. linux - Linux (x11 and linux)
. mac - Mac OS

Códigos de navegadores

. ie - Internet Explorer
. ie6 - Internet Explorer 6
. ie5 - Internet Explorer 5
. gecko - Mozilla, Firefox, Camino
. opera - Opera
. konqueror - Konqueror
. webkit or safari - Safari, NetNewsWire, OmniWeb, Shiira

Exemplo de utilização

Para atribuir um padding específico em uma tag com id “header” apenas no Internet Explorer do Mac OS:

.ie .mac #header {
 padding: 10px
}

Para esconder todos os objetos com class “help” em todos os navegadores no linux:

.linux .help {
 display: none
}

Uma aplicação prática

No BielBid, sistema de gerenciamento de cotações para compradores, nós permitimos que o usuário faça upload de uma imagem com a logomarca para compor a interface. Fizemos um javascript que submete o formulário automaticamente logo após o usuário selecionar o arquivo em seu computador, para evitar o botão de Enviar e agilizar o processo.

Perfeito se funcionasse em todos os navegadores. Percebemos que na engine KHTML, utilizada pelo Konqueror e pelo Safari, este script não funciona. Optamos então por manter o botão de Enviar apenas nestes dois navegadores. Veja a diferença na tela:

Captura de tela retirada do Firefox

Captura de tela retirada do Konqueror

Agora veja como ficou elegante o código utilizando o CSS Browser Selector:

input.file_upload_button {
 display: none
}

.safari input.file_upload_button,
.konqueror input.file_upload_button {
 display: block
}

Obs.: file_upload_button é a classe que está atribuida ao botão (<input class="file_upload_button" name="commit" type="submit" value="Enviar" />)

Aproveite o script, use a sua imaginação e ganhe tempo desenvolvendo seus próximos projetos.

O CSS Browser Selector também ajuda na identificação se o javascript está habilitado no navegador do usuário e este será o tema do próximo artigo.

Um grande abraço a todos.

11 comentários

 Filipe Medina
18/09/2006 16h02

Show !!!

bem legal mesmo

 Raphael Augusto Ferroni Cardoso
18/09/2006 16h05

Muito bom!

Muito boa a materia. Isso vai ajudar e muito os desenvolvedores. Mais vale ressaltar que é preciso conhecer bem CSS e de que esse escript não irá ajudar por si só. Deve-se conhecer os hacks a principio.

Abraço e Sucesso

 Dirceu Macedo
18/09/2006 23h40

Excelente!

Excelente matéria, ótima iniciativa, está de parabens pelo script! Grande abraço!

 daniel lopes
19/09/2006 14h33

Muito bom

Muito util sua matéria. Onde vc baixou o Swift?Fiquei iteressado.
Abraço.

 Ian Liu Rodrigues
19/09/2006 15h34

Muito bom!

Muito inteligente o metodo utilizado! Mas eu tenho uma pequena duvida: Como voce detectara o JavaScript com um JavaScript? Estive pensando em deixar uma classe padrao na tag html, como 'no-js'. Assim, se o JS estiver abilitado, o seu codigo ira mudar a classe, mas talvez voce tenha uma maneira mais inteligente :) . Parabens novamente!

 Anderson Soares
20/09/2006 08h03

Simplesmente magnífica idéia!

A sua idéia foi muito boa. Parabéns. E obrigado por compartilhar isso conosco.

 Rayran Alves
22/09/2006 11h30

Fantástico!

Muito prático e pensando bem; fundamental! Parabéns!

 Igor Escobar
22/09/2006 19h34

Cool

Bem legal cara =) Parabens.

 Rafael Lima
25/09/2006 11h51

Obrigado

Pessoal, desculpe a demora para responder as questões. Eu não estava conseguindo me logar no site.

Obrigado a todos pelos comentários!

Daniel: O swift foi descontinuado (http://getswift.org/)

Ian: Eu vou explicar com detalhes como detectar o JavaScript no próximo artigo.

Abraços

 Marcel Serra Ribeiro
09/10/2006 10h45

Parabéns

Excelente script! Simples mas que resolve o problema!
A Ideia é excelente!
Muito bom mesmo! Ajudou bastante!
Obrigado!

 francisco porfirio
03/11/2006 11h37

Parabéns

Cara, muuuito bom mesmo, está de parabéns, me ajudou muito

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Rafael Lima é sócio-administrador da BielSystems, escreve aqui e em seu blog rafael.adm.br sobre tecnologia, internet, administração, desenvolvimento, aplicações web, SaaS e web-marketing.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.