inuit.css 소개 – 외양에 관여하지 않는 OOCSS 프레임워크

,

CSS 프레임워크를 사용하면 효율도 향상되고, 구조도 깔끔해진다는 이야기를 여러 군데서 읽었다. 그래서 한 번 사용해 보기로 생각하고 여러 프레임워크를 찾아 봤다.

그 때쯤 OOCSS에 대해서도 알게 됐었다. CSS를 모듈 방식으로 짜서 중복을 최소화하는 CSS 코딩 기법이었다. 마음에 쏙 들었다. 그래서 OOCSS를 차용한 CSS 프레임워크를 찾았다. 두 개를 발견했는데 inuit.css가 맘에 들었다. cascasde라는 신생 OOCSS 프레임워크는 디자인을 포함하고 있어 매력적이지 않았다. inuit.css는 디자인을 배제한 채로 틀만 제공하는 CSS 프레임워크였다.

inuit.css는 IE8까지만 지원한다. IE7까지 지원하고 싶다면 v4.1.5를 사용해야 한다.

디자인을 배제한 채 틀만 제공하기 때문에 생기는 장점

트위터의 부트스트랩을 생각해 보자. 내비게이션 스타일, 버튼 스타일, 폼 스타일 등이 정해져 있다. 미리 정의된 CSS를 붙이기만 하면 디자인은 알아서 따라온다. jQueryUI도 마찬가지다. 이미 디자인이 돼 있다. 테마를 스스로 제작할 수 있도록 테마 롤러가 준비돼 있어 다양한 색을 사용할 수 있지만 전체 스타일을 변경하기란 힘들다.

그런데 흔히 웹사이트를 제작할 때, 디자인은 디자이너가 한다. 부트스트랩이나 jQueryUI를 디자이너의 디자인에 맞춰서 커스터마이징하는 건 어렵고 삽질인데다가 죄악이다. (죄악이라는 건 유지보수 용이성을 엄청나게 희생하게 될 게 뻔하기 때문에.) 미리 디자인돼 있는 프레임워크를 원한다면 부트스트랩이나 jQueryUI를 사용하면 될 테지만, 디자이너의 디자인을 구현하는 경우가 더 많다면 디자인이 포함돼 있지 않은 CSS 프레임워크를 골라야 한다. inuit.css가 바로 그런 프레임워크다.

포함하고 있는 모듈들

이 프레임워크를 이용하면 어떤 장점이 있는지 알아야 할 거다.

grid 모듈

레이아웃 안 잡는 웹사이트는 없다. 레이아웃은 CSS 프레임워크가 기본적으로 제공해야 하는 기능이고, 당연히 inuit.css도 레이아웃 기능을 제공한다. (inuit.css의 그리드 예제)

1:3으로 화면을 분할하는 레이아웃은 아래처럼 잡는다.

<div class="grid">
    <div class="grid__item one-quarter">
        사이드바나 뭐 그런 거
    </div><!--

    --><div class="grid__item three-quarters">
        본문 영역
    </div>
</div>

(주의할 점이 있다. </div><div class="grid__item three-quarters"> 사이에 <!-- --> 이렇게 주석 처리가 들어가 있다. inuit.css는 그리드를 나눌 때 inline-block을 사용한다. 요소 사이에 공백이 들어가면 그리드가 깨지게 된다. 그래서 주석처리로 공백을 없애는 것이다.)

써 보면 알겠지만, 레이아웃을 잡는 게 진짜 편해 진다. 레이아웃 안의 레이아아웃을 잡는 경우도 많으니까. 그 때마다 CSS를 건드릴 거 없이 그냥 프레임워크에 정의돼 있는 클래스를 가져다 사용하면 된다.

사용해 보면 알겠지만, 여백도 기본으로 들어간다.

여백 너비는 설정에서 정한다. 설정 방법은 아래쪽에서 설명한다. 일단 장점이나 좀 더 보자.

이미지 목록 같은 데 사용하는 multi-list 모듈

상품을 진열할 때 이미지 목록을 많이 사용한다. 이건 여러 군데서 반복되는 패턴이다. 큰 이미지 목록도 있을 수 있고 작은 이미지 목록도 있을 수 있다. inuit.css는 multi-list라는 클래스로 이걸 단박에 해결한다.

아래 예제를 보자.

<div class="image-list">
  <ul class="multi-list five-cols">
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li> 
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li> 
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li>
    <li>
      <img src="https://placekitten.com/100/100">
      <p>Good!</p>
    </li> 
  </ul>
</div>

위 코드의 결과는 아래와 같다.

이런 게 OOCSS에서 중복을 줄이는 방법이다. 비슷한 패턴에 죄다 multi-list 클래스를 사용하면 된다. 추가로 해 줘야 하는 것에만 자신의 클래스를 붙이면 된다. 위의 예제에서 내가 겉을 감싸는 divimage-list 클래스를 붙인 것처럼 말이다.

내비게이션(nav) 모듈

다음은 내비게이션 모듈이다. 아래처럼 쓰면 가로 내비게이션이 만들어진다.

<ul class=nav>
   <li><a href=#>Home</a></li>
   <li><a href=#>About</a></li>
   <li><a href=#>Portfolio</a></li>
   <li><a href=#>Contact</a></li>
</ul>

media 모듈

OOCSS를 유명하게 한 그 미디어 모듈도 당연히 포함돼 있다. 미디어 모듈이란 아래와 같은 걸 간편하게 만들어 주는 모듈을 뜻한다.

코드는 이렇게 생겼다.

<div class="custom-wrapper">
    <div class="media">
        <img src="http://placekitten.com/100/100" alt="" class="media__img">
        <p class="media__body">
            <h2>This is Title</h2>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </p>
    </div>
</div>

전체 모듈 목록

이 외에도 inuit.css가 제공하는 모듈은 이렇게 많다. 다음의 한 항목은 한 파일에 들어 있다. 주석으로 설명이 달려 있고 웬만하면 예제도 있으니 궁금할 땐 파일을 열어서 보면 된다.

Base

Generic

Objects

간단 사용법

inuit.css는 Sass 기반으로 제작돼 있다. Sass는 CSS 전처리기(Preprocessor)다.

.my-class 
  background: red
  .my-class-child
    background: blue

이런 식으로 Sass 파일을 작성한 뒤 컴파일 명령을 내리면

.my-class {
  background: red; }
  .my-class .my-class-child {
    background: blue; }

이런 식으로 CSS가 나온다. 스타일을 작은 파일로 나눠서 관리하기도 편하고, minify된 CSS를 뽑기도 편하고, 변수 같은 걸 사용할 수 있어 편하다.

여튼, inuit.css는 Sass를 배워야 해서 약간의 진입장벽이 있긴 하지만, 이로 인해 장점이 크다. 설정 파일이 있는 것이다.

Sass 사용법은 따로 설명하지 않겠다. 한글로 된 설명 괜찮은 거 없나 하고 찾아 봤는데 간단히 볼 만한 건 없는 듯하다. Sass 공식 웹사이트에서 가이드를 보거나 구글에서 Sass Tutorial로 검색해서 아무거나 보면 될 거다.

Github에서 inuit.css를 다운받으면 _vars.scss 파일이 있다. 기본적으로 모든 모듈이 사용하지 않음으로 체크돼 있다. 이 중에서 사용할 모듈을 true로 바꿔 주면 된다. 모듈이니까.

/*------------------------------------*\
    $OBJECTS-AND-ABSTRACTIONS
\*------------------------------------*/
/**
 \* All of inuit.css’ objects and abstractions are initially turned off by
 * default. This means that you start any project with as little as possible,
 * and introducing objects and abstractions is as simple as switching the
 * following variables to `true`.
 */
$use-grids:         true;
$use-flexbox:       true;
$use-columns:       true;
$use-nav:           true;
$use-options:       true;
$use-pagination:    true;
$use-breadcrumb:    true;
$use-media:         true;
$use-marginalia:    true;
$use-island:        true;
$use-block-list:    true;
$use-matrix:        true;
$use-split:         true;
$use-this-or-this:  true;
$use-link-complex:  true;
$use-flyout:        true;
$use-arrows:        true;
$use-sprite:        true;
$use-icon-text:     true;
$use-beautons:      true;
$use-lozenges:      true;
$use-rules:         true;
$use-stats:         true;
$use-greybox:       true;

이렇게 전부 true로 변경하든지 하면 된다.

다음으로 inuit.css 폴더를 보면 _defaults.scss라는 파일이 있다. 이 안엔 글자 크기, 글꼴 같은 설정이 들어있다. 이걸 편집하면 된다.

반응형 설정 같은 것도 있다. 차근차근 보면서 하면 다 알 수 있다.

일단 소개는 이쯤에서 마쳐도 될 것 같다. Sass 튜토리얼과 inuit.css 간단 튜토리얼 같은 걸 써야 이 글이 실제로 의미를 가질 것 같다는 생각이 든다.

이상.

👇 카테고리 글 목록

,

대표글

댓글 남기기