CSS는
Level1
,Level2
,Level3
를 거쳐오며 현재는 CSSLevel3
가 사용되고 있다.
Level3
부터는 모듈별로 버전이 다르게 적용된다.
CSS 내부에도 굉장히 많은 속성들이 있는데 특징에 따라 Categorized 즉, 모듈화 되어있다.
ex) font, table, animation, ...
사용자들이 어떤 웹 브라우저를 선호하는지 파악하고,
신규 CSS 속성이 출시되면 브라우저들의 지원 여부를 알아보고 적용시켜야 한다.
F12
-개발자도구
-Elements
-Styles
에서
태그마다 어떤 스타일이 적용되어있는지 확인할 수 있다.
각 모듈별로 다른 버전을 갖고 있으며, 업데이트는 현재 진행형이다.
A) 업데이트 할 게 적은 요소와 많은 요소들이 나누어져 있으며,
웹브라우저마다 지원하는 버전이 다를 수 있기 때문입니다.
예를 들어, 폰트와 관련된 스타일은 오래 되었기 때문에 추가할 것들이 별로 없지만
애니메이션과 같은 스타일은 계속해서 새로 출시되는 기능들이 있겠죠?
이것들을 한꺼번에 묶어서 배포하고 'versioning' 을 유지하려면 답도 없답니다!
Cascading : '위에서 아래로 흐르는' 이라는 사전적 의미를 지닌다.
폭포가 흐르는 것처럼 '여러 개의 스타일이 하나의 요소에 있는 것'을 의미한다.
CSS는 상속의 상속의 상속의 연속 😂
CSS 는 룰 기반(Rule-based)의 언어이다.
CSS 를 통해 특정 요소, 혹은 특정 요소들의 집합의 스타일 규칙을 정의할 수 있다.
<h1>Welcome!</h1>
<ul>
<li>Toy Story</li>
<li>Zootopia</li>
<li>Inside Out</li>
</ul>
위 코드에서 <h1>
태그에는 빨간색, <li>
태그에는 초록색 글씨의 스타일링을 적용시키면
해당 태그에 전부 스타일을 적용시킨다.
h1 {
color: red;
font-size: 12px;
}
p {
color: black;
}
=
<h1>
태그의 글씨 색을 빨간색으로, 폰트 사이즈는 12픽셀로!!
h1
: Selector (셀렉터) 로써 태그 혹은 **여러 가지 선택자가 될 수 있다.
{...}
: 선언부, 또는 선언 블럭으로써 하나 이상의 선언이 들어간다.
[속성]: [값];
: 선언이라고 지칭하는 속성과 값 쌍으로써 정확하게 입력해야 스타일이 오류없이 적용된다.
콜론과 세미콜론 등도 정확하게 작성해줘야 한다.
하나의 Rule 세트 구성
- 선택자 (Selector) : 스타일을 지정할 HTML 요소를 선택
- 선언 블록 (declation block) : 중괄호
{}
내부에 여러 선언들을 작성- 선언 (declations) : 프로퍼티와 값으로 이루어진 쌍
선택자 {하나 이상의 선언}
의 형태로 이루어진 하나의 Rule (혹은 Rule Set)
/* 내용 */
의 형식으로 작성한다.
/* 한 줄 주석 */
/*
여러 줄을
차지하는
주석
*/
- 내부 스타일 (embedded)
- 인라인 스타일 (inline)
- 외부 스타일 (external)
<head>
...
<style>
h1 {
color: red;
}
</style>
</head>
<head>
태그 내에 <style>
태그를 사용하여 작성한다. <body>
<h1 style="color: red;">Welcome!</h1>
</body>
내부 스타일과는 달리 전체가 아닌 하나의 요소에만 특정 스타일을 지정할 때 사용한다.
✅ 태그에 style
속성을 지정해준다.
여러 스타일을 나열할 때 반드시 ;
(세미콜론) 을 빼먹지 말자!
웹 표준으로써 권장하는 방법은 아니다. '이렇게 사용할 수 있구나' 정도만 알아두자.
<head>
...
<link rel="stylesheet" href="basic.css" />
</head>
html 파일과 css 파일을 따로 만들어 <link>
태그로 연결시켜준다.
rel
: relationship 으로, 현재 문서와 외부 파일이 어떤 관계에 있는지 입력한다.
위에서는 CSS 파일이기 때문에 'stylesheet' 를 사용했다.
href
: 파일의 경로를 입력한다.
웹 표준에서 권장하는 사용 방법이다. 개발시에도 되도록 외부 스타일로 사용하도록 하자!
- 스타일 우선순위
- 스타일 상속
동일한 스타일이라도 선언된 곳에 따라 우선순위가 정해진다.
브라우저에 의해 정의된 스타일 < 개발자가 선언한 스타일 < 사용자가 구성한 스타일
✅ 브라우저에 의해 정의된 스타일 = user agent 에 의해 기본으로 설정된 스타일
적용 범위가 적을수록 우선시 된다.
tag 스타일 < class 스타일 < id 스타일 < 인라인 스타일
소스코드의 순서가 뒤에 있으면 덮어쓴다.
위에서 아래로 흐르기 때문에 나중에 읽는(더 아래쪽에 있는) 스타일이 이긴다!
부모 요소에 있는 스타일 속성들이 자식 요소로 전달된다.
✅ 자식 요소에서 재 정의할 경우 --> 부모의 스타일을 덮어쓴다.
상속이 되지 않는 속성도 있다.
ex) 배경 이미지, 배경 색, ...
이름이 생각나지 않거나 다른 비슷한 속성들이 궁금하면
우리의 Google 신에게 물어보자.
MDN 사이트가 번역도 잘 되어있고 많은 자료들이 있다.
can i use 사이트에는 각 브라우저별 호환성을 한눈에 볼 수 있다.
특정 브라우저에서 이상하게 깨지는 현상이 나타나면 위 사이트에서 원인을 찾아보도록 하자!