1. JavaScript을 통한 이미지 투명화 시키기
2. <!--[if IE]><![endif]--> 을 이용해서 IE에서만 적용되는 스타일 따로 정의해주기
3. 비헤이버와 CSS의 조합으로 투명화 시키기
.
.
.
1번.
<script>
function fixPNG(obj){
var blankImg = "blank.gif";
var Src, Width, Height;
if ( !(typeof obj.style.filter == 'string' && obj.src.substr(obj.src.lastIndexOf(".")+1).toLowerCase() == 'png') ) return; Src = obj.src;
Width = obj.width;
Height = obj.height; obj.src = blankImg;
obj.width = Width;
obj.height = Height;
obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+Src+"', sizingMethod='scale')";
}
</script> <body onLoad="fixPNG(this)">

자바스크립트로 투명도를 주어 작업한 PNG 파일을 웹에서 투명하게 보이게 해줍니다.



접근성의 문제로 그나마 원하는 결과값을 제일 잘 보여준 2번도 보여드립니다.
2번을 사용하는 방법은 간단합니다. <style type="text/css">
#T_L {
position:absolute;
left:0;
top:0;
width:269px;
height:462px;
background:url(/01kr/100test/img/common/bg_left_top_logo01.png) transparent no-repeat left top;
}
</style>

위 소스는 IE가 아닌 다른 브라우저에서 처리할 부분으로 background 이미지 처리방법은 일반적으로 알고 있는 방법과 동일!

<style type="text/css">
#T_L {
position:absolute;
left:0;
top:0;
width:269px;
height:462px;
background:url(/01kr/100test/img/common/bg_left_top_logo01.png) transparent no-repeat left top;
}
</style>
<!--[if IE]>
#T_L {
position:absolute;
left:0;
top:0;
width:269px;
height:462px;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/01kr/100test/img/common/bg_left_top_logo01.png',sizingMethod='scale'); }
</style>
<![endif]-->

위 소스는 <!--[if IE]><![endif]-->을 이용한 IE 브라우저에서 PNG 이미지의 투명화를 필터로 처리한 방법입니다.

좀 더 설명하자면 "<!--[if IE]><![endif]-->"은 IE 브라우저에서만 적용되도록 해주는 소스코드입니다.
filter 속성 역시 IE에서만 적용됩니다.

위 방법으로 하면 PNG 이미지의 배경 투명화는 간단히 해결됩니다.


"<!--[if IE]><![endif]-->" 방법은 꼭 <head></head> 사이에 정의가 되어야 합니다.
<link> 태그를 넣어서 사용해도 문제 없이 적용됩니다..

하지만 이 방법에도 버그는 있습니다.
<div id="T_L">
<form><input></form>
</div>
위와 같이 투명한 PNG 이미지를 백그라운드로 사용한 레이어(div)에서는 form, input 등이 마우스로 선택이 되지 않습니다. (단, 키보드의 탭키로 이동 가능)






3번입니다.
요기저기 기웃거려서 찾아낸 방법(소스)

<style>
.png24 {tmp:expression(setPng24(this))}
</style>

<script>
function setPng24(obj) {
obj.width=obj.height=1;
obj.className=obj.className.replace(/\bpng24\b/i,'');
obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src +"',sizingMethod='image');"
obj.src='';
return '';
}
</script>

요렇게 CSS, Javascript를 넣어주고 적용하는 이미지에...class만 추가해주면 된다.

<img src="xxx.png" class="png24">





-----------------------------------------------------------------------------------

그래서 결과적으로 어쩔 수 없이 위와 같은 부분은 <div><img></div> 방식으로 PNG 이미지 파일을 투명화 패치를 따로 해줄 수 밖에 없었습니다.

IE 7 버전에서는 PNG를 잘 적용시켜준다고하니.....
by Anna 안나 2008. 3. 1. 12:38