12. 유지보수
12.1 Link와 Import
동일한 css가 적용된 웹 페이지가 여러개일 때, 수정사항을 일괄적으로 적용할 수 있도록 해줌
- 여러개의 웹 페이지에 중복된 css가 있을 때, 중복된 코드를 별도의 css파일 (e.g
style.css
)를 따로 작성한다. link
나import
를 이용해서 웹페이지가style.css
를 다운받아 적용할 수 있도록 한다.<!-- link 이용 --> <!-- href에 걸린 파일을 다운 받아서 rel값(css)의 문법에 따라 해석해 적용 --> <link rel="stylesheet" href="style.css">
<!-- import 이용 --> <style> @import url("style.css") </style>
- 링크로
style.css
를 걸어놓은 모든 문서는style.css
만 수정하면 일괄적으로 수정된다.
12.2 코드 경량화 (minify)
- 서버와 클라이언트 사이의 데이터 이동을 줄이기 위해 코드의 불 필요한 부분을 줄이는 것
- 코드를 minify 해주는 다양한 도구들이 있고 대표적으로 clean-css를 많이 사용한다.
clean css를 이용하면 코드가 다음과 같이 축약된다.
/*minify전: style.css*/
h1 {
color: tomato;
}
/*minify후: style.min.css*/
/*minify 시킨 파일은 파일명 뒤에 .min을 붙여 표시한다*/
h1{color:tomato}
clean-css는 다음과 같은 방법으로 사용할 수 있다.
12.3 CSS 뛰어넘기 (Preprocessor)
- css에 보다 편리한 기능을 더한 새로운 언어를 이용
- 해당 언어의 문법(syntax)에 따라 코드를 작성한 뒤 CSS로 변환(compile)하여 사용한다.
lesscss
,sass
,stylus
등
Example: Stylus
예를 들어 stylus
를 사용하면 다음과 같은 css
코드를 보다 편하게 나타낼 수 있다.
/*CSS*/
body{
font: 14px/1.5 Helvatica, arial, sans-serif;
}
body #logo {
border-radius: 5px;
}
/*Stylus*/
body{
font: 14px/1.5 Helvatica, arial, sans-serif
/*body 안의 #logo 태그를 보다 직관적으로 나타내고*/
/*선택자를 적을 때 상위태그인 body태그를 계속 중복해서 적어주지 않아도 됨*/
#logo {
border-radius: 5px
}
}
Stylus 이용
에디터의 확장 프로그램(Stylus auto compiler)
.styl
파일을 생성하여 stylus로 작성한 뒤 저장하면 이를 compile한.css
파일이 생성- Compile 옵션은
.styl
파일 상단에 주석처럼 표기해서 조절한다.
/*style.styl*/
/*compile 옵션 설정*/
/*output 파일 이름: style.css. compress(minify 옵션): 켬*/
// out: style.css, compress: true
body {
color: blue;
h1 {
font-size: 10px;
text-align: center;
}
}
Compile 결과:
/*style.css*/
body{color:blue;} body h1{font-size:10px;text-align:center;}
명령어
-
node.js
를 설치한 뒤npm
을 이용해서 stylus를 설치한다.$ npm install stylus -g
-
stylus
.styl
파일명 -o.css
파일명으로 적어서.styl
파일을.css
파일로 compile한다.stylus style.styl -o style.css
-
.styl
파일명 앞에 -w 옵션을 넣으면(watch를 의미)style.styl
의 변경사항을 저장할 때마다 자동으로style.css
파일을 compile 한다.stylus -w style.styl -o style.css
생성된 style.css
를 .html
파일에 링크해서 사용하면 된다.
Stylus Syntex
Stylus의 기본적인 문법. 예시 및 추가사항은 Stylus 사이트의 TRY STYLUS ONLINE을 참고
-
Nesting: Selector를 nesting 방식으로 쓸 수 있다.
-
Flexible syntax:
;
(semicolon),{}
(braclet)등을 생략할 수 있다. -
Parent reference: 현재 태그의 parent selector들을
&
로 대신 표기해서 쓸 수 있다./*Stylus*/ ul li a { display: block color: blue padding: 5px /*&가 ul li a로 치환*/ html.ie & { padding: 6px } }
/*css*/ ul li a { display: block; color: #00f; padding: 5px; } html.ie ul li a { padding: 6px; }
-
Mixins: 함수처럼 동작하는 치환용 code를 만들어 사용할 수 있다.
/*Stylus*/ /*vendor prefix를 한 번에 쓸 수 있는 border-radius 속성을 만듦*/ /*val에 값을 넣으면 모든 val로 표시된 모든 속성에 적용*/ border-radius(val) { -webkit-border-radius: val -moz-border-radius: val border-radius: val } button { border-radius(5px); }
/*css*/ button { -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
-
Trnasparent mixins: 위의 가능을 좀 더 css 문법처럼 사용.
/*Stylus*/ /*val 대신 arguments 이용*/ border-radius() { -webkit-border-radius: arguments -moz-border-radius: arguments border-radius: arguments } button { border-radius: 5px 10px; }
/*css*/ button { -webkit-border-radius: 5px 10px; -moz-border-radius: 5px 10px; border-radius: 5px 10px; }
-
Variables: Variable을 만들어 값을 입력해서 사용 가능. Variable을 사용하면 일괄 수정에 용이하다.
/*Stylus*/ #prompt { width: w = 200px margin-left: -(w / 2) }
/*css*/ #prompt { width: 200px; margin-left: -100px; }
-
Block property access: 같이 nesting 되어있는 다른 속성의 값을
@속성명
으로
치환해서 사용할 수 있다./*Stylus*/ #prompt { width: w = 200px margin-left: -(@width / 2) }
```css
/css/#prompt {
width: 200px; margin-left: -100px;
}
`
'공부를 합니다 > 웹 (Web)' 카테고리의 다른 글
생활코딩 CSS_13 라이브러리(Library) (0) | 2020.04.29 |
---|---|
생활코딩 CSS_11 모션 그래픽 (0) | 2020.04.22 |
생활코딩 CSS_10.5 SVG (0) | 2020.04.06 |
생활코딩 CSS_10.4 변형(transform) (0) | 2020.04.06 |
생활코딩 CSS_10.3 혼합(Blend) (0) | 2020.04.06 |