Resolução Automatica
#1 BrunoBagni
Posted 31/07/2003, 18:53
Eu vi um código onde você criava uma versão em 800 e outra em 1024 e colocava pra abrir. mais não é bem isso que eu quero.
eu procuro um codigo onde você cria a versão 800 e atumaticamente quando você entra no site ele deixa do tamanh da resolução, sem prescizar criar 2 versões...
por favor prescizo muito deste codigo. serei muitissimo grato!
#2
Posted 01/08/2003, 00:08
Sinceramente, o único meio de controlar os tamanhos é usando porcentagem ou então, controlando via JS.
Normalmente, porcentagem é precário e mal implementada por parte dos browsers. Se você testar um width="100%" no IE, será diferente do width="100%" do Mozilla, e assim por diante.
Em vista disso, o meio mais correto de se ajustar um site é via JS.
Aumentando esse desgosto que temos pelos browsers, você pode acrescentar que até hoje, nada foi feito para tentar controlar a altura de objetos. Assim qualquer tentativa de height="90%" que possua conteúdo dinâmico, não funcionará...
Visando isso, novamente nos restou a opção... JS!
Podemos capturar a largura do documento usando window.innerWidth ou document.body.clientWidth no caso do IE e window.innerWidth ou document.documentElement.clientWidth no caso do Mozilla, Opera, Netscape.
Mas, o window.innerWidth naum possui uma precisão muito aceitável, então, acabamos ficando na deixa...
Primeiramente, vamos descobrir se o browser que se trata é o IE:
var ie = /msie/i.test(navigator.userAgent);
Esta linha testa e retorna verdadeiro se o browser for o MSIE e falso caso contrário. Feito isso, precisamos saber se o IE tem o suporte necessário à captura dos dados:
var ieBox = ie && (document.compatMode == null || document.compatMode == "BackCompat");
Pronto... agora temos o que queríamos!
Falta agora, fazer a captura dos dados...
var canvasEl = ieBox ? document.body : document.documentElement;
var w = window.innerWidth || canvasEl.clientWidth;
var h = window.innerHeight || canvasEl.clientHeight;
Pronto!!!
Agora você já tem o que queria... os valores.
Pra dimensionar, use:
document.getElementById("id_do_elemento").style.width = Math.max(0, w) + "px";
Utilizo Math.max para posterior compreensão.
Depois de tudo construído, teste... ele deve funcionar perfeitamente.
Tente então... redimensionar a janela. Já era... o script naum adiantou em nada.
Vamos então, melhorar nosso sistema.
Deixe a checagem do IE de lado...
Pegue a checagem e as linhas de edição de tamanho e agrupe numa função sem parâmetros...
Finalmente, adicione a chamada no evento window.onresize, assim:
window.onresize = checkSize;
Vejamos o exemplo que eu tenho rodando no meu site, o exemplo completo.
É só pra exemplificar, não vou comentá-lo.
var ie = /msie/i.test(navigator.userAgent); var ieBox = ie && (document.compatMode == null || document.compatMode == "BackCompat"); function checkSize() { var canvasEl = ieBox ? document.body : document.documentElement; var w = window.innerWidth || canvasEl.clientWidth; var h = window.innerHeight || canvasEl.clientHeight; document.getElementById("menu").style.height = Math.max(0, h) + "px"; document.getElementById("treeMenu").style.height = Math.max(0, h - 95) + "px"; document.getElementById("spacer").style.height = Math.max(0, h - 411) + "px"; if(document.getElementById("menu").className == "menu-hidden") { size = w - 27; if(ie) box_size = w - 77; } else { size = w - 240; if(ie) box_size = w - 290; } document.getElementById("content").style.width = Math.max(0, size) + "px"; document.getElementById("content").style.height = Math.max(0, h) + "px"; if(ie) { document.getElementById("code_space").style.width = Math.max(350, box_size) + "px"; document.getElementById("box2").style.width = Math.max(350, box_size + 10) + "px"; document.getElementById("box3").style.width = Math.max(350, box_size + 10) + "px"; } } window.onresize = checkSize;
Espero que isto ajude não só a você, mas a muitos outros programadores brasileiros.
Até hoje, só vi 4 sites brasileiros que funcionassem sem problemas em todas as resoluções. Um deles é o meu. Internacionalmente, já vi vários. A maioria usa a mesma base.
Não podia simplesmente mandar um "Valew". Seu post merecia destaque aki, e é o que eu vou fazer. O tópico ficará pendurado por motivos óbvios. Depois os moderadores podem enviá-lo pra tutoriais ou algo do tipo.
Grato,
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>
#3 BrunoBagni
Posted 02/08/2003, 11:56
Tenho certeza que isso ajudara muitas pessoas.
Valeu! Um abraço pro ce! :ok:
#4 BrunoBagni
Posted 02/08/2003, 12:20
<script language="JavaScript" type="text/JavaScript"> var ie = /msie/i.test(navigator.userAgent); var ieBox = ie && (document.compatMode == null || document.compatMode == "BackCompat"); function checkSize() { var canvasEl = ieBox ? document.body : document.documentElement; var w = window.innerWidth || canvasEl.clientWidth; var h = window.innerHeight || canvasEl.clientHeight; document.getElementById("menu").style.height = Math.max(0, h) + "px"; document.getElementById("treeMenu").style.height = Math.max(0, h - 95) + "px"; document.getElementById("spacer").style.height = Math.max(0, h - 411) + "px"; if(document.getElementById("menu").className == "menu-hidden") { size = w - 27; if(ie) box_size = w - 77; } else { size = w - 240; if(ie) box_size = w - 290; } document.getElementById("content").style.width = Math.max(0, size) + "px"; document.getElementById("content").style.height = Math.max(0, h) + "px"; if(ie) { document.getElementById("code_space").style.width = Math.max(350, box_size) + "px"; document.getElementById("box2").style.width = Math.max(350, box_size + 10) + "px"; document.getElementById("box3").style.width = Math.max(350, box_size + 10) + "px"; } } window.onresize = checkSize; </script>na minha pagina... mais não ajustou ao tamanho do browser... em 800x600 ficava perfeito o site, ja em 1024 por 648 não ficou bom, ficou contorcido do mesmo jeito... por que será?
#5
Posted 02/08/2003, 13:37
A parte onde eu escrevi:
Agora você já tem o que queria... os valores.
Pra dimensionar, use:
document.getElementById("id_do_elemento").style.width = Math.max(0, w) + "px";
O id_do_elemento é o ID de um DIV, por exemplo...
Tente assim:
<DIV ID="teste">
Qquer coisa...
</DIV>
E depois, no source JS, isto:
document.getElementById("teste").style.width = Math.max(0, w) + "px";
document.getElementById("teste").style.height = Math.max(0, h - 300) + "px";
Isto deverá dimensionar a camada teste para 100% do documento no width e para o total menos 300px na altura.
Acho que com esta explicação agora tudo se resolve...
Valew,
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>
#6
Posted 02/08/2003, 14:03
<HTML> <HEAD> <TITLE></TITLE> <STYLE> BODY { border: 0px; margin: 0px; } DIV#teste { position: absolute; border: 1px solid #888888; background: #F0F0F0; } </STYLE> <script> var ie = /msie/i.test(navigator.userAgent); var ieBox = ie && (document.compatMode == null || document.compatMode == "BackCompat"); function checkSize() { var canvasEl = ieBox ? document.body : document.documentElement; var w = window.innerWidth || canvasEl.clientWidth; var h = window.innerHeight || canvasEl.clientHeight; document.getElementById("teste").style.width = Math.max(0, w - 50) + "px"; document.getElementById("teste").style.height = Math.max(0, h - 100) + "px"; } window.onload = checkSize; window.onresize = checkSize; </SCRIPT> </HEAD> <BODY> <DIV ID="teste">Conteúdo!!!</DIV> </BODY> </HTML>
Espero que isto ajude.
Grato,
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>
#7
Posted 17/08/2003, 23:06
#8
Posted 17/08/2003, 23:29
Eu acho q é esse:Li o topico e acabei fcando curioso... qual eh o codigo que dependendo da resolução abre uma page diferente q ele falou no primeiro post?!
<script language="JavaScript">
<!--
if ((screen.width>=1024) && (screen.height>=768))
{
window.location="alta.html";
}
else
{
window.location="baixa.html";
}
//-->
</SCRIPT>
FLW pru C.
E-mail: kleber.sylva@bol.com.br
MSN: kleber7777@hotmail.com
#9
Posted 19/08/2003, 23:22
#10
Posted 30/08/2003, 20:38
<email>guilherme_bl@ig.com.br</email>
<icq>254791521</icq>
<msn>guilherme_bl@msn.com</msn>
#11
Posted 16/09/2003, 14:57
Conforme pedido, aqui vai um exemplo do sistema funcionando.
CODE
<HTML>
<HEAD>
<TITLE></TITLE>
<STYLE>
BODY { border: 0px; margin: 0px; }
DIV#teste { position: absolute; border: 1px solid #888888; background: #F0F0F0; }
</STYLE>
.........
Oq significa akele 'DIV#teste' ?
#12
Posted 16/09/2003, 23:16
Eu poderia ter criado classes, como o .teste { ... }, que poderia ser aplicado a qualquer tipo de elemento e/ou Id, bastando chamar a classe, mas no exemplo o que mais me convinha era o ID e a classe específica.
Qualquer dúvida, fala comigo.
[]s,
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>
#13
Posted 24/09/2003, 10:24
Caso seja... como?!
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "
#14
Posted 24/09/2003, 11:00
Aí, no cabeçalho do seu documento, chame-o, assim:
<script src="arquivo.js"></script>
Todo o código JS será incluído.
Mas lembre-se: Seu documento deve conter as mesmas entidades que o JS controla, senão obterá erros.
[]s,
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>
#15 Visitante_gabriel
Posted 24/09/2003, 15:32
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)