Sass_Grunt/Sass Casual Talks at IPROS
-
Upload
misako-itoi -
Category
Technology
-
view
2.758 -
download
5
description
Transcript of Sass_Grunt/Sass Casual Talks at IPROS
SassMisako Itoi
Let’s
14年1月29日水曜日
自己紹介
•名前:糸井 美紗子
•現在:HTMLコーダー(前職は旅行用品ECサイトのWebデザイナー)
•twitter:@misako826
•IT/Web Meetup!主催やってます..ヾ(゚∀゚*)ノ
14年1月29日水曜日
自己紹介
ここ•名前:糸井 美紗子
•現在:HTMLコーダー(前職は旅行用品ECサイトのWebデザイナー)
•twitter:@misako826
•IT/Web Meetup!主催やってます..ヾ(゚∀゚*)ノ
14年1月29日水曜日
Agenda...
•Sassって何...?
•Sassコーディング
14年1月29日水曜日
Agenda...
(イプロスでの実例)
•Sassって何...?
•Sassコーディング
14年1月29日水曜日
さて、
14年1月29日水曜日
Sassって何?
さて、
14年1月29日水曜日
Sassって何?
14年1月29日水曜日
Sassって何?
Syntactically Awesome Style Sheets
14年1月29日水曜日
Sassって何?
構文に関して、最高にイケてるスタイルシート
14年1月29日水曜日
Sassって何?
CSSメタ言語
14年1月29日水曜日
Sassって何?
CSS Preprocessor
14年1月29日水曜日
Sassって何?
CSSメタ言語...CSS Preprocessor...
14年1月29日水曜日
14年1月29日水曜日
(´・ω・`)
大丈夫!!
Sassコーディング!
14年1月29日水曜日
Sassって何?
言語を定義する為の言語
14年1月29日水曜日
Sassって何?
言語を定義する為の言語
CSSを定義する為の言語
14年1月29日水曜日
Sassって何?
CSSを生成する為の言語
14年1月29日水曜日
Sassって何?
CSSをベースに、機能拡張したもの!
14年1月29日水曜日
Sassって何?
14年1月29日水曜日
他にも、、、
http://roole.org/http://pcss.wiq.com.br/
http://cho45.github.io/tasscss/ http://the-echoplex.net/csscrush/
たくさんありますっ!
14年1月29日水曜日
Sassって何?
CSSを生成する為には変換作業が必要!
Sassなど...↓
14年1月29日水曜日
Sassって何?
変換=コンパイル
CSSを生成する為には変換作業が必要!
Sassなど...↓
14年1月29日水曜日
Sassって何?ビルドタスク
CodeKit、LiveReload、Compass.app、SCOUT
grunt、Yeoman、Brunch
14年1月29日水曜日
Sassって何?
Gruntが主流に...
14年1月29日水曜日
Sassって何?
後半のセッションをお楽しみに...ヽ(́▽`)/
14年1月29日水曜日
Sassって何?
14年1月29日水曜日
Sassって何?
SassとSCSS14年1月29日水曜日
Sassって何?
.sass,.scss14年1月29日水曜日
Sass
• 通常のCSSの文法とはかけ離れたもの
• HAMLというマークアップ言語から派生したもの
http://sass-lang.com/
Sassって何?
14年1月29日水曜日
SCSS
• CSSと同じような感覚で記述できる。(CSSファイルの拡張子を変えれば、SCSSとして使える!)
http://sass-lang.com/
Sassって何?
14年1月29日水曜日
ul { margin-bottom: 20px;}
ul li { border: 1px solid #000000; float: left;}
css
<li> <li>
20px
<ul>
Sassって何?
14年1月29日水曜日
ul margin-bottom: 20px li border: 1px solid #000000 float: left
Sass
<li> <li>
20px
<ul>
Sassって何?
14年1月29日水曜日
ul{ margin-bottom: 20px; li{ border: 1px solid #000000; float: left; }}
SCSS
<li> <li>
20px
<ul>
Sassって何?
14年1月29日水曜日
Sassって何?
SCSS記法を前提として話をすすめます
今日は
14年1月29日水曜日
SCSSコーディング!
LLeett’ss
14年1月29日水曜日
Sassコーディング!
セレクタのネスト
14年1月29日水曜日
ul { margin-bottom: 20px;}
ul li { border: 1px solid #000000; float: left;}
css
<li> <li>
20px
<ul>
Sassコーディング!
14年1月29日水曜日
ul{ margin-bottom: 20px; li{ border: 1px solid #000000; float: left; }}
SCSS
<li> <li>
20px
<ul>
Sassコーディング!
14年1月29日水曜日
Sassコーディング!
@mediaもネストしちゃおう!
さらに
14年1月29日水曜日
#main-content { float: left; width: 480px;}
@media screen and (max-width:480px) { #main-content { float: none; width: auto; }}
CSS
14年1月29日水曜日
#main-content { float: left; width: 480px; @media screen and (max-width:480px){ float: none; width: auto; }}
SCSS
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
Sassコーディング!
CSSネスト深過ぎ問題
ただし
14年1月29日水曜日
SCSSbody{ .wrapper{ .main-content{ section{ ul{ margin-bottom: 20px; li{ display: inline-block; a{ img{ border: 1px solid #1111cc; } } } } } } }}
14年1月29日水曜日
body .wrapper .main-content section ul{ margin-bottom: 20px;}
body .wrapper .main-content section ul li{ display: inline-block;}
body .wrapper .main-content section ul li a img{ border: 1px solid #1111cc;}
CSS
14年1月29日水曜日
ファイルサイズが大きくなってしまう
Sassコーディング!
14年1月29日水曜日
Sassコーディング!
CSS高速化の妨げに...
さらに、
14年1月29日水曜日
Sassコーディング!
CSS処理の中で、一番時間がかかるのが、子孫セレクタの処理
14年1月29日水曜日
Sassコーディング!
CSSネスト深過ぎ問題要注意です!
だから......
14年1月29日水曜日
プロパティのネスト
Sassコーディング!
NNeexxtt......
14年1月29日水曜日
.main{ margin: 0 { left: 10px; right: 10px; bottom: 20px; }}
SCSSSassコーディング!
14年1月29日水曜日
.main{ margin: 0 { left: 10px; right: 10px; bottom: 20px; }}
SCSS.main{ margin: 0 ; margin-left: 10px; margin-right: 10px; margin-bottom: 20px;}
CSS
main
20px
10px 10px
Sassコーディング!
14年1月29日水曜日
CSSSassコーディング!
.box{ z-index:1000;}
14年1月29日水曜日
.box{ z-index:1000;}
CSS.box{ z:{ index: 1000; }}
SCSSSassコーディング!
14年1月29日水曜日
ニャー
素敵!14年1月29日水曜日
Sassコーディング!
アンパサンド
14年1月29日水曜日
14年1月29日水曜日
Sassコーディング!
アンパサンド
&
14年1月29日水曜日
ul { width: 460px;}ul li { float: left; margin-right: 20px; width: 200px;}ul li:last-child { float: left; margin-right: 0; width: 200px;}
CSS
14年1月29日水曜日
ul { width: 460px; li { float: left; margin-right: 20px; width: 200px; &:last-child { float: left; margin-right: 0; width: 200px; } }}
SCSS
14年1月29日水曜日
Sassコーディング!
アンパサンドを使わなかったら
もし
14年1月29日水曜日
ul { width: 460px; li { float: left; margin-right: 20px; width: 200px; } li:last-child { float: left; margin-right: 0; width: 200px; }}
SCSS
14年1月29日水曜日
Sassコーディング!
複数人での作業やあとで修正する時、やりづらい
14年1月29日水曜日
SCSSSassコーディング!
#main { #one-column & { width: 970px; } #two-column & { width: 670px; }}
14年1月29日水曜日
SCSSSassコーディング!
#side { width: 300px; div { margin-bottom: 20px; #two-column & { margin-bottom: 0; } }}
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
Sassコーディング!
変数
14年1月29日水曜日
Sassコーディング!
何度も登場する...リンクカラーやコーポレートカラー...
14年1月29日水曜日
a { color: #1122cc;}
.btn { background-color: #1122cc;}
.box { border:1px solid #1122cc;}
CSS
14年1月29日水曜日
Sassコーディング!
もし、こんなこと言われたら...
14年1月29日水曜日
変えたい!色、
14年1月29日水曜日
あ″ー、もうっ!!
14年1月29日水曜日
(´・ω・`)
Sassコーディング!
奥さん......
14年1月29日水曜日
(´・ω・`)
Sassコーディング!
変数......
14年1月29日水曜日
$link-color: #1122cc;
a { color: $link-color;}.btn { background-color: $link-color;}.box { border:1px solid $link-color;}
SCSS
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
@extendと@mixin
Sassコーディング!
14年1月29日水曜日
.box{ margin: 0; float:left; width: 180px;}
指定したセレクタのスタイルを継承することができる機能
box
180px
Sassコーディング!@@eexxtteenndd
14年1月29日水曜日
.box-type-a{ @extend .box; color: #ffffff;}
Sassコーディング!
.box{ margin: 0; float:left; width: 180px;}
14年1月29日水曜日
compile
.box,.box-type-a{ margin: 0; float:left; width: 180px;}
.box-type-a { color: #ffffff;}
Sassコーディング!
14年1月29日水曜日
.box-type-b{ @extend .box; color:#aaaaaa;}
SCSS
さらに、.box-type-bを追加した場合。
Sassコーディング!
.box-type-a{ @extend .box; color: #ffffff;}
14年1月29日水曜日
compile
.box,.box-type-a,.box-type-b{ margin: 0; float:left; width: 180px;}
.box-type-a { color: #ffffff;}
.box-type-b { color: #aaaaaa;}
Sassコーディング!
14年1月29日水曜日
@mixin box{ margin: 0; float:left; width: 180px;}
スタイルの集まりを定義しておき、それを他の場所で呼び出して使うことができるもの。
Sassコーディング!@@mmiixxiinn
14年1月29日水曜日
Sassコーディング!
.box-type-a{ @include box; color: #ffffff;}
@mixin box{ margin: 0; float:left; width: 180px;}
14年1月29日水曜日
compile
.box-type-a{ margin: 0; float:left; width: 180px; color:#ffffff;}
Sassコーディング!@mixin
14年1月29日水曜日
.box-type-b{ @include box; color:#aaaaaa;}
さらに、.box-type-bを追加した場合。
Sassコーディング!
.box-type-a{ @include box; color: #ffffff;}
SCSS
14年1月29日水曜日
compile.box-type-a{ margin: 0; float:left; width: 180px; color:#ffffff;}.box-type-b{ margin: 0; float:left; width: 180px; color:#bbbbbb;}
Sassコーディング!
14年1月29日水曜日
@extend @mixin似てる (*´・д・)(・д・`*)ネー.
Sassコーディング!
14年1月29日水曜日
コンパイル後の結果が違います
Sassコーディング!
14年1月29日水曜日
.box,.box-type-a{ margin: 0; float:left; width: 180px;}
.box-type-a { color: #ffffff;}
@extend.box-type-a{ margin: 0; float:left; width: 180px; color:#ffffff;}
@mixinSassコーディング!
14年1月29日水曜日
clearfix
Sassコーディング!よく使う......
14年1月29日水曜日
Sassコーディング!
@extendを使いたいが、継承元のセレクタがコンパイル後のCSSに
生成されて欲しくないなぁ...
14年1月29日水曜日
プレースホルダセレクタ
Sassコーディング!
%%
14年1月29日水曜日
%clearfix { zoom: 1; &:after { content: “”; display: table; clear: both; }}
Sassコーディング!clearfix
14年1月29日水曜日
ul { @extend %clearfix; li { float: left; }}
%clearfix { zoom: 1; &:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }}
SCSS
14年1月29日水曜日
超・便利 @extend...
Sassコーディング!
14年1月29日水曜日
最強 @extend...
Sassコーディング!
14年1月29日水曜日
@mixin、いらないじゃん...
14年1月29日水曜日
((´•・ω•・``))
いやいや、@mixinだっていいトコありますヨ!
Sassコーディング!
14年1月29日水曜日
引数が使える!
Sassコーディング!
例えば......
14年1月29日水曜日
@mixin rounded($radius: 6px) { -moz-border-radius: $radius; -webkit-border-radius: $radius; border-radius: $radius;}
#box-type-a { @include rounded(); }#box-type-b { @include rounded(10px); }
@mixinSassコーディング!
14年1月29日水曜日
#box-type-a { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;}
#box-type-b { -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px;
@mixincompile
Sassコーディング!
14年1月29日水曜日
@mixin font-style($font-size,$color,$mb){ font-size: $font-size + px; color: $color; margin-bottom: $mb + px;}
p{ @include font-style(20,#1122cc,10);}
@mixinSassコーディング!
14年1月29日水曜日
p { font-size: 20px; color: #1122cc; margin-bottom: 10px;}
@mixinSassコーディング!
compile
14年1月29日水曜日
@mixin positionA($top,$right,$bottom,$left){ position: absolute; top: $top + px; right: $right + px; bottom: $bottom + px; left: $left + px;}p{ @include positionA(10,20,0,0);}
@mixinSassコーディング!
14年1月29日水曜日
p { position: absolute; top: 10px; right: 20px; bottom: 0px; left: 0px;}
@mixinSassコーディング!
compile
14年1月29日水曜日
@extendにも落とし穴が...
Sassコーディング!
それに......
14年1月29日水曜日
Sassコーディング!
.box { margin: 0; float:left; width: 180px;}
@media screen and (max-width: 600px) { @extend .box;}
14年1月29日水曜日
Sassコーディング!
@media screen and (max-width: 600px) { .box { margin: 0; float:left; width: 180px; }}
期待されるコンパイル結果
14年1月29日水曜日
Sassコーディング!実際は...
14年1月29日水曜日
Sassコーディング!実際は...
Syntax error:
14年1月29日水曜日
Sassコーディング!
@mediaの中でも、使える!
@@mmiixxiinnは......
14年1月29日水曜日
Sassコーディング!
@mixin box { margin: 0; float:left; width: 180px;}
@media screen and (max-width: 600px) { @include box;}
14年1月29日水曜日
Sassコーディング!
@media screen and (max-width: 600px) { margin: 0; float:left; width: 180px;}
compile
14年1月29日水曜日
Sassコーディング!
@mixin + @content
さらに......
14年1月29日水曜日
@mixin sp-tate { @media all and (orientation: portrait) { @content; }}
@main-content { @include sp-tate { color: #333333; }}
Sassコーディング!
14年1月29日水曜日
@main-content { @media all and (orientation: portrait) { color: #333333; }}
Sassコーディング!CSS
14年1月29日水曜日
@mixin sp-tate { @media all and (orientation: portrait) { @content; }}
@main-content { @include sp-tate { color: #333333; }}
Sassコーディング!
@mediaの長い記述を繰り返し書かなくてよい!14年1月29日水曜日
Sassコーディング!@mixin sp-tate { @media all and (orientation: portrait) { @content; }}
@mixin sp-yoko { @media all and (orientation: landscape) { @content; }} 複数の@mediaを使う場合でも、わかりやすい名前
にすれば、管理しやすくなる!14年1月29日水曜日
ニャーみんな違ってみんないい!14年1月29日水曜日
Sassコーディング!
@mixin豆知識
ちなみに......
14年1月29日水曜日
Sassコーディング!
@mixin名で使える文字と使えない文字
豆知識......
14年1月29日水曜日
Sassコーディング!使える!@mixin tate{}@mixin tate1{}@mixin tate-1{}@mixin tate_1{}@mixin 縦{}@mixin TATE{}@mixin _tate{}@mixin -tate{}@mixin __tate{}
使えない...@mixin 1tate{}@mixin tate@1{}@mixin --tate{}
14年1月29日水曜日
Sassコーディング!
制御構文で条件分岐や繰り返しを行う
さて次......
14年1月29日水曜日
Sassコーディング!
@each
まず......
14年1月29日水曜日
Sassコーディング!
@each...リストの要素に対して、繰り返し処理を実行する
@@eeaacchh......
@each $変数名 in リスト { 【スタイルなどなど...】}
14年1月29日水曜日
%icn-common-style { display: block; float: left; text-indent: -10000px; }@each $addCssClassIcn in txt1, txt2, txt3 { .icn-#{$addCssClassIcn}{ @extend %icn-common-style; background-image: url(assets/icn-#{$addCssClassIcn}.png); }}
@@eeaacchh
14年1月29日水曜日
%icn-common-style { display: block; float: left; text-indent: -10000px; }@each $addCssClassIcn in txt1, txt2, txt3 { .icn-#{$addCssClassIcn}{ @extend %icn-common-style; background-image: url(assets/icn-#{$addCssClassIcn}.png); }}
@@eeaacchh
14年1月29日水曜日
.icn-txt1, .icn-txt2, .icn-txt3 { display: block; float: left; text-indent: -10000px;}
.icn-txt1 { background-image: url(assets/icn-txt1.png);}.icn-txt2 { background-image: url(assets/icn-txt2.png);}.icn-txt3 { background-image: url(assets/icn-txt3.png);}
compile
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
Sassコーディング!
@if
次に......
14年1月29日水曜日
@if...「もし~ならば~を実行する」「特定の条件」を元に、後の処理をどうするか決めるもの
@@iiff......
@if 条件A{ 【スタイルなどなど...】}@else if 条件B{ 【スタイルなどなど...】}@else {【スタイルなどなど...】}
14年1月29日水曜日
@mixin btn-color($color) { @if $color == "orange" { color: #ffffff; background-color: #ff4229; &:hover{ color: #ff4229; background-color: #ffffff; } } @else if $color == "blue" { color: #ffffff; background-color: #4973D2; &:hover{ color: #4973D2; background-color: #ffffff; } }}
.btn-style-a { @include btn-color("orange");}.btn-style-b { @include btn-color("blue");}
@@iiff......
14年1月29日水曜日
@mixin btn-color($color) { @if $color == "orange" { color: #ffffff; background-color: #ff4229; &:hover{ color: #ff4229; background-color: #ffffff; } } @else if $color == "blue" { color: #ffffff; background-color: #4973D2; &:hover{ color: #4973D2; background-color: #ffffff; } }}
.btn-style-a { @include btn-color("orange");}.btn-style-b { @include btn-color("blue");}
@@iiff......
14年1月29日水曜日
@mixin btn-color($color) { @if $color == "orange" { color: #ffffff; background-color: #ff4229; &:hover{ color: #ff4229; background-color: #ffffff; } } @else if $color == "blue" { color: #ffffff; background-color: #4973D2; &:hover{ color: #4973D2; background-color: #ffffff; } }}
.btn-style-a { @include btn-color("orange");}.btn-style-b { @include btn-color("blue");}
@@iiff......
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
Sassコーディング!
@for
次に......
14年1月29日水曜日
@for...指定した開始の数値から、終了の数値まで、1つずつ増やしながら繰り返して処理される。
@@ffoorr......
@for $変数名 from 開始の数値 through 終了の数値 { 【スタイルなどなど...】}@for $変数名 from 開始の数値 to 終了の数値 { 【スタイルなどなど...】}
14年1月29日水曜日
@mixin spacing($number) { $type: 'p'; $cssType: 'padding'; @for $i from 1 through 2 { @if $i > 1 { $type: 'm'; $cssType: 'margin'; } .#{$type}t#{$number} { #{$cssType}-top: #{$number}px !important; } .#{$type}r#{$number} { #{$cssType}-right: #{$number}px !important; } .#{$type}b#{$number} { #{$cssType}-bottom: #{$number}px !important; } .#{$type}l#{$number} { #{$cssType}-left: #{$number}px !important; } }}@include spacing(5);@include spacing(10);
条件分岐
繰り返し
14年1月29日水曜日
@mixin spacing($number) { $type: 'p'; $cssType: 'padding'; @for $i from 1 through 2 { @if $i > 1 { $type: 'm'; $cssType: 'margin'; } .#{$type}t#{$number} { #{$cssType}-top: #{$number}px !important; } .#{$type}r#{$number} { #{$cssType}-right: #{$number}px !important; } .#{$type}b#{$number} { #{$cssType}-bottom: #{$number}px !important; } .#{$type}l#{$number} { #{$cssType}-left: #{$number}px !important; } }}@include spacing(5);@include spacing(10);
条件分岐
繰り返し
14年1月29日水曜日
.pt5 { padding-top: 5px !important;}.pr5 { padding-right: 5px !important;}...(ごめんなさい、省略します)....mb10 { margin-bottom: 10px !important;}.ml10 { margin-left: 10px !important;}
compile
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
Sassコーディング!
@while
次に......
14年1月29日水曜日
@while...条件式に当てはまる間、繰り返し処理が行われる。@forより柔軟な繰り返し処理を行う事ができる。
@@wwhhiillee......
@while 繰り返し条件 { 【スタイルなどなど...】 繰り返し方指定}
14年1月29日水曜日
繰り返し
$i: 8;
@while $i <= 30{ .txt#{$i}{ font-size: $i + px!important; } $i: $i+2}
14年1月29日水曜日
$i: 8;
@while $i <= 30{ .txt#{$i}{ font-size: $i + px!important; } $i: $i+2}
繰り返し
14年1月29日水曜日
.txt8 { font-size: 8px !important;}.txt10 { font-size: 10px !important;}...(ごめんなさい、省略します)....txt28 { font-size: 28px !important;}.txt30 { font-size: 30px !important;}
compile
14年1月29日水曜日
ニャー
すごーい!14年1月29日水曜日
Sassコーディング!
今、CSSを使っていて、CSSからSassに移行したい
さて......
アナタ(´・ω・`)14年1月29日水曜日
Sassコーディング!
(rubyをインストール)Sassをインストール
まず......
14年1月29日水曜日
Sassコーディング!
CSSファイルの拡張子を.scssにする!
次に......
14年1月29日水曜日
Sassコーディング!
ハックで使用している / は取り除く
注意点
× #side_contents { /margin-left: 5px; } IE6,7用○ #side_contents { *margin-left: 5px; } IE6,7用
14年1月29日水曜日
Sassコーディング!
CUIのビルドタスクを入れるなり、GUIのビルドタスクを入れるなり...後半のセッションをお楽しみに...
あとは......
(´・ω・`)14年1月29日水曜日
Sassコーディング!
Sassってすごーく奥が深いです
14年1月29日水曜日
Sassコーディング!
習得して、使いこなして、楽しいSassライフを!
ヽ(´▽`)/14年1月29日水曜日
ちなみに、、、これ、便利でした
・SassOnlineEditorhttp://next-nex.info/service/sass/
・ScssOnlineEditorhttp://next-nex.info/service/scss/
オンラインエディタのご紹介!
14年1月29日水曜日
Sass
ご清聴ありがとうございました
14年1月29日水曜日