'크로스브라우징'에 해당되는 글 17건

  1. 2010.07.09 ie6 position 버그
  2. 2010.05.14 ie 랜더링 문제
  3. 2010.04.21 브라우저별 테이블 height 값으로 본 픽셀 테스트
  4. 2010.04.08 게시판 tr 오버시 색을 입히는 방법
  5. 2010.04.08 1px 공간 버그
  6. 2010.04.07 ie6 png이미지의 사용
  7. 2010.04.06 미스테리 <col>

ie6 position 버그

크로스브라우징 2010. 7. 9. 18:31

높이값이 홀수일 경우 position 버그가 있다. 위치를 잘 잡지 못하고 아무데나 퍼져 버리는것.

이미지 역시 짝수로 넣어주도록 하자.
:

ie 랜더링 문제

크로스브라우징 2010. 5. 14. 11:59
온갖 비표준에 난무네...쓰지 말아야 될 스타일을 잔뜩 써놔서 억지로 돌아가게 만드려고 보니 아래 메타태그가 필요해졌다.
ie7에서 스크롤이 왜나오나 했더니.....결국은 overflow 버그였다. 일단 아래 메타태그로 해결하긴 했는데 문제가 없는걸까????

<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />


지난해에 메타태그를 써서 크로스브라우징을 좀 더 편하게 작업하고자 했었는데 잘 안되서 던저버렸더랬다. 헌데 이번 프로젝트에서는 참으로 유용하게 쓰이고 있다. 일단 테스트 해 본 결과 ie7과  edge는 서로 호환이 잘 된다. 6버전은 아직 테스트를 해보지 못했다. 버전별 테스트를 해봐야 하는데...보안으로 막혀있어 일반 테스트용으로는 테스트도 안되고 컴퓨터가 반드시 한대 이상 필요한 상황. ie7의 경우는 호환성보기체크로 쉽게 체크해볼 수 있었을것을....무지가 몸을 고생시킨다.

만약 특정 페이지에서 메타태그가 먹지 않는다면 dtd 선언이 무시되고 있다고 의심해 볼 수 있다.
dtd 위에 <!-- 난 주석이야 --> 주석이 있다면 dtd 는 무시된다.

'크로스브라우징' 카테고리의 다른 글

min-height  (0) 2010.07.10
ie6 position 버그  (0) 2010.07.09
브라우저별 테이블 height 값으로 본 픽셀 테스트  (0) 2010.04.21
게시판 tr 오버시 색을 입히는 방법  (0) 2010.04.08
1px 공간 버그  (0) 2010.04.08
:

브라우저별 테이블 height 값으로 본 픽셀 테스트

크로스브라우징 2010. 4. 21. 11:50

<style type="text/css">
body{ margin:20px; padding:0; font-size:12px; }
table{ width:700px; border:0; border-spacing:0; padding:0;}
table th, table td{ border-bottom:1px #ccc solid; height:20px;}
</style>
<!--[if IE]>
    <link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->

조건부 주석 : table{border-collapse:collapse;}

위 CSS를 적용하면 각 브라우저별로 아래와 같은 수치가 나온다.
조건부 주석을 단 이유는 ie6,ie7이 border-spacing:0; 을 인식하지 못하고 벌어지는 현상이 나오기 때문이다.

파이어폭스:19px
오페라:19px
ie:22px
크롬:21px
사파리:21px


이번엔 테이블에 직접 cellpadding="0" cellspacing="0" 값을 넣고 실험해 보았다. 당연히 주석처리 된 부분도 빠진다.
border-collapse:collapse 역시 값을 다르게 보여주기 때문에 꺼리는 편.

파이어폭스:19px
오페라:19px
ie:20px
크롬:20px
사파리:20px

파폭과 오페라를 뺀 나머지 브라우저는 내가 원하는 height=20px 값을 정확하게 보여주었다. 하코사에서 테이블값을 넣을때
cellpadding="0" cellspacing="0" 은 테이블에 직접 넣는게 좋다는 말을 들었는데 직접 실험해보니 수치가 말해준다.

파폭과 오페라에 핵을 쓰기 싫어 이미지 처리를 해보았다.

body{ margin:20px; padding:0; font-size:12px; }
table{ width:700px; border:0;}
table th, table td{ background:url(b_list_bg.gif) repeat-x 0 20px; height:21px;}

<table cellpadding="0" cellspacing="0">
</table>

모든 브라우저가 동일하게 20px;의 결과값을 보여준다.

아래와 같은 디자인의 게시판을 만들경우 table에 background:url(new_boardList.gif) no-repeat; 를 넣으면 col 값이 있을 경우 th 부분에 ie 6/ie 7 에서  원치않는 border가 나오게 된다. 


이럴 경우 반드시 col 을 써줘야 하는 경우가 아니라면 생략하도록 한다.  또는 div/span로 테이블을 감싸 div/span에 이미지를 넣는 방법도 있다. 
레이아웃을 만들때 보통 게시판이 들어가게 되는 공간을 div로 만들고 그 밑에 ul태그로 버튼을 넣게 되는데 이럴경우 테이블과 ul태그를 한꺼번에 감싸기 때문에 테이블의 이미지를 위해서 불필요한 div/span 을(를) 넣을 수 밖에 없게 된다. 경우에 따라 선택해서 쓰면 되겠다.

'크로스브라우징' 카테고리의 다른 글

ie6 position 버그  (0) 2010.07.09
ie 랜더링 문제  (0) 2010.05.14
게시판 tr 오버시 색을 입히는 방법  (0) 2010.04.08
1px 공간 버그  (0) 2010.04.08
ie6 png이미지의 사용  (0) 2010.04.07
:

게시판 tr 오버시 색을 입히는 방법

크로스브라우징 2010. 4. 8. 10:16
예전 테이블 코딩 당시엔 아래 스타일태그를 이용해서 tr에 인라인으로 박아 색을 입혔었다.
onmouseover="this.style.backgroundColor='#9FB6FF'" onmouseout="this.style.backgroundColor=''"

hover의 효용의 알고부터는 코딩의 간편화로 룰루랄라 좋아하며 신나게 썼다. 다 쓰고나니 ie6 얜 안나오더라....  
결국 htc 파일을 쓸수밖에 없었다.
아래는 작업하면서 찾아본 htc파일에 대한 설명이다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

최근에 나온 대부분의 웹브라우저들은 모든 html요소에 :hover 선택자를 지원합니다. :hover 선택자를 사용함으로서, Javascript없이, 단지 CSS 만으로도 테이블의 한 행에 마우스를 올려놓을 경우에 대한 효과를 적용할 수 있습니다. 하지만 인터넷 익스플로러의경우, 사용자가 사용하는 브라우저의 버전에 따라서 :hover의 사용가능여부가 달라집니다.

Whatever:hover는 인터넷 익스플로러 6,7,8버전의 :hover, :active, :focus 선택자의 기능을 개선하도록 제작된 스크립트이며, 이 스크립트를 통하여 인터넷 익스프로러에서도 선택자를 사용하여, 다른 브라우저에서 나타나는것과 동일한 효과를 볼 수 있습니다. 버전 3의 경우 ajax를 지원함으로서, 자바스크립트를 사용하여 삽입된 html태그에 대해서도 위의 선택자들을 사용할 수 있게 되었습니다.

*역주: 인터넷 익스플로러 6버전에서는 a태그를 제외한 다른 모든 태그에서 hover가 먹지 않는다..

사용 방법 :
whatever:hover를 body영역에 넣으면 설정이 완료됩니다. 참고로, behavior에 들어가는 URL은 css파일이 아닌, html파일에 대하여 상대적인 주소가 들어갑니다. 아래와 같이 사용하세요,
body {
   behavior: url("csshover3.htc");
}

작동 원리 :
모든 브라우저들은 자바스크립트를 사용하여 스타일시트의 규칙을 확인하거나, 새로이 규칙을 추가할 수 있도록하는 방법을 제공하고 있습니다. 보통, 익스플로러의 경우 지원하지 않는 모든 항목에 대하여 "unknown"이라는 값을 반환합니다. 예를 들어서 "div p:first-child"의 경우, "div p:unknown"로 변환되고, "p a[href]"의 경우는 "unknown"으로 변환되게 됩니다. 하지만 다행히도 익스플로러는 :hover 선택자를 인지하고 (그에대한 수행은 하지 않은 채) 그대로 놔두게 됩니다.

익스플로러는 또한 동/정적으로 미리 저장되었거나, htc나 hta 확장자를 가진 파일을 통해서 사용자가 직접 만들 수 있는 behavior라는 기능을 제공합니다. behavior는 스타일시트를 통해서 html에 링크되며, 지정된 behavior를 통해서 규칙지정자는 하나의 노드에 대해 더욱 향상된 기능을 제공할 수 있습니다.

위에 적어놓은 사항들을 사용하면, 익스플로러가 지원하지 않는 스타일 규칙을 찾는 behavior를 만들 수 있을 뿐만 아니라, 사용자가 지정한 방식으로 스타일 규칙을 처리할 수 있습니다. 이것은 다음과 같은 과정을 거치게 됩니다.

1. 익스플로러가 지원하지 않는 모든 :hover에 대한 스타일시트를 찾는다.
2. 새로운 클래스명을 사용하여 익스플로러가 지원하는 새로운 규칙을 생성한다.
3. 새로운 클래스명을 위한 스크립트 이벤트를 설정한다.

이러한 방식으로, :hover, :active, :focus는 익스플로러에서 지원될 수 있습니다. 그리고 개발자는 모든것이 자동으로 처리되기 때문에 behavior를 추가하는것으로서 모든 문제가 해결됩니다.

버전 1,2와 달리, 버전 3은 동적으로 추가된 html에 대해서도 지원을 합니다. 1,2버전과 와 3버전이 다른 점은 1,2버전의 경우 페이지를 로드할때에만 해당하는 요소에 대해서 위의 과정을 실행했지만, 3버전에서는 표현식을 사용함으로서 노드들이 그들자신에게 다시 콜백할 수 있게 하였다는 것입니다. 더 자세한 사항은 주석처리된 파일을 참고하세요.



>> 출처:http://frontjang.tistory.com/104


'크로스브라우징' 카테고리의 다른 글

ie 랜더링 문제  (0) 2010.05.14
브라우저별 테이블 height 값으로 본 픽셀 테스트  (0) 2010.04.21
1px 공간 버그  (0) 2010.04.08
ie6 png이미지의 사용  (0) 2010.04.07
미스테리 <col>  (0) 2010.04.06
:

1px 공간 버그

크로스브라우징 2010. 4. 8. 09:51

아무 이유 없이...ie6/ie7에서 이미지 위에 간격이 1px 벌어지는 현상...vertical-align:top; line-height:0; 으로 해결.

line-height:0; 이게 빠지면 ie7은 여전....결국 둘다 써줘야 되더라...


  • vertical-align:top; >> 이건 이미지에
  • line-height:0; >> 이건 이미지 들어있는 박스태그에~

:

ie6 png이미지의 사용

크로스브라우징 2010. 4. 7. 17:06

이제까지 png 이미지를 사용하면서 여러가지 방법을 썼었는데 모두 만족스럽지 않은 결과를 가져왔다. 결론은 png를 사용하지 않게끔 디자인을 하던가...ie6이 없어지던가....둘중 하나인가....orz...

눙물이....ㅠ.ㅠ
유레카!!! 5번~!!!!!

1. 스크립트 사용1 ( 백그라운드 사용 불가/ ie8 에서 작은 하얀점 생김)


<script language="javascript">
<!--
    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>


<style type="text/css">
.png24 {
   tmp:expression(setPng24(this));
}
</style>

<img src="./images/we-want-alpha.png" class="png24">



2. 스크립트 사용2 (이미지/백그라운드 모두 가능하나 백그라운드 반복시 끊김현상 나타남 - 항상 나타나는것은 아닌듯.)

<!--[if IE 6]><script type="text/javascript" src="/js/unitpngfix.js"></script><![endif]-->



<script language="javascript">

var clear="images/clear.gif"; //path to clear.gif

document.write('<script type="text/javascript" id="ct" defer="defer" src="javascript:void(0)"><\/script>');var ct=document.getElementById("ct");ct.onreadystatechange=function(){pngfix()};pngfix=function(){var els=document.getElementsByTagName('*'),ip=/\.png/i,al="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='",i=els.length,uels=new Array(),c=0;while(i-->0){if(els[i].className.match(/unitPng/)){uels[c]=els[i];c++;}}if(uels.length==0)pfx(els);else pfx(uels);function pfx(els){i=els.length;while(i-->0){var el=els[i],es=el.style,elc=el.currentStyle,elb=elc.backgroundImage;if(el.src&&el.src.match(ip)&&!es.filter){es.height=el.height;es.width=el.width;es.filter=al+el.src+"',sizingMethod='crop')";el.src=clear;}else{if(elb.match(ip)){var path=elb.split('"'),rep=(elc.backgroundRepeat=='no-repeat')?'crop':'scale',elkids=el.getElementsByTagName('*'),j=elkids.length;es.filter=al+path[1]+"',sizingMethod='"+rep+"')";es.height=el.clientHeight+'px';es.backgroundImage='none';if(j!=0){if(elc.position!="absolute")es.position='static';while(j-->0)if(!elkids[j].style.position)elkids[j].style.position="relative";}}}}};};
</script>

* 스크립트 넣으면 레이어 틀어지는 현상이 있음

3. ie6 과 그 외 브라우저에서 사용되는 스타일 적용 ( 링크된 텍스트 사용 불가 )

background:url('/common/img/sub/box_bg.png') repeat-y 0 0; _background:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/common/img/sub/box_bg.png', sizingMethod='scale') => 반복으로 백그라운드 쓸때

background:url('/common/img/sub/box_bg.png') repeat-y 0 0; _background:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/common/img/sub/box_bg.png', sizingMethod='crop') => 하나로 백그라운드 쓸때

* 백그라운드 이미지가 아예 사라지고 이미지가 나오지 않을때가 있음.

4. iepngfix.htc 사용 ( 전부 로드 될때까지 배경이 퍼렇게 나타남... )

5. DD_belatedPNG ( 백그라운드: 반복O, 링크O, 인풋?/ 이미지O )

http://www.dillerdesign.com/experiment/DD_belatedPNG/

사용법 :  위 사이트에서 js를 다운받은 후 아래 스크립트를 해당 html에 써준다.
'.png_bg' 는 본인의 png가 들어가는 클래스명/태그로 대체.
ex)) ('.png_bg, .use, img')


<!--[if IE 6]>
<script src="DD_belatedPNG.js"></script>
<script>
    DD_belatedPNG.fix('.png_bg'); /* EXAMPLE */
    /* string argument can be any CSS selector */
    /* using .png_bg example is unnecessary */
    /* change it to what suits you! */
</script>
<![endif]-->

'크로스브라우징' 카테고리의 다른 글

ie 랜더링 문제  (0) 2010.05.14
브라우저별 테이블 height 값으로 본 픽셀 테스트  (0) 2010.04.21
게시판 tr 오버시 색을 입히는 방법  (0) 2010.04.08
1px 공간 버그  (0) 2010.04.08
미스테리 <col>  (0) 2010.04.06
:

미스테리 <col>

크로스브라우징 2010. 4. 6. 09:48

도대체 이녀석 왜이런지 도통 모르겠다. 게시판을 짜는데 ie6,7에서 width 값이 틀어졌다. th에 border:0 이나 border:none; 를 먹여도 계속 선이 나오고  파폭, 오페라 ie8 에서는 멀쩡하게 나오는 width값 마저 틀어졌다. 남들은 잘만 쓰는 col태그....난 왜 문제가 될까...ㅠ.ㅠ

라인과 width값의 범인은 <col> 이녀석.


나오지 말아야할 세로라인과 틀어지는 width값을 바로 잡기 위해 결국 <col>을 삭제하기로 했다.
비표준 ie6 과 ie7이 사라지는 날이 언제나 오려나.....


/**/
남의 CSS가 고치기 더 힘들다....문제는 공통으로 썼던 caption 때문이었음.
: