Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Knowledge BBQ VOL.3
Search
TAK WAT
January 18, 2017
Programming
390
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Knowledge BBQ VOL.3
TAK WAT
January 18, 2017
More Decks by TAK WAT
See All by TAK WAT
2021年にIE対応を断るのは間違っているだろうか
takwat
1
260
EFOのお話
takwat
1
300
Vueへの道
takwat
0
33
入り口としてのKnockout.js
takwat
0
400
Do You Like JobQueue?
takwat
0
75
Other Decks in Programming
See All in Programming
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
AIが無かった頃の素敵な出会いの話
codmoninc
1
210
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
410
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
150
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
130
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
340
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
710
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
5.3k
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
120
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
180
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.9k
The Invisible Side of Design
smashingmag
301
52k
New Earth Scene 8
popppiees
3
2.4k
Discover your Explorer Soul
emna__ayadi
2
1.2k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Marketing to machines
jonoalderson
1
5.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Transcript
SASS とCOMPASS でCSS をもう少し楽に書こう
自己紹介 青森県八戸市出身( 港と鯖とイカと工場の町です) アラフォー Twitter @_takwat Qiita 仙台市内某社社内SE https://qiita.com/khirose
社内SE ? 自社のシステムやクライアントPC のお守りがメインです ただし自社の事業サイトや一部受託開発もやってます どうせ自社でやるんだしってことで色々と取り入れてま す
サイトが育って増大してきたCSS に ありがちな辛いところ
クラス名が他とかぶって困惑 まあこれは命名規則でなんとかするしかない? → そうして長くなっていくクラス名 .top-navi-some-class
ネストが深くなってきて見通しがしにくい section > div { ... } section > div
> div { ... } section > div > div > ul > li { ... }
何か同じコードを何度もコピペしてる気が する .picture1{...} .picture2{...} .picture3{...} .picture4{...} .picture5{...} .picture6{...} 6 個ならまだいいけど100
個あったら?
ベンダープレフィックスつきのプロパティ 指定するのがつらい -webkit だけならともかくfilter:progid:DXImageTranform と か何だよって話
そこでSASS やってみませんか?
SASS とは? Syntactically Awesome Stylesheets 構文的に素晴らしいスタイルシート・・・?
もともとインデントで構文でした $blue: #3bbfce $margin: 16px .content-navigation border-color: $blue color: darken($blue,
10%) .border padding: $margin/2 margin: $margin/2 border-color: $blue 厳密にSass といえば↑ みたいな書き方のことらしく ※Python やYAML みたい
見慣れたブロック構文にスクリプ ト言語みたいな要素も入れて $blue: #3bbfce; $margin: 16px; .content-navigation { border-color: $blue;
color: darken($blue, 10%); } .border { padding: $margin / 2; margin: $margin / 2; border-color: $blue; } 現在の.scss に落ち着く
以上、WIKIPEDIA さんから
SASS の利点になりそうなコード例 を色々見てみよう 実質scss ですが 基本的に素のCSS を書いてもとくに文句は言わず、ほぼ そのまま出力してくれます
SASS のコード例(1) 入れ子 /* 感 書 */ .items{ font-size: 1vw;
h2{ font-size: 4vw; strong{ font-weight: bold; } } }
SASS のコード例(2) プロパティ /* font-* 書 */ h1{ font:{ family:
'......'; size: 1vw; weight: normal; } } セレクタは .example{} で まとめる場合のプロパティは font: {} とJSON 記法になるのがはまりどころ ※ 個人的にはあんまりオススメはしないですがmargin や padding 指定したいときは便利かも
SASS のコード例(3) 疑似要素 /* a 設定 疑似要素 含 感 */
a{ text-decoration: none; /* 自分自身 指 "&" */ &:hover{ text-decoration: underline; } }
SASS のコード例(4) 変数 /* 共通部分 変数化 */ $small-font-size: 1vw; $medium-font-size:
2vw; $larger-font-size: 4vw; $large-font-size: 8vw; h1{ font-size: $large-font-size; }
SASS のコード例(5) 継承 $mycolor: rgb(31,31,31); .alpha{ font-size: 2vw; color: $mycolor;
} .beta{ @extend .alpha; border: 1px solid $mycolor; } .alpha の中身(font-size とcolor) を.beta にそっくりそのまま 引き継いだ上でborder を追加指定 ※ これも意外とハマるのであまりオススメしないです (後述の@mixin のほうが使い勝手がよさげなんで)
SASS のコード例(6) 条件分岐 /* 当然if文 */ $type: ocean; p{ @if
$type == ocean { color: blue; } @else { color: black; } } /* if/else 1対 書 方 (Excel MySQL IF関数 近 ) */ h1{ /* type ocean blue, ocean以外 black */ color: if($type == ocean, blue, black); }
( 余談) 変数と条件分岐をメディアク エリと組み合わせ /* 組 合 */ $device-display: wide;
@media only screen and (max-width: 60rem) { $device-display: narrow; } /** 後 */ h1{ font-size: if($device-display == narrow, 8vw, 2vw); }
SASS のコード例(7) ループ /* 使 */ /* <li> 1~6番目 連番
名 別 背景 適用 */ li{ @for $i from 1 through 6{ &:nth-child(#{$i}){ background: linear-gradient( to bottom, rgba(255, 255, 255, 0.6), rgba(0, 0, 239, 0.1)), url('./img/button#{$i}.png' ) no-repeat; background-size: contain; background-position: center center; } } }
SASS のコード例(8) 関数(MIXIN) /* 一部 違 共通部分 */ /* $width:
1px, $color: #000 値 */ @mixin text-border($width: 1px, $color:#000){ text-shadow: 0 $width 0 $color, $width 0 0 $color, 0 (-$width) 0 $color, (-$width) 0 0 $color, (-$width) (-$width) 0 $color, $width (-$width) 0 $color, (-$width) $width 0 $color, $width $width 0 $color; } h1{ @include text-border(2px, #fff); /* 周辺2 白 縁取 */ }
SASS のコード例(9) PARTIAL と IMPORT 例えば、共通で使う変数やmixin などを $box-large-size: 40vw; $color-normal:
black; $color-warning: orange; $color-danger: red; のように定義し、_variables.scss として保存しておいて @import "variables"; .content{ width: $box-large-size; } のように複数の.scss で使いまわしができる
PARTIAL 関連 _ ではじまるファイル名はpartial として扱われる partial は他のファイルから@import される前提のファ イルで単独では変換処理の対象にはされない つまり、_variables.css
みたいなものは生成されない @import は拡張子不要 partial の場合、_ も不要 _variables.scss とvariables.scss が同時にあったら @import はどうなるんでしょうね→ 警告出ました
でもよく使うアレやアレをMIXIN と かで定義しなおすの辛い
もしかしてCOMPASS にない?
COMPASS http://compass-style.org/ Sass の「あるある」をまとめたライブラリ
例) 角丸のボックス(BEFORE) @import 'compass'; .radius { @include border-radius; }
例) 角丸のボックス(AFTER) .radius { -webkit-border-radius: 5px; -moz-border-radius: 5px; -ms-border-radius: 5px;
-o-border-radius: 5px; border-radius: 5px; }
大きな利点 ベンダープレフィックスもバッチリ compass じゃなくてもSass 単体でやれる方法もある 今回はcompass は深掘りしないので単体での方法でやり ます
他 シャドウやグラデーション、スプライトの作成まで @ なんちゃら( ちょっとしたパラメータ) で色々やってくれるのでドキュメント参照 compass までやると今回の尺が足りないので今回は入り 口の紹介のみ
では環境を作ろう ruby のインストール sass コマンドをインストールする
・・・敷居高杉内?
そこでKOALA http://koala-app.com/
やること GUI で設定して ソースの入ったディレクトリをドラッグ&ドロップ あとはKoala が立ち上がっている間は↑ のディレクトリに ある.scss なファイルが更新されたら自動で同じディレク トリにcss
まで作ってくれる
設定(1) UI の日本語化
設定(2) SASS の設定 SourceMap 出力( このCSS はどのSass から変換されたか がわかるのでデバッグ時にはかどります) ベンダープレフィックスの自動付与
None
設定(3) CSS の設定 ぐしゃっと1 行にまとめてmin.css を作るとかもありま すが今回はあまりさわらないほうがいいかも
None
SCSS を書いて動かしてみよう