#330 Better Sass with Bourbon
- Download:
- source codeProject Files in Zip (96 KB)
- mp4Full Size H.264 Video (20.6 MB)
- m4vSmaller H.264 Video (9.38 MB)
- webmFull Size VP8 Video (10.9 MB)
- ogvFull Size Theora Video (21.8 MB)
CSS 속성으로 업체전용 prefix을 타이핑하기가 지겹다고 생각이 될 때, CSS 작업을 보다 편하게 도와주는 여러가지 SASS mixin과 함수들을 포함하고 있는 Bourbon 라이브러리를 살펴볼 필요가 있습니다. 이번 연제에서는 레일스 어플리케이션에서 이 라이브러리를 사용하는 방법에 대해서 알아보겠습니다.
레일스 어플리케이션에 Bourbon 추가하기
아래에 작업하게 될 어플리케이션 화면이 있습니다. 디자인 면에서 좀 더 작업이 필요하다고 판단되어 어플리케이션에 Bourbon을 추가하고 페이지 뷰를 개선하기 위해서 몇가지 기능을 사용할 것입니다.
Bourbon의 설치는 쉽습니다. Gemfile에 추가한 후 bundle
명령을 실행하면 됩니다.
source 'https://rubygems.org' gem 'rails', '3.2.2' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer' gem 'uglifier', '>= 1.0.3' end gem 'jquery-rails' gem 'bourbon'
Bournbon을 레일스의 asset pipeline과 함께 사용하기 위해서는 기본 application.css
파일이 동작하는 방식을 변경할 필요가 있습니다. 기본적으로 이 파일은 Sprockets 목록(manifest)을 이용해서 다른 스타일시트 asset을 로드하게 될 것이지만, 이 때 문제가 발생할 수 있습니다. 왜냐하면, Sprockets는 SASS 파일을 컴파일해서 각각에 대해서 CSS파일을 생성하게 되는 데, 이러한 과정은 모든 SASS 파일에서 Bourbon mixin을 공유하기가 힘들지기 때문입니다.
application.css
파일을 application.css.scss
로 이름을 변경한 후, Sprockets 목록을 제거하고 SASS 명령인 @import
를 사용하여 포함하고자하는 파일을 불러올 것입니다. 현재로서는 젬에서 제공하는 bourbon
파일만을 포함할 것입니다.
@import "bourbon";
지금까지의 변경내용을 반영하기 위해서는 레일스 서버를 다시 시작할 필요가 있습니다. 이제 다시 페이지를 로드하면 모든 스타일링이 사라져 버릴 것입니다.
브라우저상에서 /assets/application.css
파일의 소스보기를 하면 아무것도 없다는 것을 알게 될 것입니다. Bourbon은 어플리케이션에 직접 CSS를 추가해 주지 않습니다. 단지 SASS를 통해서 CSS를 보다 편리하게 추가할 수 있게 해 준 뿐입니다. 어플리케이션에 필요한 모든 CSS는 직접 작성해 주어야 하는데, 여기서는 layout
과 project
파일을 application.css.scss
파일내에 추가할 것입니다. 이미 이 CSS파일들을 준비해 좋은 상태이지만 이제야 CSS파일내에서 Bourbon을 사용할 수 있게 될 것입니다.
@import "bourbon"; @import "layout"; @import "projects";
이제 페이지를 다시 로드하면 이전의 디자인을 다시 볼 수 있게 될 것입니다.
헤더 변경하기
현재의 디자인 상태에서 가장 먼저 개선할 것은 폰트를 변경하는 것입니다. 현재 페이지는 브라우저의 기본 폰트를 사용하는데, 대개는 Times New Roman체일 것입니다. Bourbon은 font-family
add-on을 포함하고 있어서 폰트 타입을 지정할 때 여러가지 변수를 제공해 줍니다. 이것은 사용하게 될 첫번째 폰트가 없을 때 대신사용할 수 있는 폰트까지 포함하고 있습니다. 이 폰트 타입 변수 중에 하나를 사용해서 body의 폰트로 지정해 보겠습니다.
body { margin: 0; padding: 0; background-color: #FFF; font-size: 14px; font-family: $verdana; }
다음에는 헤더에 gradient를 추가해 보겠습니다. Bourbon은 linear-gradient
모듈을 제공해 주기 때문에 gradient를 추가하고 색상까지도 지정할 수 있습니다. 밝은 회색에서 아두운 회색으로 점차적으로 변하는 gradient를 추가하겠습니다. 주목할 것은 gradient의 방향을 지정하지 않았다는 것입니다. 이 말은 기본값으로 top을 사용한다는 뜻입니다.
#header { color: #FFF; padding: 15px 100px; font-size: 30px; font-weight: bold; @include linear-gradient(#777, #444); }
기본 배경색이 linear-gradient
에 포함되기 때문에 헤더에서 background-color
속성을 제거했습니다. 또한 헤더 아래에 drop shadow을 추가하려고 할 때 Bourbon에 제공하는 mixin을 사용할 수 있습니다. box-shadow
CSS3 속성과 비슷한 방법으로 사용할 수 있지만 mixin이 우리를 대신해서 업체전용 prefix를 생성하게 될 것입니다. offset 값이 없는 검정색 shadow에 3 픽셀의 spread와 함께 6 픽셀 크기의 shadow를 추가해 보겠습니다.
#header { background-color: #555; color: #FFF; padding: 15px 100px; font-size: 30px; font-weight: bold; @include linear-gradient(#777, #444); @include box-shadow(0 0 6px 3px #000); }
이제 페이지를 다시 로드하면 변경내용이 반영된 것을 볼 수 있습니다.
각 항목의 모양 변경하기
다음으로 항목 리스트에 변화를 주도록 하겠습니다. 우선, 각 프로젝트를 감싸는 박스에 둥근 모서리를 추가해 보겠습니다. 두말할 필요없이 Bourbon은 border-radius
모듈을 가지고 있어서 이 작업을 쉽게 할 수 있게 해 줍니다. 프로젝트에만 적용되는 스타일은 projects.css.scss
파일내에 두게 됩니다. 따라서, 이 파일에서 변경작업을 하게 되는데 6 픽셀 크기의 radius를 추가해 줍니다.
.project { border: solid 1px #AAA; margin: 20px 0; padding: 7px 12px; @include border-radius(6px); &:hover { background-color: #F8FCCF; } h2 { margin: 0; a { text-decoration: none; } } }
다음으로, 각 항목으로 마우스를 이동하게 될 때 해당 항목의 배경색이 변경되는 방식에 변화를 주어 보도록 하겠습니다. 색상이 즉시 변경되지 않고 지정색상으로 fade in이 되도록 하겠습니다. 이 때 transition을 이용하여 이러한 작업을 할 수 있는데, 변경하게 될 속성, 변경소요시간, easing 효과를 넘겨 주게 됩니다.
.project { border: solid 1px #AAA; margin: 20px 0; padding: 7px 12px; @include border-radius(6px); @include transition(all, 500ms, ease-in-out); &:hover { background-color: #F8FCCF; } h2 { margin: 0; a { text-decoration: none; } } }
이제 특정 프로젝트로 마우스를 이동할 때 500ms에 걸쳐 배경색이 fade in이 되고 마우스가 벗어날 때 동일한 시간에 걸쳐 fade out 될 것입니다.
이 페이지에 마직막으로 주게될 변화는 “New Project” 링크를 개선하는 것입니다. 즉, 링크를 마치 버튼같이 보이게 할 것입니다. Bourbon은 buttons add-on을 포함하고 있어서 이를 이용하면 다양한 형태의 버튼 모양을 만들어 줄 수 있습니다. 이 링크는 new_project
라는 클래스를 가지고 있어서 여기에 스타일을 주어서 링크를 깔금한 모양의 녹색 버튼으로 변경할 것입니다.
.new_project { @include button(simple, #3FB344); }
이제 페이지를 다시 로드하면 둥근 모서리의 스타일이 적용된 링크를 보게 될 것입니다. (아마도 배경색이 fade되는 것을 전적으로 믿어야만 할 것입니다. 역자주: fade 되는 것이 잘 보이지 않는 모양입니다.)
이 버튼은 밑줄 문자와 같은 anchor 태그의 속성을 상속 받기 때문에 좀 더 크게 보이기를 원합니다. 그래서 몇가지 CSS를 더 추가할 것입니다.
.new_project { @include button(simple, #3FB344); text-decoration: none; font-size: 16px; }
이제 새로운 프로젝트를 추가하기 위한 멋진 버튼을 가지게 되었습니다.
Bourbon이 생성하는 CSS의 예
이제 페이지가 더 좋게 보이므로 Bourbon이 만들어 주는 CSS코드를 살펴보겠습니다. 코드 양이 많아서 여기서 모두 보여 줄 수 없지만 헤더에 대해서 생성한 CSS만을 예로서 발췌한 것을 보면 우리가 추가한 gradient에 대한 코드라는 것을 알 수 있습니다.
#header { background-color: #555; color: #FFF; padding: 15px 100px; font-size: 30px; font-weight: bold; background-color: #777777; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #777777), color-stop(100%, #444444)); background-image: -webkit-linear-gradient(top, #777777, #444444); background-image: -moz-linear-gradient(top, #777777, #444444); background-image: -ms-linear-gradient(top, #777777, #444444); background-image: -o-linear-gradient(top, #777777, #444444); background-image: linear-gradient(top, #777777, #444444); -webkit-box-shadow: 0 0 6px 3px black; -moz-box-shadow: 0 0 6px 3px black; box-shadow: 0 0 6px 3px black; }
여기서 보면 많은 양의 코드가 있지만 Bourbon 덕분에 직접 코딩할 필요가 없게 되었습니다.
또한 SASS는 다양한 함수를 포함하고 있어서 variation과 adjustment 값으로 색상을 변경하고자 할 때 CSS코드를 작성하는 것을 도와 줄 수 있습니다. SASS만으로 할 수 있는 것에 대한 더 많은 정보를 268번 연제에서 얻을 수 있습니다.