Jump to content


Photo

Fix Png


  • Faça o login para participar
2 replies to this topic

#1 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 06/01/2007, 09:47

Não sei se alguém aqui possui fóruns particulares, mas quem tem (ou já acessou fóruns com a nova versão - 2.2.x), pôde perceber que, ao usar o IE de qualquer versão, imagens PNG transparentes (usadas como foto de perfil) não ficam com aquele fundo cinza horrível.

Fuçando o código fonte, perto do rodapé encontrei isso:

<script type='text/javascript'>
//<![CDATA[
menu_do_global_init();
show_inline_messages();
// Uncomment this to fix IE png images
// causes page slowdown, and some missing images occasionally
// if ( is_ie )
// {
//	 ie_fix_png();
// }

global_dst_check(parseInt(""),parseInt("0") );

//]]>
</script>
Atualmente comentada, claro...

Acredito que tal proeza seja feita pela fuinção ie_fix_png()
Fiquei curioso por saber como que tal função é feita, mas não encontrei nos arquivos da pasta /jscripts

Mesmo porque os arquivos daquela pasta são ruins de ler, pela falta de indentação.

E realmente funciona se descomentada. Claro que as imagens ficam um pouco mais lentas, mas comparado ao benefício...

Alguém sabe como que isso foi feito?

[]'s

Edição feita por: Bruno Augusto, 06/01/2007, 09:55.


#2 Guilherme Blanco

Guilherme Blanco

    Loading...

  • Conselheiros
  • 891 posts
  • Sexo:Masculino
  • Localidade:São Carlos - SP/Brasil
  • Interesses:Programação Web e minha namorada (Maria Camila).

Posted 29/01/2007, 12:25

Para cada imagem que queira adicionar este suporte, vc deve adicionar um filtro para funcionar no IE.

Segue:

filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='imagem.png', sizingMethod='scale');


[]s,
<script language="WebFórum">
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>

#3 .ALec

.ALec

    Turista

  • Usuários
  • 56 posts
  • Sexo:Masculino

Posted 30/01/2007, 04:29

Oi Guilherme, há quanto tempo ;)

então cara, minha solução é esta: (declare uma vez e esqueça que existe algum problema)
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) 
{ 
	document.writeln('<style type="text/css">img { visibility:hidden; } </style>'); 
	window.attachEvent("onload", fnLoadPngs); 
} 

function fnLoadPngs() 
{ 
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, ''); 
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5); 

	for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) 
	{ 
		if (itsAllGood && img.src.match(/\.png$/i) != null) 
		{ 
			var src = img.src; 
			var div = document.createElement("DIV"); 
			div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')" 
			div.style.width = img.width + "px"; 
			div.style.height = img.height + "px"; 
			img.replaceNode(div); 
		} 
		img.style.visibility = "visible"; 
	} 
}

É importante salientar que o IE7 possui suporte para PNG transparente ;)

Edição feita por: .ALec, 30/01/2007, 04:33.





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq