선택자 { 속성: 값; }
선택자는 스타일(CSS)을 적용할 대상(selector)을 의미합니다.
속성은 스타일(CSS)의 종류(property)를 의미합니다.
값은 스타일(CSS)의 값(value)을 의미합니다.
❗ 세미콜론이 누락되지 않도록 주의
-> 코드를 작성할 때는 예쁘게 작성하는 게 중요합니다!
1. 내장 방식 : 태그 안에 스타일을 작성하는 방식입니다. (권장 ❌)
<style>
div {
color: blue;
padding: 1rem;
}
</style>
2. 인라인 방식 : HTML의 전역 속성인 style을 이용해 직접 스타일을 작성하는 방식입니다. (권장 ❌)
<div style="color: blue; padding: 1rem;"></div>
3. 링크 방식 : link 태그를 이용해서 외부 CSS 파일을 가져오는 방식입니다. (병렬)
<link rel="stylesheet" href="style.css" />
4. import 방식 : CSS의 @import 규칙을 이용해서 CSS 문서 안에 또 다른 CSS 문서를 연결하는 방식입니다. (직렬)
@import url("./header.css");
CSS는 크게 5가지의 선택자를 갖습니다.
기본
* 전체 선택자(Universal Selector) : 모든 요소를 선택합니다.
태그 선택자(Type Selector) : 태그 이름을 선택합니다.
클래스 선택자(Class Selector) : HTML class 속성의 값 .을 이용해 선택합니다.
아이디 선택자(ID Selector) : HTML id 속성의 값 #을 이용해 선택합니다.
/* 전체 선택자 */
* {
color: blue;
}
/* 태그 선택자 */
div {
padding: 16px;
}
/* 클래스 선택자 */
.wrap {
display: flex;
}
/* 아이디 선택자 */
#wrap {
display: block;
}
복합
일치 선택자(Basic Combinator) : 선택자를 동시에 만족하는 요소를 선택합니다.
자식 선택자(Child Combinator) : 선택자의 자식 요소를 선택합니다.
하위(후손) 선택자(Descendant Combinator) : 선택자의 하위 요소를 선택합니다.
인접 형제 선택자(Adjacent Sibling Combinator) : 부모 요소를 공유하는 형제 요소 하나를 선택합니다.
일반 형제 선택자(General Sibling Combinator) : 부모 요소를 공유하는 모든 형제 요소를 선택합니다.
/* 일치 선택자 */
div.wrap {
color: blue;
}
/* 자식 선택자 */
div > span{
color: white;
}
/* 하위 선택자 */
.wrap .btn {
padding: 16px;
}
/* 인접 형제 선택자 */
ul + li {
color: olive;
}
/* 일반 형제 선택자 */
ul ~ li {
color: olive;
}
가상 클래스 (Pseudo-Classes)
:hover : 선택자 요소에 마우스 커서가 올라가 있는 동안 선택됩니다.
:active : 선택자 요소에 마우스가 클릭된 상태에서 선택됩니다.
:focus : 선택자 요소에 포커스가 되면 선택됩니다. (HTML의 대화형 콘텐츠 요소에 적용 가능합니다.)
:first-child : 선택자 요소 중 첫 번째 요소가 선택됩니다.
:last-child : 선택자 요소 중 마지막 요소가 선택됩니다.
:nth-child(n) : 선택자의 형제 요소 중 (n)째 요소가 선택됩니다.
:not() : 선택자가 아닌 요소를 선택합니다.
가상 요소 (Pseudo-Elements)
::before : 선택자 요소의 내부 앞에 내용을 삽입합니다.
::after : 선택자 요소의 내부 뒤에 내용을 삽입합니다.
스타일 상속은 부모 요소의 스타일이 자식 요소의 스타일에 상속되는 것을 의미합니다.
(💥 글자/문자 관련 속성들이 상속)
inherit 속성 값을 사용하면 강제적으로 부모의 스타일을 상속받을 수 있습니다.
우선순위란 같은 요소가 여러 선언의 대상의 된 경우, 어떤 선언의 CSS 속성을 우선으로 적용할지 결정하는 방법을 의미합니다.
width : 요소의 너비를 설정합니다.
- 기본값: auto
max-width : 요소의 최대 너비를 설정합니다.
- 기본값: none
min-width : 요소의 최소 너비를 설정합니다.
- 기본값: 0
height : 요소의 높이를 설정합니다.
- 기본값: auto
max-height : 요소의 최대 높이를 설정합니다.
- 기본값: none
min-height : 요소의 최소 높이를 설정합니다.
- 기본값: 0
px : 픽셀
% : 상대적 백분율
em : 요소의 글꼴 크기
-> 요소 글꼴 크기 16px, 1.5em = 24px
rem : 루트 요소의 글꼴 크기
-> 루트 요소 글꼴 크기 16px, 1.5rem = 24px
vw : 뷰포트 가로 너비의 백분율
vh : 뷰포트 세로 너비의 백분율
box-sizing는 요소의 크기를 계산하는 기준을 지정해 주는 속성입니다.
overflow는 요소의 크기 이상으로 내용이 넘쳤을 경우, 보이는 내용을 제어하는 단축 속성입니다.
❗ overflow-y, overflow-x를 이용해 개별적으로 스타일을 줄 수 있습니다.
position은 요소의 위치를 지정해 주는 속성입니다.
❗ z-index를 사용하려면 우선적으로 position을 지정
flex는 요소를 주축을 기준으로 정렬하는 속성입니다.
flex를 선언하면 요소들은 flex-container(부모)와 flex-item(자식)이 됩니다.
❗ container와 item에 각각 다른 속성이 적용됩니다.
order : 각 item들의 나열 순서를 결정하는 속성 -> HTML 구조는 바뀌지 않습니다.
flex-grow : item의 증가 너비 비율을 설정
- 기본값: 0
flex-shrink : item의 감소 너비 비율을 설정
- 기본값: 1
flex-basis : item의 기본 크기를 설정
- 기본값: auto
flex : flex-grow, flex-shrink, flex-basis를 한 번에 쓸 수 있는 단축 속성입니다.
align-self : align-items의 item 버전으로 item을 교차 축 기준으로 정렬합니다.
앞으로 css 막히면 이 집 찾아오면 되겠어요🤭
지석님 마크다운 실력이 나날이 늘어가시네요👍🏻 !!
저도 차분히 레벨업 해보겠습니다🏃🏻♀️