로그인

이메일
비밀번호
왼쪽에 걸리적 거리는 거 숨기기
예전에 text-overflow:ellipsis 썼을 때에는 IE 에서만 지원하는 스타일이었는데,

어느샌가 Opera, Safari, Chrome 등등에서도 모두 지원하는 CSS 스타일이 되었군요~
CSS3 스펙에도 포함되고 말이죠~ 세상 참 좋아졌습니다-_-; ㅋㅋ

MS 만의 독단적인 text-overflow, filter, ime-mode, expression 같은 CSS 스펙들이 예전에는 참 마냥 미워보이기만 했는데 요즘에는 결과적으로 꽤 괜찮은 짓 같았다는 생각이 드네요~

뭐 아무튼, 이런 좋은 text-overflow 라는 CSS 스타일을
아쉽게도 FireFox 에서는 여전히 지원하질 않습니다.

IE 다음으로 브라우저 점유율이 높은 FireFox 이기 때문에 이를 무시하고 개발하기 좀 망설여지게 되는데요, 방법이 없을까 하고 구글링을 하다가 보석같은 코드를 만났습니다~


위의 코드인데요, 매우 훌륭하지만 몇가지 문제가 있습니다.

  1. 해당 부분 글자가 선택이 안됨
  2. 해당 부분에 태그를 사용할 수 없음
 
이 중 첫번째 문제를 꼼수를 통해 해결 해보았습니다.

구현방법은 설명하기 귀찬; 소스코드를 통해 각자 알아서 파악하세요;

IE6, IE7, FF3, Opera9, Safari3, Chrome 에서 테스트 해 보았습니다.
혹시 다른 브라우저 버젼 쓰시는 분 알려주시면 ㄳ
IE8 beta2 에서는 안되더군요.
이건 스크립트 문제라기 보단 그냥 IE8 beta2 의 CSS 문제인 듯?

두번째 문제는 제가 XUL 을 할 줄 몰라서 방법이 있을런지 모르겠네요.
몇가지를 시도해 보았는데 잘 안됩니다;

아시는 분 알려주세요~
영양가 있는 포스팅인가요
(총 1분이 투표해서 5.0점) 5.0점
2008/10/21 13:26 2008/10/21 13:26


예전부터 앞에 -moz-, -o- 같은게 붙은 스타일을 보고 이건 뭔가 했었는데 CSS 2.1 에 명시되어 있는 내용이었군요.
앞으로 IE 에서도 -ms- 식으로 접두어를 붙힌다고 합니다~

Microsoft CSS Vendor Extensions

알다시피 모든 브라우저에서는, CSS 명세서에는 완전히 정의되어 있는데 구현이 일부분만 되었다던가, 아직 CSS 명세서에 완전히 정의되어 있지 않거나, 아예 정의되어 있지 않은데 구현이 되어 있다던가 하는 경우에 해당 브라우저에서만 지원하는 형태의 CSS 속성들을 가지고 있습니다. (예: -ms-interpolation-mode)


CSS 2.1 에 따르면, 앞에서 얘기한 사항에 해당하는 CSS 속성은 무엇이든 vendor 접두어를 가져야 합니다. (Microsoft 의 '-ms-', Mozilla 의 '-moz-', Opera 의 '-o-' 같은 것 처럼)


CSS 2.1 에 IE8 을 완벽하게 맞추려는 우리의 계획의 일환으로, 다음 사항 중 하나라도 만족시키는 속성에는 '-ms-' 접두어를 붙히기로 결정했습니다.


  • CSS 속성이 Microsoft 만의 확장기능인 경우 (CSS 명세서에 정의가 되지 않은)
  • CSS 명세서에 정의되어 있긴 하지만 아직 W3C 에 의해 확정되지 않은 검토 과정의 속성인 경우
  • CSS 명세서에 정의되어 있긴 하지만 CSS 속성 자체가 아직 완전히 구현된게 아닌 경우


이러한 변화는 이어서 나올 CSS 속성에 적용되어, IE8 에서 동작하는 페이지를 만들때 모두 '-ms-' 라는 접두어를 붙혀야 합니다. (IE8 사용자들이 당신의 홈페이지를 Compatibility View 모드로 보면 IE7 에서 보던 거랑 똑같이 보여지며 이러한 경우 '-ms-' 같은 접두어는 사용되지 않음을 명심하세요)


Property Type W3C Status
-ms-accelerator Extension  
-ms-background-position-x CSS3 Working Draft
-ms-background-position-y CSS3 Working Draft
-ms-behavior Extension  
-ms-block-progression CSS3 Editor's Draft
-ms-filter Extension  
-ms-ime-mode Extension  
-ms-layout-grid CSS3 Editor's Draft
-ms-layout-grid-char CSS3 Editor's Draft
-ms-layout-grid-line CSS3 Editor's Draft
-ms-layout-grid-mode CSS3 Editor's Draft
-ms-layout-grid-type CSS3 Editor's Draft
-ms-line-break CSS3 Working Draft
-ms-line-grid-mode CSS3 Editor's Draft
-ms-interpolation-mode Extension  
-ms-overflow-x CSS3 Working Draft
-ms-overflow-y CSS3 Working Draft
-ms-scrollbar-3dlight-color Extension  
-ms-scrollbar-arrow-color Extension  
-ms-scrollbar-base-color Extension  
-ms-scrollbar-darkshadow-color Extension  
-ms-scrollbar-face-color Extension  
-ms-scrollbar-highlight-color Extension  
-ms-scrollbar-shadow-color Extension  
-ms-scrollbar-track-color Extension  
-ms-text-align-last CSS3 Working Draft
-ms-text-autospace CSS3 Working Draft
-ms-text-justify CSS3 Working Draft
-ms-text-kashida-space CSS3 Working Draft
-ms-text-overflow CSS3 Working Draft
-ms-text-underline-position Extension  
-ms-word-break CSS3 Working Draft
-ms-word-wrap CSS3 Working Draft
-ms-writing-mode CSS3 Editor's Draft
-ms-zoom Extension  


우린 당신이 이미 작성했던 페이지로 되돌아가 '-ms-' 접두어를 추가해 줘야 하는 것과 관련된 업무를 이해하지만 가능한한 표준에 맞게 작성하기 위해서 당신의 페이지를 이렇게 작업해주는 것을 권장 합니다.


그러나 이러한 변환 작업을 쉽게 하기 위해, IE7 에서 존재하는 접두어가 없는 CSS 속성들(deprecated 가 고려되고 있는)도 IE8 에서도 여전히 동작할 것 입니다.


filter CSS 속성의 문법 바꾸기


아쉽게도, 원래 filter 문법은 CSS 2.1 표준이 아닙니다. 예를 들어 아래에 빨간색으로 강조되어 있는 등호(=)나 콜론(:), 그리고 쉼표(,) 같은 것들은 비표준입니다.

filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80, FinishOpacity=70, Style=2);


우리의 CSS 파서가 표준에 맞도록 다시 설계되었기 때문에, 예전의 filter 문법은 CSS 명세서에 따르면 무시됩니다. 때문에 선언된 filter 를 따옴표로 감싸주는 것이 필요합니다. 위에 정의되어 있는 filter 문법을 올바른 방법으로 변경하면 아래와 같습니다. (바뀐 부분은 초록색으로 강조)

-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80, FinishOpacity=70, Style=2)";


IE7, IE8 사용자 모두에게 filter 가 잘 작동되도록 하기 위해, 위에서 보여준 문법 두개를 모두 포함할 수도 있습니다. 우리의 파서가 가지고 있는 특색 때문에, Compatibility View 모드에서도 filter 가 제대로 동작하기 위해서는 예전 filter 의 사용 방식 앞에 새로운 방식을 추가하는 형태로 문법을 수정할 필요가 있습니다. (이건 이미 알고 있고 IE8 마지막 버젼에서는 수정될 버그입니다)


여기 CSS 스타일시트 예제입니다.

#transparentDiv {
       -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
       filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
       opacity: .5;
}


시간 내서 봐주셔서 감사드리고 피드백 환영합니다~


Harel M. Williams 

Program Manager

영양가 있는 포스팅인가요
(총 1분이 투표해서 3.0점) 3.0점
2008/10/14 09:58 2008/10/14 09:58

파폭에도 querySelector 함수군이 생긴다는 소식을
회사 동료를 통해 들었다.
요즘 RSS 구독을 성의있게 안 하다 보니까 새로운 소식에 무뎌지는군;;;

http://www.dustindiaz.com/firefox-31-brings-good-stuff/

이제 저런 함수군을 사파리(WebKit), IE8, FF3.1 에서 (오페라는.. 어떤지 기억이 안남;)
모두 지원하게 되니

슬슬 예전에 만든 CSS 셀렉터엔진을 저런 네이티브 함수를 쓰도록 고쳐야 하는데...
만만찮은 규모의 작업일 듯 싶다;

아으앙
영양가 있는 포스팅인가요
(아무도 투표를 안 했어요) 0점
2008/07/31 11:41 2008/07/31 11:41

이게 뭥미 IE8

컴퓨터/웹 2008/01/29 19:24

전에 IE8 가 Acid2 통과했다는 소식으로 얼씨구나 했드만
다시 Strict DTD 에서도 기존 IE7 식으로 렌더링 하게 한다고 한다.

http://blogs.msdn.com/ie/archive/2008/01/21/compatibility-and-ie8.aspx
물론 저 영어 해석한거 아님, 다른 분 블로그에서 한글로 친절히 설명된걸 봤을뿐.

대신 <meta http-equiv="X-UA-Compatible" content="IE=8" /> 라는 놈을 넣어줘야 비로소

사용자 삽입 이미지


요놈을 볼 수 있다고 하니, 이게 뭥미
조낸 실망.
영양가 있는 포스팅인가요
(총 1분이 투표해서 5.0점) 5.0점
2008/01/29 19:24 2008/01/29 19:24

IE 의 그지같은 CSS 지원을 자바스크립트의 힘으로 해결해주는
IE7.js 의 베타2 가 나왔습니다~

몇 년전에 조금 써봤는데 꽤 좋은 것 같더라고요.
근데 잘못된 CSS 을 자바스크립트로 교정하는거다보니 화면이 잠깐 꿀렁(?)거리는 문제도 있고 해서 개인적인 용도의 페이지에는 쓰기 좋겠지만 기업에서 공식적인 서비스에서 활용하기에는 좀 무리가 있을 것 같다는 생각입니다.

IE 의 CSS 지원이 오죽 못 났으면 이런 스크립트도 개발될까 MS 에서 반성하고 차기 브라우저에서 CSS 지원에 더욱 신경을 써줬으면 하는 바램.
이미 IE8 에서 Acid2 Test 를 통과했다는 소식이 들렸으니 어떤 경로로든 자극을 받은걸까요;

다운로드는 아래의 경로에서.
http://dean.edwards.name/weblog/2008/01/ie7-2/
영양가 있는 포스팅인가요
(총 1분이 투표해서 0.0점) 0.0점
2008/01/08 12:14 2008/01/08 12:14

사실 그동안 잘 못 알고 있다가,
팀원 형이 물어봐서 알게 되었는데.

글자색이 파랗게 바뀌지 않는다 (Language : html4strict)
  1. <style type="text/css">
  2.   #test { color:red !important; }
  3. </style>
  4. <span id="test">HELLO</span>
  5. <script type="text/javascript">
  6.   var oEl = document.getElementById("test");
  7.   oEl.style.color = "blue";
  8. </script>

위의 코드의 경우, CSS 에서 !important 옵션을 주었기 때문에
자바스크립트에서 해당 엘리먼트의 CSS 를 변경해도 반영되지가 않는다.
난 !important 보다 inline CSS 의 우선순위가 더 높은 줄 알고 있었는데 그게 아닌거다.

아무튼 어떻게 바꾸는 방법이 없을까 생각하다가.
이렇게 해보니까 되더라.

cssText 속성을 사용했다 (Language : html4strict)
  1. <script type="text/javascript">
  2.  
  3.   function setCSS(oEl, sKey, sValue) {
  4.      oEl.style.cssText += ';' + sKey + ':' + sValue + ' !important;';
  5.   }
  6.  
  7. </script>
  8. <style type="text/css">
  9.   #test { color:red !important; }
  10. </style>
  11. <span id="test">HELLO</span>
  12. <script type="text/javascript">
  13.   var oEl = document.getElementById('test');
  14.   setCSS(oEl, 'color', 'blue');
  15. </script>


영양가 있는 포스팅인가요
(총 3분이 투표해서 4.0점) 4.0점
2007/11/23 15:16 2007/11/23 15:16

이것저것 삽질 하다가
이렇게 쓰는 게 제일 기대하는 결과를 보여주는 듯.

(Language : css)
  1. .inline-block {
  2.   display:-moz-inline-box;
  3.   display:inline-block;
  4.   vertical-align:middle;
  5. }
  6.  
  7. .inline-block * {
  8.   vertical-align:baseline;
  9. }

영양가 있는 포스팅인가요
(총 2분이 투표해서 2.0점) 2.0점
2007/06/28 10:06 2007/06/28 10:06

가수 다이내믹 듀오 얘기아님;

예전에는 뭐 하나 보여주고 숨기고 하는거를 죄다 자바스크립트로 처리했었는데...
CSS 와 JavaScript 콤비네이션으로 사용하면 극히 간단하게 문제를 해결할 수 있다는 걸 깨닫고 요즘 만들고 있는 자바스크립트 셀렉트박스, 스크롤상자 등등의 HTMLElement 와 최근 참여하고 있는 서비스들을 모두 이렇게 만들고 있다.

어떤 상황에서는 이렇게 보여야 하고, 다른 상황에서는 저렇게 보여야 하고..
지금까지 모두 if 로 감싸서 각각의 숨기고 보여야 할 엘리먼트에게 하나하나 스타일을 지정해주는 식으로 되어 쓸데없이 길어졌던 자바스크립트 소스가,

간단히 엘리먼트에 className 를 추가해주고 CSS 파일을 슥슥 고쳐줌으로써
소스도 팍팍 줄고 디자인의 변화에도 유연히 대처할 수 있어졌다.

가장 큰 장벽은 역시 CSS 를 제대로 지원하지 않는 IE 인데...
이번에 만든 스크롤상자도 IE 의 Flicker Bug 땜에 골치를 썩이고 있다 ㅠㅠ

아무튼 디자인 요소가 조금이라도 엮여있으면 JavaScript & CSS 강력추천!

방금도 만드려면 시간 꽤나 걸리겠다 생각했던 기능이 예상보다 짧은 시간과 적은 코드소스(불과 200라인!?)로 해결되는 것을 직접 체험하였다!

혹시 CSS 를 모르고 자바스크립트를 하고 있다면 당장 CSS 책을 펼쳐들어라!
드래프트이지만 CSS3 에는 너무나 매력적인 기능이 많으니 결국 CSS 가 웹개발자를 구원할지어니!

CSS 만쉐!!
IE 바스타드-_-
영양가 있는 포스팅인가요
(총 1분이 투표해서 5.0점) 5.0점
2007/06/02 11:45 2007/06/02 11:45

IE7 도 구리지만 IE6 이하 버젼의 CSS 지원은 더 그지같은데...
이 정도인 줄은 몰랐다-_-

(Language : css)
.foo.bar { color:blue; }
.bar { color:red; }

이런 CSS 에서

(Language : html4strict)
<span class="foo bar">하하하</span>
<span class="bar">호호호</span>

이런 HTML 코드를 사용하면,
원래는 당연히

하하하 호호호

이렇게 나와야 하는데... IE6 이하에서는...

하하하 호호호

아악; 이렇게 극히 기본적인 CSS 도 지원 안하는 줄은 처음 알았네 ㅠㅠ
어떻게 방법이 없나;;

이 놈의 MS 는 IDE 하고 응용프로그램은 존내 맘에 드는데 브라우저 꼬라지는 맘에 안 들어 죽겠어;
영양가 있는 포스팅인가요
(총 1분이 투표해서 1.0점) 1.0점
2007/05/13 01:19 2007/05/13 01:19
,