배경
- CSS의 특징 상 다양한 정보들이 흩어져서 선언됨
ex) 페이지의 일관된 색구성이 여러 위치에서 작성됨 - 기획이나 색상정보가 변경될때, 찾아 바꾸기로는 한계가 있음
- LESS나 SASS 처럼 추가적인 작업 없이 구현할 순 없을까?
css에서도 변수나 조건문을 쓸 수 있다. 아직 draft상태이긴 하나..
표준으로 채택되고 브라우저 지원률이 확대된다면 페이지 테마등을 한방에 바꾸는게 편해질것 같다.
조건문을 써서 css3를 지원하지 않는 브라우저에 대한 분기를 태워준다던지 (어차피 안먹는건 무시하긴 하겠지만..)
페이지별 스타일도 따로 관리가 가능하시겠다.
간단히 어떤 내용인지 알아보도록 하자. (각 제목을 클릭하면 w3c 관련 페이지로 이동합니다.)
1
2
3
4
5
6
7
8
9
10
11
12
13 |
/* SASS */
$main-color:red;
.foo {
background-color:$main-color;
}
/* LESS */
@main-color:red;
.foo {
background-color:@main-color;
} |
cs |
SASS, LESS 두가지 방식 모두 변환작업이 필요하다는 단점이 있음..
1234567 html{var-main-color:red;}.foo {background-color:var(main-color);}cs
123456789101112131415161718 :root {var-main-color:#333;var-emph-color:#ff0;}.foo {color:var(main-color);border-bottom-color:var(emph-color);}:root {var-column-width:180px;var-cont-width:20px;}.section {width:calc(3 * var(column-width) + 2 * var(cont-width));}cs
1234567891011 :root { var-main-color:blue;}
.cont { var-main-color:gray;}
p {color:var(main-color);} /* blue */.cont h1 {color:var(main-color);} /* gray */ cs
1 .foo {width:33.33%;}cs
1 .foo {width:calc(10/3*10%);}cs
12 :root {var-gnb-width:calc(10/3*10%);}.foo {width:var(gnb-width);}cs
12345678910111213 .shadowed {box-shadow: 2px 2px gray 1px,2px -2px gray 1px,-2px 2px gray 1px,-2px -2px gray 1px;transition: box-shadow .2s;}.shadowed:hover {box-shadow: 2px 2px gray 5px,2px -2px gray 5px,-2px 2px gray 5px,-2px -2px gray 5px;}cs
123456789 .shadowed {var-shadow-blur: 1px;box-shadow: 2px 2px gray var(shadow-blur),2px -2px gray var(shadow-blur),-2px 2px gray var(shadow-blur),-2px -2px gray var(shadow-blur);transition: box-shadow .2s;}.shadowed:hover { var-shadow-blur: 5px; }cs
12345678910 @supports ( display: flex ) {body, .navigation, .content { display: flex; }.navigation { background: blue; color: white; }.article { background: white; color: black; }}@supports not ( display: flex ) {body { width: 100%; height: 100%; background: white; color: black; }.navigation { width: 25%; }.article { width: 75%; }}cs
1234567891011 body { width: 100%; height: 100%; background: white; color: black; }.navigation { width: 25%; }.article { width: 75%; }
@supports ( display: flex ) { body, .navigation, .article { display: flex; width: auto; } .navigation { background: blue; color: white; } .article { background: white; color: black; }} cs
123456 @supports ( display: flex ) {@supports (transition-property: color) or(animation-name: foo) and(transform: rotate(10deg)) {// ...}cs
12345 @supports ((transition-property: color) or(animation-name: foo)) and(transform: rotate(10deg)) {// ...}cs
12 CSS.supports("display", "flex");CSS.supports("(display: flex)");cs
테스트 방법 :
Chrome 최신 버전을 이용한다. chrome://flags 접속 "실험용 웹 플랫폼" 검색 > 사용 Chrome 하단 재실행 클릭
4가지 CSS 필터 정리 (1) | 2019.05.17 |
---|---|
CSS3 컨닝 페이퍼 : CSS3 Cheat Sheet (0) | 2018.01.25 |
CSS 그리드 5분만에 배우기 (Learn CSS Grid in 5 Minutes) (2) | 2018.01.18 |