第5章 現場で使える実践Sassコーディング
5-1 管理 / 運用・設計で使える
ネストが深すぎると生じる問題を把握して、バランスを見ながら利用する
#wrap {
#wrapInner {
#page {
#contents {
#contentsInner {
#main {
section {
margin-bottom: 50px;
.item {
.image {
float: left;
}
.text {
overflow: hidden;
p {
margin: 0 0 1em;
}
}
}
}
}
}
}
}
}
}
#wrap #wrapInner #page #contents #contentsInner #main section {
margin-bottom: 50px;
}
#wrap #wrapInner #page #contents #contentsInner #main section .item .image {
float: left;
}
#wrap #wrapInner #page #contents #contentsInner #main section .item .text {
overflow: hidden;
}
#wrap #wrapInner #page #contents #contentsInner #main section .item .text p {
margin: 0 0 1em;
}
CSSとは違うパーシャルによるSassファイルの分割
@charset "utf-8"; // =================================================================== // 設定 // =================================================================== // 使うリセットCSS $resetCSS: HTML5; // 幅 $base_width: auto; $max_width: 960px; $min_width: 300px; $main_width: 640px; $side_width: 280px; // フォントカラー $font_color: #555; $title_color: #232323; // リンクカラー $link_color: #4775f5; $link_color_visited: #333; $link_color_hover: #4775f5 + #222; $link_color_active: #000; $base_color: #c69; $sub_color: #7e9dd0; // 章カラー $chapter_color: #c69, #7e9dd0, #c69, #7e9dd0, #c69, #7e9dd0, #c69, #7e9dd0; // 付与するベンダープレフィックス $set_prefix: -webkit-, -moz-, -ms-, -o-, ''; // ベースフォント $base_font: "Source Code Pro", "メイリオ", "Meiryo", "ヒラギノ明朝 Pro W6", "Hiragino Mincho Pro", "HGS明朝E", "MS P明朝", serif, verdana, "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", Osaka, "MS Pゴシック", "MS PGothic", Sans-Serif;
// 角丸
@mixin border_radius($value: 3px) {
@each $prefix in $setPrefix {
#{$prefix}border-radius: $value;
}
}
// 余白調整用
@if $use_spaceClass > 0 {
@for $i from 0 through $space_endValue {
.mt#{$i * 5} {
margin-top: 5px * $i !important;
}
.mb#{$i * 5} {
margin-bottom: 5px * $i !important;
}
@if $use_spacePadding > 0 {
.pt#{$i * 5} {
padding-top: 5px * $i !important;
}
.pb#{$i * 5} {
padding-bottom: 5px * $i !important;
}
}
}
}
// clearfix
%clearfix {
@if $support_IE > 0 {
*zoom: 1;
}
&:after {
content: "";
display: table;
clear: both;
}
}
...(略)...
// =================================================================== // 各Sassファイルのインポート // =================================================================== // 設定用 @import "setting"; // リセットCSS、フォントサイズ @import "reset"; // ミックスイン、@extend、CSS3など @import "mixin"; // 共通モジュールやパーツ @import "module"; // メインスタイル @import "main";
sass --style expanded --watch sass:www/css
さまざまなリセットCSSを一つのファイルにまとめて使いまわす
$resetCSS: 1 !default;
@if $resetCSS == 1 or $resetCSS == HTML5 {
/*! html5doctor.com Reset Stylesheet */
}
@else if $resetCSS == 2 or $resetCSS == Eric {
/*! Eric Meyer's Reset CSS */
}
@else if $resetCSS == 3 or $resetCSS == YUI {
/*! YUI 3 - reset.css */
}
@else if $resetCSS == 4 or $resetCSS == Normalize {
/*! normalize.css */
}
@else if $resetCSS == 0 or $resetCSS == My {
/*! My Reset CSS */
}
@else {
/*! Universal Selector '*' Reset */
}
$resetCSS: YUI;
// 設定用 @import "setting"; // リセットCSS @import "reset";
複数のリセットCSSをパーシャルファイルにして使いまわす
// リセットCSS @import "reset/html5doctor";
CSSで制作したサイトをSassに切り替える
sass-convert --to scss style.css style.scss
#main {
width: 600px;
}
#main p {
margin: 0 0 10em;
}
#main p em {
color: #f00;
}
#main small {
font-size: small;
}
#main {
width: 600px;
p {
margin: 0 0 10em;
em {
color: red;
}
}
small {
font-size: small;
}
}
sass-convert -R --from css --to scss css
sass-convert -R --from css --to scss .
コメントを活用してソースを分かりやすくする
@charset "utf-8";
/*! ========================================
※※※※※※※※※※※※※※※※※※※※※※※※※※※
このCSSファイルはSassから生成されていますので、
編集しないようご注意ください。 by name
※※※※※※※※※※※※※※※※※※※※※※※※※※※
========================================= */
body {
margin: 0
}
/*! ========================================
※※※※※※※※※※※※※※※※※※※※※※※※※※※
このCSSファイルはSassから生成されていますので、
編集しないようご注意ください。 by name
※※※※※※※※※※※※※※※※※※※※※※※※※※※
========================================= */
body {
margin: 0;
}
常に同じ場所からモジュール用のSassファイルをインポートする
sass --watch sass:css --load-path パス
【Win】sass --watch sass:css --load-path C:¥sass¥mylibrary 【Mac】sass --watch sass:css --load-path /sass/mylibrary
Sassはオブジェクト指向設計と相性が良い
<ul class="fruitList"> <li><a href="" class="orange">みかん</a></li> <li><a href="" class="apple">りんご</a></li> <li><a href="" class="banana">バナナ</a></li> <li><a href="" class="melon">メロン</a></li> </ul>
ul.fruitList {
list-style: none;
li {
margin: 0 0 10px;
a {
display: inline-block;
padding: 10px 25px;
border-radius: 5px;
text-decoration: none;
color: white;
&.orange {
background: orange;
}
&.apple {
background: red;
}
&.banana {
background: yellow;
color: #333;
}
&.melon {
background: green;
}
}
}
}
<header> <ul> <li>2013/08/01</li> <li><a href="" class="banana">バナナ</a></li> </ul> </header> <p class="category"><a href="" class="orange">みかん</a></p>
<ul class="fruitList"> <li><a href="" class="cateLabel orange">みかん</a></li> <li><a href="" class="cateLabel apple">りんご</a></li> <li><a href="" class="cateLabel banana">バナナ</a></li> <li><a href="" class="cateLabel melon">メロン</a></li> </ul> <header> <ul> <li>2013/08/01</li> <li><a href="" class="cateLabel banana">バナナ</a></li> </ul> </header> <p class="category"><a href="" class="cateLabel orange">みかん</a></p>
ul.fruitList {
list-style: none;
li {
margin: 0 0 10px;
}
}
.cateLabel {
display: inline-block;
padding: 10px 25px;
background: gray;
border-radius: 5px;
text-decoration: none;
color: white;
&.orange {
background: orange;
}
&.apple {
background: red;
}
&.banana {
background: yellow;
color: #333;
}
&.melon {
background: green;
}
}
%cateLabel {
display: inline-block;
padding: 10px 25px;
background: gray;
border-radius: 5px;
text-decoration: none;
color: white;
&.orange {
background: orange;
}
&.apple {
background: red;
}
&.banana {
background: yellow;
color: #333;
}
&.melon {
background: green;
}
}
header ul,
ul.fruitList {
list-style: none;
li {
margin: 0 0 10px;
a {
@extend %cateLabel;
}
}
}
p.category {
margin-bottom: 1.5em;
a{
@extend %cateLabel;
}
}


