본문 바로가기

html/css

CSS의 기본

출처 손성민의 블로그 | atarraxia
원문 http://blog.naver.com/atarraxia/120012906828
스타일 시트

1. CSS의 기본



(1) 스타일 시트의 탄생배경 및 특징

CSS의 탄생 배경 및 특징

*  HTML의 표현영역을 확대 : HTML에서는 표현할 방법이 없었던 부분을 표현가능하게 함.
* 레이아웃, 배경, 문자열과의 배치 등에 대해 HTML보다 훨씬 더 정확하고 세밀한     표현이 가능.
* 동일한 가상디렉토리 내의 웹 문서 전체에 대해 체계적이고 통일적인 관리가 가능.

<Cascading의 의미>
Cascade는 작은 폭포를 의미하며 CSS의 Cascading은 CSS가 계층적인 구조를 갖고 있으며 적용 우선순위가 있음을 의미한다.

* 방식의 우선 순위 : 한줄 스타일 방식이 다른 방식(문서, 외부)에 비해 우선한다.
(일반적으로 외부 스타일 시트보다 문서 스타일 시트의 우선순위가 높은 것처럼 보이지만 사실은 동등하다. 다만 외부 스타일 시트를 먼저 입력하는 관례에 따라서 그런 효과가 나타나는 것이다. 실제로 그렇게 하여 문서 스타일 시트의 우선 순위를 높여주는 것이 바람직하기는 하다.)

* 셀렉터의 우선 순위 : 아이디 > 클래스 > 태그 (아이디 방식의 우선 순위가 가장 높다.                                         다시 말해서 동일한 정의가 있다면 아이디 셀렉터에 정의한 내용                                         이 최종 적용된다는 뜻이다.

* Dynamic HTML : CSS와 HTML 4.0 그리고 JavaScript 등을 그룹으로 포괄하여 Dynamic                                   HTML이라고 부른다. 특별한 언어의 체계나 집합이 아니라 이전의                                   HTML3.0 단독의 웹문서 제작에 비해 보다 동적인 웹 문서를 제작하는                                   것이 가능하도록 한 세가지의 표현양식을 통칭하여 부른 것이다.
(사실 HTML 3.0 하나로만 제작한 웹 문서와 CSS와 HTML 4.0, JavaScript를 잘 혼용하여 만든 웹 문서는 유저 인터페이스 측면에서 볼 때 그 차원이 다르다고 해도 과언이 아니다.)



(2) CSS의 기본구조

CSS는 셀렉터(Selector : 선택자), 정의문,정의,속성(대표속성),값 등이 모여 구성된다.

* 셀렉터 : CSS의 정의(선언)가 실행될 수 있도록 선택된 개체 또는 위치.
* 정의문(선언문) : 하나 이상의 정의를 {}(중괄호)안에 표현한 문장.
* 정의 : 셀렉터에 적용될 속성과 값을 결정하여 정의함.각각의 정의는 속성과 값으로 이루어                져 있다.
* 속성 : 실제 CSS의 내용이 정의되는 항목. 어떤 항목에 내용 즉 값을 적용할 것인지를 결정                한다.
* 값 : 실제 CSS의 내용. 다시 말해서 웹 문서의 변화는 값을 적용함으로써 실제 실행되는 것            이다.

CSS 정의의 예: (문서스타일(Embeded Style) 방식을 사용하였다.)
<Style type="text/css">
td { text-align:center ; font-size:8pt ; font-family;휴먼명조,굴림 }
</Style>

설명 :
1. td가 셀렉터이고 { text-align:center ; font-size:8pt }가 정의문(선언문)이다.
2. 세 개의 정의가 표현되어 있다.
3. 각각의 정의에서 text-align과 font-size, font-family가 속성이며 center와 8pt 그리고 휴먼명조     와 굴림이 속성의 값이다.
4. :(콜론)은 속성과 값을 대응시킨다. (HTML의 속성과 값을 대응하는 =과 동일하다.)
5. ;(세미콜론)은 두 개 이상의 정의가 표현될 경우 각각의 정의를 구분한다. 따라서 마지막에     는 ;을 사용하지 않아도 된다.
6. 하나의 속성에 값을 여러개 적용할 경우는 ,(쉼표, 컴마)로 구분한다.



(3) CSS의 사용방식

CSS는 그 사용방식이 모두 4가지가있다. External Style Sheet, Imported Style Sheet, Embeded Style Sheet, Inline Style Sheet이 그것이다. 그러나 여기서 Imported 방식은 많이 사용되고 있지 않으므로 생략하고 나머지 세가지 방식에 대해서만 알아보기로 한다.

1. External Style Sheet (외부 스타일 방식) : 문서 내부에 정의하는 것이 아니라 외부에      정의해 놓고 <head></head>사이에 <link>태그로 연결하여 사용.
2. Embeded Style Sheet (문서 스타일 방식) : 문서의 내부(일반적으로      <head></head>사이)에 정의하여 사용함.
3. Inline Style Sheet (한줄 스타일 방식) : 문서의 실제 내용에서 필요한 부분에 직접 정      의하여 사용함.


* External Style Sheet (외부 스타일 방식)

<head>와 </head> 태그사이에 <link rel="stylesheet" type="text/css" href="CSS파일명"> 문장을 삽입해서 사용한다. link 태그에 연결되어 있는 CSS파일은 웹문서가 로딩될 때 동시에 같이 로딩된다. CSS 파일(텍스트 파일로 작성하고 확장자를 CSS로 지정하여 저장)에 미리 필요한 스타일 정의를 작성해두고 사용할 문서에 미리 link 태그를 이용하여 연결하면 되는 것이다.

<head>
<title>외부 스타일 방식</title>
<link rel="stylesheet" type="text/css" href="ohgiraffe.css">
</head>

외부 스타일 방식은 웹 사이트 전체의 웹 문서를 일관성있게 관리하기 위해 꼭 필요하다. (예 : 웹 사이트 전체 웹 문서의 배경이미지를 변경하려면? 만약 사전에 외부 스타일 방식으로 즉 링크 태그를 이용하여 CSS파일이 연결되어 있다면 몇초안에 가능하다. )


* Embeded Style Sheet (문서 스타일 방식) - 가장 일반적인 방식.

역시 <head>와 </head> 태그 사이에 삽입하되 <style> 태그내에 정의한다.

<head>
<title>문서 스타일 방식</title>
<syle type="text/css">
td { text-align:center ; font-size:8pt ; font-family;휴먼명조,굴림 }
</style>
</head>

사실 꼭 <head> 요소 내에 삽입해야 하는 것은 아니지만 사용이 아니라 정의부분이므로 <body> 요소보다는 <head> 요소내에 입력하는 것이 바람직하다.


* Inline Style Sheet (한줄 스타일 방식)

한줄 스타일 방식은 문서 내의 태그에 스타일 속성을 사용하여 정의한다.

<td style="{text-align:center;font-size:8pt;font-family:휴먼명조,굴림}">



2. CSS의 기본(I)



(1) Selector(셀렉터)

셀렉터는 CSS의 정의(선언)가 실행될 수 있도록 선택된 개체 또는 위치를 말하는 것으로서 셀렉터는 세가지로 분류할 수 있다.

1. 태그 사용 방식 : td {text-align:center;line-height:20px;font-size:11px}
2. 클래스 사용 방식 : .aa {text-align:center;line-height:20px;font-size:11px} .(마침표, 도트)가 클래스를 셀렉터로 사용한다는 표시이며 aa는 클래스의 이름(keyword)이다.
3. 아이디 사용 방식 : #aa {text-align:center;line-height:20px;font-size:11px} #가 아이디를 셀렉터로 사용한다는 표시이며 aa는 역시 아디디의 이름(keyword)이다.
예 :
<style type="text/css">
td{text-align:center;line-height:20px;font-size:11pxbackground-color:yellow}
.aa {text-align:right;line-height:30px;font-size:15px:background-color:antiquewhite}
#aa {line-height:15px;font-size:8pt;font-family:새굴림,굴림:background-color:antiquewhite}
<style>



(2) 태그를 셀렉터로 사용하는 방식(Type Selecotr)

일반적으로는 태그를 셀렉터로 사용하는 방식이 많이 사용된다. 하지만 모든 동일한 태그에 일률적으로 적용된다는 단점이 있으므로 클래스방식을 병용하는 것이 바람직하다.

사용 예:
<style type="text/css">
td {text-align:center;line-height:20px;font-size:11px;background-color:yellow}
</style>

<소스와 실행 화면>
1. 스타일을 적용하지 않았을 경우.

소스 :
<html>
<head>
<title>스타일 시트의 셀렉터</title>
</head>
<body>
<table border=2 bordercolor="pink" width=400>
<tr>
<td>오늘의 날씨는?
</tr>l
<tr>
<td>맑음입니다.
</tr>
</table>
</body>
</html>
실행화면 :


2. 사용 예의 스타일을 적용했을 경우
소스 :
<html>
<head><title>스타일 시트의 셀렉터</title>
<style type="text/css">
td {text-align:center;line-height:20px;font-size:11px;background-color:yellow}
</style>
</head>
<body>
<table border=2 bordercolor="pink" width=400>
<tr>
<td>오늘의 날씨는?
</tr>
<tr>
<td>맑음입니다.
</tr>
</table>
</body>
</html>
실행화면 :




(3) 클래스를 셀렉터로 사용하는 방식 (Class Attribute Selector)

클래스를 셀렉터로 사용하게 되면 문서 내의 필요한 부분에만 정의를 사용할 수 있다는 장점이 있다. 다만 클래스 방식만을 사용하게 되면 상당히 복잡하게 정의하게 될 가능성이 높다. 따라서 보편적으로 사용할 부분은 태그를 셀렉터로서 사용하고 추가로 필요한 부분에 클래스 방식을 적용하는 것이 바람직하다.

사용 예:
<style type="text/css">
.aa {text-align:right;line-height:30px;font-size:15px;background-color:lightpink}
</style>

<스타일 적용 했을 때 소스와 실행 화면>
소스 :
<html>
<head><title>스타일 시트의 셀렉터</title>
<style type="text/css">
.aa {text-align:right;line-height:30px;font-size:15px;background-color:lightpink;}
</style>
</head>
<body>
<table border=2 bordercolor="pink" width=400>
<tr>
<td class="aa">오늘의 날씨는?
</tr>
<tr>
<td>맑음입니다.
</tr>
</table>
</body>
</html>
실행화면 :




(4) 아이디를 셀렉터로 사용하는 방식 (ID Attribute Selector)

아이디를 셀렉터로 사용하는 방식은 클래스를 셀렉터로 사용하는 방식과 언뜻 거의 동일해 보인다. 그러나 형태는 유사하지만 사용방법과 목적은 상당한 차이가 있다. 클래스를 셀렉터로 사용하면 한번 정의한 뒤에 동일한 키워드를 문서 내부의 어떤 곳이든 필요한 곳에 여러번 사용할 수 있지만 아이디를 셀렉터로 사용하는 방식은 단 한번만 사용이 가능하다. 문서내에 단 한 곳에서만 사용이 가능하기 때문에 하이퍼링크의 대상이 될 수도 있고 스크립트를 이용하여 특정 아이디의 스타일을 제어하는 것이 가능하다. 하지만 일반적으로 아이디방식은 많이 사용되지는 않고 있다.

사용 예:
<style type="text/css">
#aa {line-height:15px;font-size:8pt;font-family:새굴림,굴림;background-color:antiquewhite}
</style>

<스타일을 적용했을 경우>
소스 :
<html>
<head><title>스타일 시트의 셀렉터</title>
<style type="text/css">
#aa {line-height:15px;font-size:8pt;font-family:새굴림,굴림;background-color:antiquewhite}
</style>
</head>
<body>
<table border=2 bordercolor="pink" width=400>
<tr>
<td id="aa">오늘의 날씨는?
</tr>
<tr>
<td>맑음 입니다.
</tr>
</table>
</body>
</html>
실행화면 :




(5) 그룹 셀렉터 (Group Selector)

1. 서로 다른 태그 셀렉터에 동일한 정의를 사용했을 경우는 하나로 묶어서 사용할 수      있다.

p {font-family: 휴먼명조,굴림; text-align:center}
td {font-family: 휴먼명조,굴림; text-align:center}
라고 표현된 정의는
-> p, td {font-family: 휴먼명조,굴림; text-align:center}라고 합쳐서 정의할 수 있다.

2. 동일한 셀렉터가 여러개의 정의를 사용할 때는 물론 ;(세미콜론)을 사용하여 하나로      묶을 수 있다.

td {font-family}
td {휴먼명조,굴림}
td {text-align:center}

td {font-family: 휴먼명조,굴림; text-align:center}
는 완벽하게 같은 표현이다.




(6) 문장 셀렉터 (Contextual Selector)

특정 셀렉터 안에 포함된 셀렉터에만 스타일을 적용하고자 할 때 사용한다. 태그는 물론 클래스 아이디 선택자 끼리도 가능하고 섞어서 사용하는 것도 가능하다.

td a { font-style:italic} -> td 태그의 텍스트도 아니고 a 태그의 텍스트도 아니고 td 태그 안에 포함되어 있는 a 태그의 텍스트만 이탤릭체로 표현되는 것이다.

사용 예:
<html>
<head><title>문장 셀렉터</title>
<style type="text/css">
td a {font-style:italic}
</style>
</head>
<body>
<table border=2 bordercolor="pink" width=400>
<tr>
<td>오늘의 날씨는?
</tr>
<tr>
<td>오늘은 <a href=http://daum.net target=_blank>맑겠습니다.
</tr>
</table>
<p><a href=mailto:dongweed@hanmaiil.net>기상청 한동견케스터</a></p>
</body>
실행 화면 :


* CSS의 새로운 버전인 CSS2에서는 문장 셀렉터(Contextual Selector)라는 용어를     자손 셀렉터(Descendant Selector)라고 표현하고 있습니다.





3. CSS의 기본(II)




(1) 글꼴 관련 속성

속성 설명
font 대표속성  
color
색이름, RGB값 글자색
font-family
글꼴이름
글꼴(글씨체)
font-size
절대값, 상대값, 길이, 퍼센트
글자크기
font-style
normal, italic, oblique
글자모양
font-variant
normal, small-caps
작은 크기의 대문자로 지정하기
font-weight
normal, bold, bolder, lighter, 100~900
글자굵기



(2) 문자열 레이아웃 관련속성

속성 설명
text-indent
길이, 퍼센트
들여쓰기
text-align
left, right, center
문자열 정렬
line-height
normal, 숫자, 길이, 퍼센트
줄간격(행간격) * 행의 높이가 아니다.
vertical-align
top, bottom, middle
수직 정렬
letter-spacing
normal, auto, 길이
문자 간격
word-spacing
normal, 길이
단어 간격
white-spacing
noraml, pre, nowrap
빈칸 및 줄바꿈 처리
text-decoration
none, underline, overline, line-through, blink
문자열 처리
text-transform
none, capitalize, uppercase, lowercase
문자열 대소문자 변경



(3) 목록관련 속성

list-style 대표속성 설명
list-style-type disc, circle, square, decimal, lower-roman, upper-roman, lower-alpha, upper-alpha, none 목록표시의 형태
list-style-position inside, outside 목록표시의 위치
list-style-image URL, none 목록표시에 이미지를
사용할 수 있다.



(4) 경계선 관련 속성

속성 설명
border-width
대표속성 - thin, medium, thick, 길이
경계선의 색
border-left-width thin, medium, thick, 길이  
border-right-width
thin, medium, thick, 길이  
border-top-width thin, medium, thick, 길이  
border-bottom-width thin, medium, thick, 길이  
border-color 대표속성 - 색이름,RGB값  
border-left-color 색이름,RGB값  
border-right-color 색이름,RGB값  
border-top-color 색이름,RGB값  
border-bottom-color 색이름,RGB값  
border-style none,dotted,dashed,solid,double,groove,
ridge,inset,outset
경계선의 모양
border-left-style none,dotted,dashed,solid,double,groove,
ridge,inset,outset
dot는 점(.),
dash는 대시(- ), solid는 굵게...
border-right-style none,dotted,dashed,solid,double,groove,
ridge,inset,outset
 
border-top-style none,dotted,dashed,solid,double,groove,
ridge,inset,outset
 
border-bottom-style none,dotted,dashed,solid,double,groove,
ridge,inset,outset
 



(5) 배경 관련 속성

속성 설명
background
대표속성  
background-color 색이름, RGB값, transparent 배경색 지정
background-image url, none 배경이미지 경로/파일 지정
background-repeat repeat, repeat-x, repeat-y, no-repeat 배경이미지의 반복여부, 반복방법
background-attachment scroll, fixed 배경이미지의 스크롤 여부
background-position (퍼센트, 길이), (top,center,bottom = 세로위치), (left,center,right=가로위치) 배경이미지의 시작위치 설정



(6) 위치 관련 속성


속성 설명
position static, fixed, absolute, relative (초기값은 static) 위치를 계산하는 방법
float none, left, right Box(일반적으로 이미지)와 글의 위치
clear none, left, right, both 지정한 값의 방향에 떠다니는 박스를 허용하지 않는다.
z-index auto, 숫자 Box가 겹쳐있을 경우 보여지는 순서를 결정
overflow visible, hidden, scroll, auto 컨텐츠가 Box의 범위를 넘어가는 경우의 처리



(7) 외부여백(Margin)과 내부여백(Padding)관련 속성


속성 설명
margin 대표속성 - 길이, 퍼센트, auto 박스(블럭=문단)의 경계선과 외부의 다른 요소의 간격 조절
margin-left 길이, 퍼센트, auto  
margin-right 길이, 퍼센트, auto  
margin-top 길이, 퍼센트, auto  
margin-bottom 길이, 퍼센트, auto  
padding 대표속성 - 길이, 퍼센트 박스(블럭-문단)의 경계선과 내부의 컨텐츠의 간격 조절
padding-left 길이, 퍼센트  
padding-right 길이, 퍼센트  
padding-top 길이, 퍼센트  
padding-bottom 길이, 퍼센트  

 

'html/css' 카테고리의 다른 글

checkbox length  (0) 2010.08.17
웹 에디터를 골라보자  (0) 2010.04.02
FF 가운데 정렬시키기  (0) 2010.01.26
주옥같은 div 레이아웃짜기  (0) 2009.12.10
색상 코드표 알아내기  (0) 2009.12.03