CSS (Cascading Style Sheets) : 웹 페이지 스타일 및 레이아웃을 정의하는 스타일시트 언어
사용자 인터페이스(UI; user interface)
사물 간 또는 사물과 인간 간의 의사소통이 가능하도록 일시적, 영구적인 접근을 목적으로 만들어진 매개체
사용자 경험(UX; user experience)
사용자가 어떤 제품이나 서비스를 이용하면서 축적하게 되는 모든 지식과 기억, 행동과 감정의 총체적 경험
CSS 문법
선택자(selector)
: 스타일을 적용할 HTML 요소를 가리키는 데 사용 (id, class)
속성(Porperty)
: 중괄호 안에 요소에 적용할 수 있는 내용을 작성하여 요소에 적용할 수 있는 내용
속성의 값의 끝에 세미콜론(;
)을 붙여 속성끼리 구분한다.
(색상, 글자크기 등 다양한 속성 존재)
HTML에 CSS 적용 3가지 방법
<link rel="stylesheet" href="index.css" />
<link>
태그 안에서 href 속성을 통해 파일을 연결
rel
: 연결하고자 하는 파일의 역할이나 특징
=> CSS는 stylesheet이므로 rel 속성에 stylesheet 를 추가
href
: 연결하려고 하는 파일의 위치 작성
=> 다른 폴더에 파일이 존재하는 경우, 절대 경로 또는 상대 경로를 입력해 원하는 파일을 찾아 연결
<h1 style="color:blue;">글자색 변경</h1>
<style>
요소 내에 작성<head>
<style>
h1{
color:blue;
}
</style>
<head>
셀렉터 (selector)
- id
로 이름 붙여서 스타일링 적용하기
요소를 정확하게 선택하기 위해서 id를 붙여서 해결이 가능하다.
#
을 이용한다.- class로 스타일을 분류하여 적용하기
동일한 기능을 하는 CSS를 여러 요소에 적용하기 위해서는 class를 사용한다.
class
가 있는 요소를 선택할 때는 .
을 이용한다.color
: 글자의 색상을 변경하는 속성
속성 값 : HEX (16진수로 RGB; Red Green Blue가 표현된 값) , 주요 색상의 이름
font-family
: 글꼴(폰트)의 속성
font-size
: 글자의 크기
font-weight
: 글자의 굵기
text-decoration
: 밑줄, 가로줄
leter-spacing
: 자간
line-height
: 행간
text-align
: (가로)정렬
유효한 값 : left
, right
, center
, justify
(양쪽 정렬)
절대 단위 : px
, pt
등
상대 단위 : %
, em
, rem
, ch
, vw
, vh
등
- px
: 기기나 브라우저 사이즈 등의 환경에 영향을 받지 않는 절대적인 크기로 정하는 경우
- 일반적인 경우 rem
사용 (브라우저의 기본 글자 크기가 1rem
)
em
은 부모 엘리먼트에 따라 상대적으로 크기가 변경되므로 계산이 어렵다.
- 반응형 웹(responsive web)에서 기준점을 만들 때, 보통 px
사용
- 화면 너비나 높이에 따른 상대적인 크기가 중요한 경우 vw
, vh
사용
( vw
: viewport width ,vh
: viewport height )
모든 콘텐츠는 각자의 영역을 가지며,
일반적으로 하나의 콘텐츠로 묶이는 요소들이 하나의 박스가 된다.
박스 : 너비(width
)와 높이(height
)를 가진다.
줄 바꿈이 되는 박스(block) vs. 옆으로 붙는 박스(inline, inline-block)
줄 바꿈이 일어나지 않는 동시에 block 박스의 특징을 가지는 inline-block 박스
<h1>
<p>
<span>
<span>
요소의 경우는 width, height 속성이 적용되지 않는다.display: inline-block;
을 설정해주면 width, height 적용 가능하다.border (테두리)
각 영역이 차지하는 크기를 파악
- border 스타일 세부 속성
테두리 두께 (border-width
),테두리 스타일(border-style
), 테두리 색상(border-color
)
margin (바깥 여백)
border를 기준으로 박스 외부의 여백을 지정한다.
값의 순서에 따른 방향은 top, right, bottom, left으로 시계 방향이다.
p {
margin: 10px 20px 30px 40px;
}
/* 방향을 특정해서 작성해도 된다. */
p {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
}
padding (안쪽 여백)
border를 기준으로 박스 내부의 여백을 지정한다.
값의 순서에 따른 방향은 top, right, bottom, left으로 시계 방향이다. (margin과 동일)
박스를 벗어나는 콘텐츠 처리
overflow: auto;
: 콘텐츠가 넘치는 경우 스크롤을 생성하도록 한다.
overflow: hidden;
: 넘치는 콘텐츠의 내용을 보여주고 싶지 않을 때 사용한다.
박스 크기 측정 기준
box-sizing: border-box
: 모든 박스에서 여백과 테두리를 포함한 크기로 계산된다.
box-sizing: content-box
: 박스의 크기를 측정하는 기본값이다.
=> 여백과 테두리를 포함하는 박스 크기 계산법인 border-box
를 권장한다.
CSS Selector : CSS 속성을 적용할 대상을 선택하는 방법
기본셀렉터
*
: 전체 셀렉터, 문서의 모든 요소 선택
h1 { }
div { }
section, h1 { } /* 복수 선택 */
태그 셀렉터 : 같은 태그명을 가진 모든 요소 선택, 복수 선택 가능
#only { }
: ID 셀렉터, #id
로 입력하여 선택
.center { }
: class 셀렉터, .class
로 입력하여 선택, 같은 class를 가진 모든 요소 선택
attribute 셀렉터 : 같은 속성을 가진 요소를 선택
자식 / 후손 / 형제 셀렉터
- 자식 셀렉터
: 첫 번째로 입력한 요소의 바로 아래 자식인 요소 선택
header > p {}
- 후손 셀렉터
: 첫 번째로 입력한 요소의 후손을 선택
header p {}
- 형제 셀렉터
: 같은 부모 요소를 공유하면서, 첫 번째 입력한 요소 뒤에 오는 두 번째 입력한 요소를 모두 선택
section ~ p { }
- 인접 형제 셀렉터
: 같은 부모 요소를 공유하면서, 첫 번째 입력한 요소 바로 뒤에 오는 두 번째 입력한 요소를 선택
section + p { }
기타 셀렉터
가상 클래스 셀렉터, UI 요소 상태 셀렉터, 구조 가상 클래스 셀렉터, 부정 셀렉터, 정합성 확인 셀렉터