SCSS
SCSS로 Jekyll 블로그 스타일링 완전 정복
그러면 이 레이아웃에 스타일은 어떻게 입히냐 바로 css가 입혀줍니다. Jekyll은 SCSS를 기본 지원하므로 CSS보다 훨씬 효율적으로 스타일을 관리할 수 있습니다.
Jekyll의 SCSS 구조 이해하기
assets/css/style.scss
파일이 메인 스타일시트 역할을 하고, _sass/
폴더의 부분 파일들을 임포트해서 사용합니다.
기본 폴더 구조
assets/
└── css/
└── style.scss # 메인 스타일시트
_sass/
├── _variables.scss # 변수 정의
├── _base.scss # 기본 스타일
├── _layout.scss # 레이아웃 스타일
├── _header.scss # 헤더 스타일
├── _sidebar.scss # 사이드바 스타일
├── _posts.scss # 포스트 스타일
└── _home.scss # 홈페이지 스타일
메인 스타일시트 설정
---
# assets/css/style.scss
---
// 변수와 기본 설정을 먼저 임포트
@import "variables";
@import "base";
// 레이아웃별 스타일
@import "layout";
@import "header";
@import "sidebar";
// 페이지별 스타일
@import "home";
@import "posts";
// 반응형 스타일
@import "responsive";
파일 맨 위의 ---
는 Jekyll이 이 파일을 처리하도록 하는 표시입니다. 이것이 없으면 SCSS 컴파일이 되지 않아요! 이거 지웠다가 엥? 하고 다시 붙여넣은지 몇번만에 알았습니다.
변수를 활용한 체계적인 스타일 관리
SCSS의 가장 큰 장점은 변수를 사용할 수 있다는 것입니다. 색상, 폰트, 간격 등을 변수로 정의하면 일관성 있는 디자인을 만들 수 있어요.
기본 변수 정의하기
// _sass/_variables.scss
// 색상 팔레트
$primary-color: #2c3e50;
$secondary-color: #3498db;
$accent-color: #e74c3c;
$background-color: #ffffff;
$text-color: #333333;
$light-gray: #f8f9fa;
$border-color: #e1e1e1;
// 폰트
$font-family-base: "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI",
sans-serif;
$font-family-code: "JetBrains Mono", "Monaco", "Courier New", monospace;
// 폰트 크기
$font-size-base: 16px;
$font-size-large: 18px;
$font-size-small: 14px;
$font-size-h1: 2.5rem;
$font-size-h2: 2rem;
$font-size-h3: 1.5rem;
// 간격
$spacing-unit: 1rem;
$spacing-small: $spacing-unit * 0.5;
$spacing-large: $spacing-unit * 2;
// 레이아웃
$content-width: 1200px;
$sidebar-width: 300px;
// 브레이크포인트
$tablet: 768px;
$desktop: 1024px;
$widescreen: 1200px;
기본 스타일과 레이아웃 구성
기본 스타일 설정
// _sass/_base.scss
* {
box-sizing: border-box;
}
html {
font-size: $font-size-base;
line-height: 1.6;
}
body {
font-family: $font-family-base;
color: $text-color;
background-color: $background-color;
margin: 0;
padding: 0;
}
// 제목 스타일
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: 700;
line-height: 1.2;
margin-top: 0;
margin-bottom: $spacing-unit;
}
h1 {
font-size: $font-size-h1;
}
h2 {
font-size: $font-size-h2;
}
h3 {
font-size: $font-size-h3;
}
메인 레이아웃 스타일
// _sass/_layout.scss
.site-container {
max-width: $content-width;
margin: 0 auto;
padding: 0 $spacing-unit;
}
// 헤더 스타일
.site-header {
background-color: $primary-color;
color: white;
padding: $spacing-unit 0;
...
// 메인 콘텐츠 영역
.page-content {
min-height: calc(100vh - 200px);
padding: $spacing-large 0;
}
// 푸터 스타일
.site-footer {
background-color: $light-gray;
border-top: 1px solid $border-color;
padding: $spacing-large 0;
text-align: center;
color: darken($light-gray, 40%);
}
스타일 우선순위와 적용 규칙
Jekyll에서 스타일은 다음과 같은 우선순위를 갖습니다:
1. 전역 스타일 (_base.scss, _layout.scss)
모든 페이지에 공통으로 적용되는 기본 스타일입니다.
2. 레이아웃별 스타일 (_home.scss, _posts.scss)
특정 레이아웃을 사용하는 페이지에만 적용되는 스타일입니다.
3. 페이지별 개별 스타일
페이지 내에서 <style>
태그로 추가하는 스타일입니다.
반응형 디자인 구현
모바일 친화적인 블로그를 만들기 위해 반응형 스타일을 추가해보겠습니다:
// _sass/_responsive.scss
// 태블릿 이하
@media (max-width: $tablet) {
.site-nav {
flex-direction: column;
gap: $spacing-unit;
.nav-links {
gap: $spacing-unit;
}
}
.hero-section {
padding: $spacing-large;
.hero-title {
font-size: 2rem;
}
}