Sassの便利機能:入れ子(ネスト)について

Sassの便利な機能、入れ子について紹介したいと思います。ちなみに入れ子のことを英語でネストと言い、実際にSassでもそう呼ばれることがあります。入れ子は、Sassを使うのであれば絶対使うものです。

入れ子(ネスト)の基本

入れ子とは、簡単に言うと今まで一つの{  }で完結していたものを、{  }の中に{  }を書いてCSSで値を指定していくものです。早速コードを見てみましょう。

HTMLコード

<div id="main-contents">
    <section>
        <h1>タイトル</h1>
        <p>段落1:テキストテキストテキスト</p>
        <p>段落2:テキストテキストテキスト</p>
    </section>
    <section class="main-contents-item">
        <h1>タイトル</h1>
        <ul>
            <li>リスト1</li>
            <li>リスト2</li>
        </ul>
    </section>
</div>

CSS

#main-contents {
    width: 960px;
    margin: 0 auto;
}

#main-contents section h1 {
    font-size: 21px;
}

#main-contents section p {
    font-size: 14px;
    color: #000;
}

#main-contents .main-contents-item h1 {
    font-size: 18px;
}

#main-contents .main-contents-item ul li {
    display: inline-block;

}

SCSSに変換した後

#main-contents {
    width: 960px;
   margin: 0 auto;

    section {
        h1 {
            font-size: 21px;
        }
        p {
            font-size: 14px;
            color: #000;
        }
    }

   .main-contents-item {
        h1 {
            font-size: 18px;
        }
        ul {
           display: inline-block; 
        }
    }
}

毎回#main-contents ...と書かなくてよくなったので、記述量が減り、見た目もわかりやすくなりました。何度も親要素や要素までのルートを書かなくていいので、とても楽です。また、HTMLの構造と同じような見た目になるので、視覚的にCSSを判断することができます。 ちなみにネストには、改行やインデントのルールもありません。

メディアクエリでも便利なネスト

#box1 {
    width: 300px;
    float: left;

    @media screen and (max-width: 480px) {
        width: 100%;
        float: none;
    }
}

レスポンシブにもよく使われるメディアクエリはCSSだと記述が離れてしまい見つけるのも大変でした。ネストを使えば、とてもわかりやすくメディアクエリをつけることができます。