2012년 10월 5일 금요일

[CSS-웹표준 교과서]2. CSS 적용방법과 우선순위

@ CSS의 다양한 적용방법

- XHTML 문서에 CSS를 적용하는 데는 다섯 가지 방법이 있다.

 1. style 속성을 개별 요소에 지정한다.

  <p style="margin :15px;">  

 2. <head> 범위 안에 style 요소로 지정한다.

 <style type="text/css">  
  p { margin : 15px; }  
  </style>  

 3. <head> 범위 안에 link를 사용하여 외부 스타일시트를 참조한다.

  <link rel="stylesheet" type="text/css" href="./css/default.css"/>  

 4. head 범위 안에 @import로 외부 스타일시트를 참조한다.

 <style type="text/css">  
  @import url("./css/default.css");  
  </style>  

 5. xml-stylesheet 처리 명령으로 외부 스타일시트를 참조한다.

  <?xml-stylesheet type="text/css" href="./css/default.css"?>  

- 위의 다섯 가지 방법 가운데 1,2 같이 XHTML 문서 안에서  CSS를 기술하는 방법보다 3,4 처럼 외부 스타일시트를 참조하는 방법을 추천한다. 5는 W3C권고에 근거하여 XML로 외부 스타일시트을 참조하는 방법이다.

 #meta 요소로 스타일시트 언어 지정
- 어떤 적용방법을 사용하더라도 XHTML문서에 CSS를 사용할 때는 스타일시트 언어의 MIME 타입을 지정한다. CSS의 MIME타입은 'text/css'이며 head 요소의 범위에 meta 요소(p. 46)로 지정한다. http-equiv 속성값은  'Content-Style-Type', content 속성값은 'text/css'로 지정한다.

 <meta http-equive="Content-Style-Type" content="text/css"/>  

- 서버가 Apache라면 .htaccess파일에 다음같이 지정하는 방법도 있다.

 Header apeend Content-Style-Type "text/css"  


@ 스타일의 우선순위

 #스타일을 읽어들이는 순서

 - "가장 마지막에 지정된 스타일을 우선적으로 적용한다"

 p.attn { color : purple }  
 p.note { color : red }  
 <p class="attn note"> 주의문 </p>  
- 빨간색(note) 이 적용

# 스타일의 개별성
 - CSS에서는 다음 규칙을 기준으로 a의 수를 '100' , b의 수를 '10', c의 수를 '1'로 개별성을 계산한다.
 1. 선택자에 포함된 id의 수(=a)
 2. 선택자에 포함된 가상 클래스와 속성(class 포함)의 수(=b)
 3. 선택자에 포함된 요소명의 수(=c)
 4. 가상 요소는 계산에 포함하지 않는다.

 * {} /* a=0, b=0, c=0, 개별성=0 */  
  ul {} /* a=0, b=0, c=1, 개별성=1 */  
  ul+ol {} /* a=0, b=0, c=2, 개별성=2 */  
  ul+ol li {} /* a=0, b=0, c=3, 개별성=3 */  
  li[class="num"] {} /* a=0, b=1, c=1, 개별성=11 */  
  ul+ol li.num {} /* a=0, b=1, c=3, 개별성=13 */  
  li.num.com {} /* a=0, b=2, c=1, 개별성=21 */  
  #get {} /* a=1, b=0, c=0, 개별성=100 */  
  p#attn {} /* a=1, b=0, c=1, 개별성=101 */  


 p { color : black; }  
 p.attn { color : red; }  
 p#attn1 {color : purple; }  
 <p class="attn" id="attn1">주의문</p>  
- p#attn1 의 개별성은 '101' , 'p.attn'의 개별성은 '11', 'p'의 개별성은 '1'로 계산되어 'p#attn1'이 먼저 적용된다.

  #get{ color : blue; }  
  <p id="get" style="color : green " > 텍스트 </p>  
- style 속성은 id로 해석되어 개별성은 100이다. 위의 경우 뒤에 나오는 속성이 적용되므로 green의 텍스트가 된다.

# 사용자 스타일시트 우선
 - CSS에는 "사용자 스타일시트를 우선한다." 라는 규칙이 있다. 이는 '사용자측 스타일 우선'(user override of style) 이라고도 하며 작성자 측의 CSS에 대하여 사용자 측의 CSS를 우선적, 강제적으로 적용하기 위한 규칙이다.
 - XHTML 문서에 적용된 스타일에는 '작성자 스타일', '사용자 스타일' '브라우저(사용자 에이전트) 스타일'의 세 가지가 있지만 보통 이 순서가 그대로 우선순위가 된다.

 작성자 스타일 > 사용자 스타일 > 브라우저 스타일  

- 속성에 '!important' 선언을 지정한 경우 스타일의 우선순위가 다음같이 변경된다.

 !important선언을 한 사용자 스타일 > !important선언을 한 작성자 스타일 > 작성자 스타일  
   > 사용자 스타일 > 브라우저 스타일   

댓글 없음:

댓글 쓰기