Seções iMasters
CSS

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.

Comente também

11 Comentários

Filipe Medina

bem legal mesmo

Raphael Augusto Ferroni Cardoso

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

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

daniel lopes

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

Ian Liu Rodrigues

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

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

Rayran Alves

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

Igor Escobar

Bem legal cara =) Parabens.

Rafael Lima

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

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

francisco porfirio

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

Qual a sua opinião?