Marcação CSS para múltiplos navegadores
2 participantes
Página 1 de 1
Marcação CSS para múltiplos navegadores
Precisava desenvolver marcações CSS para mais de um navegador, de preferência em uma única folha de estilos.
1) Atualmente resolvo a questão de duas formas:
(a) criando dois arquivos CSS, um para cada página (ou grupo de páginas); um CSS para o IE e outro CSS para os demais navegadores Mozilla-compatíveis:
Outra variante da mesma solução seria:
2) Uma das dicas que colhi na web seria desenvolver marcações assim:
Outra informação mais fundamentada que colhi recomendava inserir marcações assim:
Como não fui feliz nas minhas tentativas de usar os códigos do tópico "2", queria ajuda para resolver essa questão de uma maneira melhor do que ando fazendo (tópico "1").
1) Atualmente resolvo a questão de duas formas:
(a) criando dois arquivos CSS, um para cada página (ou grupo de páginas); um CSS para o IE e outro CSS para os demais navegadores Mozilla-compatíveis:
- Código:
em uma folha de estilos defino um código CSS "menos específico"
<style type="text/css">
#div_teste {/*para navegadores Mozilla*/
width:100px;
height:100px;
background-color: orange;
}
</style>
e na outra folha o mesmo código "mais específico"
<style type="text/css">
#nome-da-pagina #divcontainer #div_teste {/*para Internet Explorer */
width:200px;
height:200px;
background-color: yellow;
}
</style>
Outra variante da mesma solução seria:
- Código:
fazer um CSS para a página "A" (navegadores Mozilla)
#div_teste { background-color: orange; }
e copiar o CSS para a página "B", incluindo marcações com maior especificidade apenas onde as alterações são necessárias (no Internet Explorer):
#div_teste { background-color: yellow; !important}
#div_teste { background-color: orange; }
2) Uma das dicas que colhi na web seria desenvolver marcações assim:
- Código:
<style type="text/css">
#div_teste {/*para Internet Explorer*/
width:100px;
height:100px;
background-color: orange;
}
html>body #div_teste {/*para outros navegadores*/
width:200px;
height:200px;
background-color: yellow;
}
</style>
Outra informação mais fundamentada que colhi recomendava inserir marcações assim:
- Código:
<!-- para Internet explorer-->
<!--[if IE]>
<style type="text/css">
#div_teste {
width:100px;
height:100px;
background-color: orange;
}
</style>
<![endif]-->
<!-- para outros navegadores-->
<style>
#div_teste {
width:200px;
height:200px;
background-color: yellow;
}
</style>
Como não fui feliz nas minhas tentativas de usar os códigos do tópico "2", queria ajuda para resolver essa questão de uma maneira melhor do que ando fazendo (tópico "1").
wallyvianna- Mensagens : 91
Data de inscrição : 01/07/2010
Re: Marcação CSS para múltiplos navegadores
Realmente, CSS é uma questão delicada, ainda mais quando falamos de sites fortemente focados no design. O problema cresce na medida que novas versões do Explorer são lançadas e temos que nos preocupar ainda com as tais "funções de compatibilidade" que a MS insiste em manter com as versões antigas. Mas nunca se sabe se a opção está ativa ou não no cliente.
O Explorer tem alguns bugs em relação a sintaxe do CSS que podem ser exploraros. Eu costumo definir as CSS no padrão W3C e no mesmo objeto fazer pequenos ajustes usando esses "bugs". Exemplo:
O exemplo que você deu, usando:
Uma dica é usar o JavaScript para detectar o navegador e incluir os estilos específicos quando for o caso, usando a classe/objeto navigator.
Por essas e outras que, quando preciso fazer sites "intimamente dependentes do design", prefiro o uso das boas, velhas e (erroneamente) malfadadas tabelas...
Vamos ver se o HTML5 e a revisão das CSS2 resolvem de vez a questão (pessoalmente acho que vai piorar).
Cá entre nós, já viu os código fonte de alguns serviços do Google? Como você acha que eles mantém a mesma aparência no IE e "no resto"?
O Explorer tem alguns bugs em relação a sintaxe do CSS que podem ser exploraros. Eu costumo definir as CSS no padrão W3C e no mesmo objeto fazer pequenos ajustes usando esses "bugs". Exemplo:
- Código:
font-family: 'trebuchet ms', trebuchet;
font-size: x-small;
/* ajustes gerais para IE */
_font-size : 8pt;
*font-size: 8pt;
/* ajustes para IE 6 e anteriores */
font-size/* */:/**/small;
/* ajustes para IE 7 e posteriores */
font-size: /**/small;
O exemplo que você deu, usando:
- Código:
<!--[if IE 6]>
...
<![endif]-->
<![if !IE]>
...
<![endif]>
Uma dica é usar o JavaScript para detectar o navegador e incluir os estilos específicos quando for o caso, usando a classe/objeto navigator.
Por essas e outras que, quando preciso fazer sites "intimamente dependentes do design", prefiro o uso das boas, velhas e (erroneamente) malfadadas tabelas...
Vamos ver se o HTML5 e a revisão das CSS2 resolvem de vez a questão (pessoalmente acho que vai piorar).
Cá entre nós, já viu os código fonte de alguns serviços do Google? Como você acha que eles mantém a mesma aparência no IE e "no resto"?
Idéia
Então uma idéia interessante seria fazer um código JS que executasse esse algoritmo?
- Código:
<html>
<cabeçalho>
<titulo>JScript escreve CSS por variável</titulo>
<roteiro linguagem="JavaScript" tipo="text/javascript">
funcão escreveCSS() {
var CSSmozilla = "<estilo tipo='text/css'>#div-teste {largura:200px; altura:200px; fundo-coor:yellow}</estilo >"
var CSSIE = "<estilo tipo='text/css'>#div-teste {largura:100px; altura:100px; fundo-coor:lightyellow}</estilo >"
se navegador.nomeDaAplicação for igual a "netscape"
documento.escrever(CSSmozilla)
ou
"internet explorer"
documento.escrever(CSSIE)
}
</roteiro>
<corpo>
<roteiro>escreveCSS()</roteiro>
<div id="div-teste">texto de teste</div>
</corpo>
</html>
wallyvianna- Mensagens : 91
Data de inscrição : 01/07/2010
Tópicos semelhantes
» Tabela de caracteres especiais/latinos para internet
» JS exibir e ocultar camada + escrever
» JS para herança propriedades
» Tabela de caracteres para HTML com JS
» JS/Javascript para exibir aleatoriamente qualquer conteúdo
» JS exibir e ocultar camada + escrever
» JS para herança propriedades
» Tabela de caracteres para HTML com JS
» JS/Javascript para exibir aleatoriamente qualquer conteúdo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos