CSS 요점 정리 I : 적용 방법, 선택자, 폰트, 텍스트, 배경
CSS ‘선택자, 폰트, 텍스트, 배경’의 핵심 내용을 정리해 보자.
CSS 적용 방법
CSS는 HTML 문서의 스타일을 꾸밀 때 사용하는 스타일 시트 언어이다. CSS 파일을 적용하는 방법에는 다음과 같은 3가지가 있다.
Inline CSS
html 문서에 작성된 요소에 직접 CSS 스타일을 작성한다.
Internal CSS
html 문서의 head 영역에 <style>
태그로 CSS 스타일을 작성한다.
External CSS
외부에 작성한 CSS 파일을 <link>
태그로 html 파일에 연결한다.
선택자
선택자란 스타일을 적용할 대상 요소를 선택해 주는 도구로, 다음과 같은 다양한 선택자가 있다.
전체 선택자(Universal Selector)
HTML 페이지의 모든 요소(태그)를 선택한다.
* { margin: 0; }
태그 선택자(Type Selector)
특정 태그를 선택한다.
p { color: black; }
클래스 선택자(Class Selector)
특정 클래스를 선택한다.
.클래스명 { color: black; }
ID 선택자(ID Selector)
특정 ID를 선택한다.
#ID명 { color: black; }
복합 선택자(Combinator)
두 개 이상의 선택자를 사용하여 요소를 선택한다.
- 하위 선택자: 모든 하위 요소를 선택한다.
상위요소 하위요소
div ul { border: 1px solid black; }
- 자식 선택자: 자식 요소를 선택한다.
부모요소>자식요소1
div>ul { border: 1px solid black; }
- 형제 선택자: 모든 형제 요소를 선택한다.
요소1~요소2
h1~ul { border: 1px solid black; }
- 인접 형제 선택자: 가장 가까운 형제 요소만 선택한다.
요소1+요소2
h1+ul { border: 1px solid black; }
속성 선택자(Attribute Selectors)
요소(태그) 안의 특정 속성들에 따라 스타일을 지정한다. 속성 값의 조건에 따라 스타일을 다양하게 지정할 수 있어 활용도가 높다.
요소[속성]
: 속성이 포함된 요소를 선택한다.요소[속성 = "값"]
: 속성의 값이 지정한 값과 일치하는 요소를 선택한다.요소[속성 ~= "값"]
: 속성의 값에 지정한 값이 포함되는 요소를 선택한다. (공백도 체크)요소[속성 ^= "값"]
: 속성의 값이 지정한 값으로 시작되는 요소를 선택한다.요소[속성 $= "값"]
: 속성의 값이 지정한 값으로 끝나는 요소를 선택한다.요소[속성 *= "값"]
: 속성의 값에 지정한 값이 포함되는 요소를 선택한다.요소[속성 |= "값"]
: 속성의 값이 지정한 값이거나 지정한 값으로 시작되는 요소를 선택한다.
<!-- 요소[속성] 형식 -->
a[href] { color : black; }
<!-- 요소[속성 = "값"] 형식 -->
input[type="text"] { width: 100px; }
<!-- 요소[속성 $= "값"] 형식 -->
a[href$=".xml"] { background: white; }
가상 클래스 선택자(Pseudo-Classes)
링크 선택자 ∙ 동적(이벤트) 선택자
:link
: 방문하지 않은 링크일 때:visited
: 방문한 링크일 때:active
: 요소를 마우스 클릭 또는 키보드 엔터가 눌렸을 때:hover
: 요소에 마우스 커서를 올렸을 때:focus
: 요소에 포커스(초점)가 머물러 있을 때
UI 요소 상태 선택자
:enabled
: 폼의 요소가 활성화된(사용 가능한) 상태일 때:disabled
: 폼의 요소가 비활성화된(사용 불가능한) 상태일 때:checked
: 라디오나 체크박스에서 해당 항목을 선택했을 때
구조적 가상 클래스 선택자
-
:root
: 문서의 최상위 요소를 선택한다. :nth-child(n)
: 앞에서부터 n번째 자식 요소를 선택한다.-
:nth-last-child(n)
: 뒤에서부터 n번째 자식 요소를 선택한다. :nth-of-type(n)
: 앞에서부터 n번째 요소를 선택한다. (해당 요소의 순서만 계산)-
:nth-last-of-type(n)
: 뒤에서부터 n번째 요소를 선택한다. (해당 요소의 순서만 계산) :first-child
: 첫 번째 자식 요소를 선택한다.-
:last-child
: 마지막 자식 요소를 선택한다. :first-of-type
: 첫 번째 형제 요소를 선택한다. (해당 요소의 순서만 계산)-
:last-of-type
: 마지막 형제 요소를 선택한다. (해당 요소의 순서만 계산) :only-child
: 해당 요소가 부모 요소 안에서 유일한 자식 요소이면 선택한다.-
:only-of-type
: 해당 요소가 형제 요소 중에서 유일한 타입의 요소이면 선택한다. :empty
: 텍스트, 공백을 포함하여 자식 요소가 없는 요소를 선택한다.
가상 요소 선택자
가상 요소는 가상 선택자와 구분하기 위해 클론을 두 개(::) 붙인다.
::first-line
: 지정한 요소의 첫 번째 줄을 선택한다.::first-letter
: 지정한 요소의 첫 번째 문자를 선택한다.::before
: 지정한 요소의 시작 지점을 선택한다.::after
: 지정한 요소의 끝 지점을 선택한다.
그 외 선택자
:lang(ko)
: lang 속성의 값이 ‘ko’인 요소를 선택한다.:not(S)
: 괄호 안에 지정한 선택자 이외의 모든 요소를 선택한다.:target
: URL의 해시값과 일치하는 앵커의 목적지인 요소를 선택한다.
폰트 관련 속성
-
font-family
: 글꼴을 설정한다. 웹 브라우저에 따라 지원되지 않는 글꼴도 있어 지원을 희망하는 순서대로 여러 개의 글꼴을 설정해 주는 것이 좋다. -
font-size
: 글자의 크기를 설정한다. font-weight
: 글자의 굵기를 아래의 4가지 값 중에서 하나로 표현한다.- lighter
- normal
- bold
- bolder
font-variant
: 소문자를 작은 사이즈의 대문자로 표현한다.- normal
- small-caps
font-style
: 글꼴의 스타일을 이탤릭체(italic), 기울임(oblique) 등으로 표현한다.- normal
- italic
- oblique
-
font
: font로 한 번에 지정할 수도 있다.font: 10px italic bolder;
color
: 글자의 색상을 지정한다.
텍스트 관련 속성
text-align
: 텍스트의 정렬 방식을 선택한다.start
: 글의 시작점 정렬 (left와 같아 보이지만, 글씨 방향이 반대면 차이가 남)end
: 글의 끝점 정렬 (right와 같아 보이지만, 글씨 방향이 반대면 차이가 남)left
: 좌정렬right
: 우정렬cente
: 중앙 정렬justify
: 라인 양쪽으로 붙여서 정렬match-parent
: start, end 속성을 left, right 값으로 치환하여 가져옴inherit
: 부모에게 상속받음
text-decoration
: 텍스트의 라인(밑줄, 취소선 등)을 설정한다.none
: 설정 제거underline
: 밑줄overline
: 위에 줄line-through
: 취소선
text-underline-offset
: 텍스트의 밑줄의 위치를 설정한다.text-underline-position
: 텍스트의 밑줄이 텍스트와 어떻게 상호 작용하는지 설정한다.auto
: 브라우저가 밑줄 위치를 자동으로 결정under
: 밑줄을 텍스트의 기준선 아래에 위치
text-shadow
: 텍스트의 그림자 효과를 설정한다.none
: 설정 제거- 문법:
text-shadow: 가로위치 세로위치 흐림정도 색상
text-stroke
: 텍스트의 외곽선 효과를 설정한다.text-stroke-width
: 외곽선의 너비를 설정text-stroke-color
: 외곽선의 색상을 설정
text-transform
: 텍스트의 대소문자 변환을 설정한다.none
: 설정 제거capitalize
: 각 단어의 첫 글자를 대문자로uppercase
: 텍스트 전체를 대문자로lowercase
: 텍스트 전체를 소문자로full-width
: 텍스트 전체를 전각 문자로
text-justify
: 텍스트의 정렬 및 간격을 설정한다.auto
: 브라우저의 정렬 방법을 자동으로 설정 (기본값)none
: 브라우저가 텍스트를 정렬하는 것을 비활성화distribute
: 줄 사이의 간격을 조절inter-word
: 단어 사이의 간격을 조절inter-cluster
: 문자 단위로 간격을 조절inter-ideograph
: 한자 및 기타 동양 문자 간의 간격을 조절kashida
: 아랍어 텍스트에서 글자 사이의 간격을 조절
-
text-indent
: 텍스트의 들여쓰기 폭을 설정한다. text-overflow
: 텍스트가 범위를 넘어갈 때 어떻게 처리할지 설정한다.clip
: 넘치는 부분을 자름ellipsis
: 넘치는 부분을 말 줄임표(⋯)로 표시
white-space
: 요소 내의 공백과 줄 바꿈 처리를 설정한다.normal
: 연속된 공백을 하나의 공백으로 처리 (기본값)nowrap
: 공백을 무시하고 텍스트를 한 줄에 표시, 줄바꿈 Xpre
: HTML 소스 코드에서와 같이 공백을 그대로 표시, 줄바꿈 Xpre-wrap
: 연속된 공백을 그대로 표시, 줄바꿈Opre-line
: 연속된 공백을 하나로 표시, 줄바꿈O
direction
: 텍스트의 흐름 방향을 설정한다.ltr
: 왼쪽 → 오른쪽rtl
: 오른쪽 → 왼쪽
-
line-height
: 텍스트 줄의 높이를 설정한다. -
letter-spacing
: 텍스트의 각 문자 사이의 간격을 설정한다. word-spacing
: 텍스트 안의 단어 사이의 간격을 설정한다.
배경 관련 속성
-
background-color
: 요소의 배경색을 설정한다. background-image
: 요소의 배경에 이미지를 설정한다.background-image: url('이미지의 파일 경로 또는 주소');
: 작은따옴표 대신 큰따옴표도 사용 가능하며 생략도 가능
background-repeat
: 배경 이미지의 반복 방법을 설정한다.repeat
: 화면에 가득 찰 때까지 수평, 수직으로 반복 (기본값)repeat-x
: 수평으로만 반복repeat-y
: 수직으로만 반복no-repeat
: 한 번만 표시하고 반복하지 않음
background-position
: 배경 이미지의 위치를 설정한다.- 수평:
left
,center
,right
,백분율
,길이 값
- 수직:
top
,center
,bottom
,백분율
,길이 값
- 수평:
selector {
background-image: url('이미지의 파일 경로 또는 주소');
background-position: right top; /* 우상단 배치 */
}
background-attachment
: 화면을 스크롤 할 때 배경 이미지의 고정 여부를 설정한다.scroll
: 함께 스크롤 됨fixed
: 고정됨
background-size
: 배경 이미지의 크기를 설정한다.auto
: 원래 크기를 유지contain
: 요소 안에 들어오도록 이미지를 축소함cover
: 요소에 맞게 이미지를 늘려서 채우며, 부족한 부분은 자름크기 값
: px, % 등 직접 크기를 설정함
background-clip
: 배경이미지 또는 배경색이 요소의 어느 범위까지 표시될지 설정한다.border-box
: 테두리 영역까지 적용 (기본값)padding-box
: 테두리를 제외한 패딩 영역까지 적용content-box
: 콘텐츠 영역까지만 적용
background-origin
: 배경 이미지의 원점(시작 위치)을 설정한다.border-box
: 테두리 영역을 기준으로 배치됨padding-box
: 패딩 영역을 기준으로 배치됨content-box
: 콘텐츠 영역을 기준으로 배치됨
background
: 한 줄로 위의 속성들을 적용할 수 있다.
background: blue url() center;
그라데이션 효과
: 선형, 원형 2가지 방식으로 그라데이션 효과를 줄 수 있다.- 선형 그라데이션:
linear-gradient(각도/방향, color-stop1, ... color-stopN);
- 원형 그라데이션:
radial-gradient(모양/크기/위치, color-stop1, ... color-stopN);
- 선형 그라데이션:
selector1 {
background-image: linear-gradient(45deg, red, green);
background-image: linear-gradient(to right, red , green);
}
selector2 {
background-image: radial-gradient(red, green, blue);
background-image: radial-gradient(circle, red, green, blue);
background-image: radial-gradient(farthest-side at 60% 55%, red, green, blue);
}