SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
CSS Preprocessor
Hands-on
2012/10/19 @littlebusters
セッションのアウトライン

•
•
•
•

CSS Preprocessorとは
GUIビルドツール
Sass
ネスト・&・変数・@extend・
演算・コメント・@import
まとめ

•
CSS Preprocessor
とは
•
•

CSSの弱い部分を補うため、
CSSをベースに機能を拡張したもの
そのままでは使えないため、
コンパイル(変換)が必要
Sass
今日はこれ

LESS

Stylus
GUIビルドツール
Koala

Prepros

MIXTURE

CodeKit

LiveReload
Koala

Prepros

MIXTURE

CodeKit

LiveReload

$

$

$

$

$

m
w

m
w

m
w

m
w

m
w

α

α

α

α

α

※1

※2

αは変換以外の機能があるもの ※1 Pro版は有料 ※2 Windows版は今のところフリー
Koala

Prepros

MIXTURE

CodeKit

LiveReload

$

$

$

$

$

m
w

m
w

m
w

m
w

m
w

α

α

α

α

α

※1

※2

αは変換以外の機能があるもの ※1 Pro版は有料 ※2 Windows版は今のところフリー
•
•
•
•
•

複数のCSSプリプロセッサーに対応
ライブリロード
HTMLテンプレートエンジンに対応
ローカルサーバ
静的HTMLへのコンバート など
これだけ揃って、フリー!
準備

Preprosのインストール
http://alphapixels.com/prepros/

Chrome拡張機能のインストール
プロジェクトのフォルダを Drag & Drop

Project Folder
ネスト
•

ルールセットの中にルールセットを
入れることができる。
ul {
list-style: none;
}
ul li {
margin: 5px 0;
}
ul {
list-style: none;
li {
margin: 5px 0;
}
}

ネストした部分
ul {
list-style: none;
li {
margin: 5px 0;
a {
color: #c00;
}
}
さらにネストもOK
}
}

ul {
list-style: none;
}
ul li {
margin: 5px 0;
}
ul li a {
color: #c00;
}
ul {
list-style: none;
li a {
color: #c00;
}
}

子孫セレクタで
ネストしてもOK
}
ul {
list-style: none;
}
ul li a {
color: #c00;
}
.item {
width: 320px;
@media screen and (min-wid..) {
width: 640px;
}
}

@mediaでもOK
}

.item {
width: 320px;
}
@media screen and (min-wid..) {
.item {
width: 640px;
}
}
.item {
margin: {
top: 1em;
bottom: 1em;
left: 0.5em;
}
}

ハイフン付きの
プロパティはネスト可能
}
.item {
margin-top: 1em;
margin-bottom: 1em;
margin-left: 0.5em;
}
&
•
ネストしたルールセットでも、
• 子セレクタ(>)や隣接セレクタ
&で親セレクタを参照できる。

(+)・疑似要素/クラスなどの利用が
可能に。
a {

color: #c00;

}
a:hover {
color: #600;
}
a {

}

color: #c00;
&:hover {
color: #600;
}

親の a を参照
.header を参照

.header {
height: 90px;
& > h1 {
float: left;
& + p {
font-size: 62.5%;
}
}
.header > h1 を参照
}
}

.header {
height: 90px;
}
.header > h1 {
float: left;
}
.header > h1 + p {
font-size: 62.5%;
}
.header {
height: 60px;
.toppage & {
height: 90px;
}
}

途中に入ってもOK
}
.header {
height: 60px;
}
.toppage .header {
height: 90px;
}
変数
•

同じ値を変数にして使い回せる
.contents {
background-color: #f2f2f2;
}
.item {
background-color: #f2f2f2;
}
.item-footer {
background-color: #f2f2f2;
}
$mainBG: #f2f2f2; 変数の定義
.contents {
background-color: $mainBG;
}
.item {
background-color: $mainBG;
}
.item-footer {
background-color: $mainBG;
}
$margin: 1em 0 1em 0.5em;
$baseWidth: 320px;
.header {
width: $baseWidth;
margin: $margin;
}

色や数値・ショートハンドの値など、
割となんでも変数にできる
}
.header {
width: 320px;
margin: 1em 0 1em 0.5em;
}
.header {
$baseWidth: 320px; 変数定義
width: $baseWidth;
}
.footer {
width: $baseWidth;
ここでエラー
}

ルールセット内で定義した変数は、
その中のみで利用可能
$baseWidth: 640px;
.header {
$baseWidth: 320px; 同じ変数名
width: $baseWidth;
}
.footer {
width: $baseWidth;
}

…640px?320px?
}
.header {
width: 320px;
}
.footer {
width: 320px;
}

最後に入れた値が有効
演算
•

数値の四則演算や、文字列の合体など
ができる。
.contents {
width: 640px;
margin-right: 160px;
margin-left: 160px;
}

widthの1/4
.contents {
$baseWidth: 640px;
width: $baseWidth;
margin-right: $baseWidth / 4;
margin-left: $baseWidth / 4;
}

変数を併用すると、サイズに変更が
あっても変数を変えるだけでOK
•
/(除算)は、以下のいずれかの条件を
• 満たす必要がある
-(減算)の後は半角スペースが必要

マイナス値と区別するため

属性値に / を使うものがあるため

•
•
•

変数が含まれている
()で括られている
他の演算子と一緒に使っている
content: ‘plus’ + mark;
width: 300px + 20;
height: 340px - 20;
margin-top: 0.25em * 2;
$mr: 1em;
margin-right: $mr / 4;
margin-bottom: (1em / 4);
margin-left: 2em - 1em / 4;
}
content: “plusmark”;
width: 320px;
height: 320px;
margin-top: 0.5em;
margin-right: 0.25em;
margin-bottom: 0.25em;
margin-left: 1.75em;
以下は演算できない
height: 340px -20; スペースがないのでNG
margin-right: 1em / 4; 数値のみでNG
色も演算可能
a:hover {
color: (#c00 / 2);
background-color: #222 + 10;
}
}
a:hover {
color: #660000;
background-color: #2c2c2c;
}
@extend
•

ルールセット内に、
他のルールセットを読み込める。
.link {
margin-top: 1em;
color: #009;
}
.link-outside {
margin-top: 1em;
color: #009;
background-color: #f2f2f2;
}
.link {
margin-top: 1em;
color: #009;
}
.link-outside {
@extend .link;
background-color: #f2f2f2;
}
.defaultWhiteSpace {
margin: 1em 0.5em;
padding: 1.5em 1em;
}
.item {
@extend .defaultWhiteSpace;
background-color: #f2f2f2;
}
.block {
@extend .defaultWhiteSpace;
background-color: #333;
}
}

.whiteSpace, .item, .block {
margin: 1em 0.5em;
padding: 1.5em 1em;
}
.item {
background-color: #f2f2f2;
}
.block {
background-color: #333;
}
}

不要なセレクタも変換される
.whiteSpace, .item, .block {
margin: 1em 0.5em;
padding: 1.5em 1em;
}
.item {
background-color: #f2f2f2;
}
.block {
background-color: #333;
}
%defaultWhiteSpace {
margin: 1em 0.5em;
padding: 1.5em 1em;
}
.item {
@extend %defaultWhiteSpace;
background-color: #f2f2f2;
}
.block {
@extend %defaultWhiteSpace;
background-color: #333;
}

セレクタの先頭を % にする
(プレースホルダーセレクタ)
}

.item, .block {
margin: 1em 0.5em;
padding: 1.5em 1em;
}
.item {
background-color: #f2f2f2;
}
.block {
background-color: #333;
}
•

@media内で、@extendしたい場合は、
ルールセットを@media内で書くこと
%link {
margin-top: 1em;
color: #009;
}
@media screen and (min-wid..) {
.link-item {
@extend: %link;
}
}

アカン パターン
@media screen and (min-wid..) {
%link {
margin-top: 1em;
color: #009;
}
.link-item {
@extend: %link;
}
}
コメント
通常のコメント(変換されても基本的に残る)
/* comment */

1行コメント(変換時に削除される)
// comment

必ず残るコメント
/*! comment */
@import
•
•
•

リンクになるのではなく、変換時に
読み込んだファイルを1つにまとめる。
CSSと違い、ファイルのどの位置に
書いてもOK(ルールセット内でもOK)
Sassファイルを読み込んだ場合、
そのファイルの変数の利用や
@extendでルールセットを呼び出せる
@import ‘oldstyle.css’;
:
:
@import ‘config.scss’;
:
:
@import ‘base’;

Sassファイルなら
拡張子を省略できる
I

style.scss

I I I

config.scss

base.scss

layout.scss

一つのファイルにまとめる
I

style.scss

I I I

config.scss

base.scss

layout.scss

CSSファイルが生成されてしまう?
•
•

変換する必要のないファイルは、
パーシャルファイルにする。
ファイル名の先頭に _(アンダーバー)を
付けるとパーシャルファイルに。
パーシャルファイルのファイル名
_base.scss

@importでは、_の省略可能
@import ‘base’;
まとめ
今日覚えて帰る

ネスト

&

@extend
コメント

親セレクタの参照

$

変数

+-*/

演算

@import
もっと機能があります

@mixin @if @for
@while @each
@function
もっと勉強したい!

Web制作者のための
Sassの教科書

2,940円
ステマじゃないよ
お疲れさまでした
!

Contenu connexe

Similaire à CSS Preprocessor Hands-on

CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
Taku AMANO
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 

Similaire à CSS Preprocessor Hands-on (20)

CSS3の最新事情
CSS3の最新事情CSS3の最新事情
CSS3の最新事情
 
Less - first step
Less - first stepLess - first step
Less - first step
 
Learn ES2015
Learn ES2015Learn ES2015
Learn ES2015
 
実践Sass 前編
実践Sass 前編実践Sass 前編
実践Sass 前編
 
compassで簡単! CSS3を手軽に利用する
compassで簡単!  CSS3を手軽に利用するcompassで簡単!  CSS3を手軽に利用する
compassで簡単! CSS3を手軽に利用する
 
Sass/Compass講習会
Sass/Compass講習会Sass/Compass講習会
Sass/Compass講習会
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
 
Css preprocessorの始めかた
Css preprocessorの始めかたCss preprocessorの始めかた
Css preprocessorの始めかた
 
HTML/CSSを効率的にする メタ言語とツールのアレコレ
HTML/CSSを効率的にする メタ言語とツールのアレコレHTML/CSSを効率的にする メタ言語とツールのアレコレ
HTML/CSSを効率的にする メタ言語とツールのアレコレ
 
フロント作業の効率化
フロント作業の効率化フロント作業の効率化
フロント作業の効率化
 
CloudFormation Getting Started with YAML
CloudFormation Getting Started with YAMLCloudFormation Getting Started with YAML
CloudFormation Getting Started with YAML
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
 
First sass
First sassFirst sass
First sass
 
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 本編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 本編gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 本編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 本編
 
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and later
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and laterWeb Technology features with Firefox 3.6 / Gecko 1.9.2 and later
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and later
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
グレープシティ製品からみるSPA開発のトレンドと動向
グレープシティ製品からみるSPA開発のトレンドと動向グレープシティ製品からみるSPA開発のトレンドと動向
グレープシティ製品からみるSPA開発のトレンドと動向
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareer
 
Sass introduction (jscafe 10)
Sass introduction (jscafe 10)Sass introduction (jscafe 10)
Sass introduction (jscafe 10)
 

CSS Preprocessor Hands-on