Quais são as práticas recomendadas para sites da web com vários navegadores? [fechadas]

(Eu gostaria que este fosse o wiki definitivo da comunidade. Eu o semeei da minha própria resposta paraessa questão.)

Especifique tudo

Um monte de problemas entre navegadores é o seguinte: você não especificou algo e navegadores diferentes fazem suposições diferentes. Assim sendo:

Declarar um tipo de documento válido

Seu doctype informa ao navegador quais regras você usará em seu código. Se você não especificar, o navegador precisa adivinhar e diferentes navegadores adivinharão diferentemente.

Na minha experiência, um doctype "estrito" faz o IE se comportar melhor (habilita coisas como CSS: hover selectors em divs no IE7).

Este artigo fornece um bom histórico sobre doctypes.

Use os padrões da Web

Evite a marcação específica do navegador ou use-a somente quando a falha em outros navegadores não for significativa para a experiência do site.

Valide seu HTML e CSS

Você não precisa deixar tudo perfeito, mas a validação é um bom feedback. ComoJeff disse:

Conhecer as regras e os limites ajuda você a definir o que está fazendo e fornece munição legítima para concordar ou discordar. Você pode fazer uma escolha informada, em vez de um aleatório "Eu só faço isso e funciona" um.

Imagine que você abriu uma tag de parágrafo e nunca fechou. Se você abrir uma tag de lista, você quis dizer que ela está dentro do parágrafo ou não? A validação ajudará você a conseguir isso, fechar a tag e eliminar a ambigüidade.

Considere uma redefinição de CSS

Navegadores diferentes assumem diferentes regras CSS de linha de base. Você pode ajudá-los todos a agir da mesma forma explicitamente resolvendo as diferenças na frente. Eric Meyer, que escreveuCSS: O Guia Definitivousaesta redefinição. Outra escolha popular éYUI Redefinir CSS.

Use uma biblioteca Javascript para interações do DOM

Sempre que seu Javascript precisar trabalhar com elementos em sua página, é melhor usar uma biblioteca como jQuery, Prototype ou MooTools. Essas bibliotecas são usadas por muitos milhares de desenvolvedores, e elas tomam a maioria das inconsistências entre a interpretação de Javascript do navegador, lidam com isso internamente e fornecem um conjunto consistente de comandos que simplesmente funcionam. Tentar encontrar e contornar todas essas inconsistências é uma perda de tempo e provavelmente criará bugs.

Teste em vários navegadores, lide com o IE por último

Teste em vários navegadores à medida que você avança. Geralmente, você descobrirá que navegadores não-IE se comportam de maneira semelhante e o IE é um caso especial - especialmente se você seguir o conselho acima. Quando necessário, você pode adicionar hacks do IE em uma folha de estilo separada e carregá-lo apenas para usuários do IE.

Quirksmode.com é um bom lugar para caçar diferenças aleatórias no navegador.

Browsershots.org pode ajudar a mostrar como sua página será exibida em uma variedade de navegadores e sistemas operacionais.

Falhar graciosamente

Nenhum site ficará perfeito em todos os navegadores existentes. Se um usuário não tiver Flash, Javascript, CSS avançado, etc, você deseja que seu site possa ser usado de qualquer maneira. Design com isso em mente:

Verifique o HTML simples

Tente carregar seu site com HTML simples - sem estilos, sem scripts. As opções do menu estão disponíveis? O conteúdo primário precede o conteúdo secundário? O site é utilizável, mesmo que seja feio?

Considere o aprimoramento progressivo orientado por teste

Descrito emEste artigoEssa técnica usa o javascript para verificar se um navegador tem um determinado recurso, como suporte para uma determinada propriedade CSS, antes de usá-lo na página. É diferente do sniffing do navegador porque testa os recursos em vez de um navegador específico.

questionAnswers(7)

yourAnswerToTheQuestion