업데이트:
IE를 위한 Grid 알아보기
브라우저 호환
Grid는 엣지(Edge)를 포함한 최신 브라우저에서 지원되는 속성이다. 하지만 IE10+ 의 경우에 -ms-
prefix를 추가로 작성해야 적용이 가능하다. Grid를 사용하기 위해 일일이 -ms-
를 적용하기란 쉬운일이 아니기 때문에 PostCSS, Autoprefixer와 같은 도구의 도움을 받으면 수월하게 적용할 수 있다.
* ~IE9 미지원
IE에서 지원되지 않는 속성
repeat()
에auto-fit
,auto-fill
지원되지 않음.fit-content()
미지원, 대신 우회한 방법으로 대체할 수 있음 (auto + max-width).- IE에서
auto
속성은 최신 브라우저에서의auto
와 다르게 해석되는 경우가 있음. 몇 가지의 경우를 제외하고 IE와 최신브라우저 모두minmax(min-content, max-content)
와 같이 해석됨. display:inline
요소에서는 Grid가 작동하지 않음.display:block
으로 해결가능.
개발환경 세팅
필요한 package 설치
- Node 설치
- 프로젝트 폴더를 생성 예) myProject
- 아래 명령어를 작성
> cd myProject
> npm init -y
package.json에 browserslist 설정하기
아래 소스를 추가하여 지원하려는 대상 브라우저를 설정할 수 있다.
아래 코드는 > 1% in KR
은 한국에서 1% 이상의 사용자가 있는 브라우저를 대상으로 하고, ie10+를 지원하고자 할 경우이다. 이 코드는 caniuse
에서 제공되는 데이터를 기반으로 한다.
{
"browserslist": [
"> 1% in KR",
"ie >= 10"
]
}
gulp 설정 방법
gulp를 이용한 설정방법을 알아보겠다. 그전에 우선, 아래 코드를 이용해 관련 패키지를 설치해야한다.
> npm install gulp-cli -g
> npm install gulp gulp-postcss autoprefixer -D
> npm install cssnano -D //css 파일 압축이 필요할 경우
> npx -p touch nodetouch gulpfile.js //gurlfile이 root에 자동으로 생성
설치가 완료됐다면 루트에 위치한 gulpfile.js를 열어 아래 설정사항을 입력하자.
아래 예시의 경우 관리할 css파일은 ./src/styles/styles.css
로 지정되어 있다.
모든 css파일의 경우 ./src/styles/*.css
로 변경할 수 있다.
var postcss = require('gulp-postcss');
var gulp = require('gulp');
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
gulp.task('css', function () {
var plugins = [
autoprefixer({ grid: 'autoplace' }), //grid사용 설정.
cssnano()
];
return gulp.src('./src/styles/style.css')
.pipe(postcss(plugins))
.pipe(gulp.dest('./dest')); //변환된 css파일이 떨어지는 위치
});
마지막으로 gulp css
를 실행하면 dest폴더에 새로운 styles.css파일이 생성되는 것을 확인할 수 있다.
> gulp css
css in js 설정 방법
gulp 설치 없이, package.json과 postcss.config.js를 설정하여 처리하는 방법에 대해서 알아보자. 우선 필요한 패키지를 설치하자!
> npm i cssnano autoprefixer postcss-cli postcss-gap-properties -D
루트에 위치한 package.json에 scripts
를 추가한다.
{
"scripts": {
"postcss": "postcss --config postcss.config.js src/styles/*.css -d dest/",
},
}
위 설정에 따르면 config파일로 postcss.config.js
파일이 사용하고 내부에 설정된 코드를 참조하게 된다. postcss.config.js
내용은 다음과 같다.
코드를 살펴보면 autoprefixer
에 grid
설정을 활성화하여 -ms-
prefix를 자동으로 처리하도록 하였다. 또, cssnano
를 사용해 css파일을 압축하는데 주석을 제거하는 코드를 넣었고, grid
문법인 gap
사용시 예전 문법인 grid-gap
과 최신 문법인 gap
모두 사용할 수 있도록 설정했다.
module.exports = {
plugins: [
require('autoprefixer')({ grid: true }),
require('cssnano')({
preset: [
"default",
{
discardComments: { removeAll: true }
}
]
}),
require("postcss-gap-properties")({ preserve: true })
]
};
설정이 모두완료되었다. 마지막으로 npm run postcss
명령어를 실행하면 src/styles/
폴더에 위치한 모든 css파일을 dest/
폴더에 설정이 반영된 변형된 파일이 생성된다.
> npm run postcss
참고로 폴더 구조는 다음과 같다
|-dest //빌드되어 생성된 파일
||-product.css
||-styles.css
|-node_modules
|-src
||-styles //원본파일 경로
|||-product.css
|||-styles.css
|-package.json
|-postcss.config.js
댓글남기기