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
Getting Sassy with CSS: An Introduction to Writ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Erin Smith
November 15, 2019
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Getting Sassy with CSS: An Introduction to Writing CSS with Sass
Erin Smith
November 15, 2019
More Decks by Erin Smith
See All by Erin Smith
Website Maintenance: What You Need To Know to Keep Your Site in Peak Condition
girlybrackets
0
140
Other Decks in Programming
See All in Programming
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.4k
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
400
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
Cloudflare is Agents
chimame
0
160
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
460
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
280
Designing Powerful Visuals for Engaging Learning
tmiket
1
490
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
The Cult of Friendly URLs
andyhume
79
7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
380
BBQ
matthewcrist
89
10k
Transcript
Getting Sassy with CSS Erin Smith
What we are covering: What are CSS preprocessors What advantages
do they have How to get set up to use them yourself
None
None
Input Output
Basics .scss .sass Uses CSS syntax Indentation instead of brackets
Newlines instead of semicolons Other modifications Can be easier to read and write
$variables
SCSS CSS $yellow: #fce473; .quote { border-left: 5px solid $yellow;
} .quote { border-left: 5px solid #fce473; }
SCSS CSS $yellow: #fce473; $pink: #c71585; $green: #32cd32; $blue: #1d90ff;
$primary-color: $green; .quote { border-left: 5px solid $primary-color; } .button { background: $primary-color; } .sidebar a:hover { border-bottom-color: $primary-color; } .footer a { color: $primary-color; } .quote { border-left: 5px solid #32cd32; } .button { background: #32cd32; } .sidebar a:hover { border-bottom-color: #32cd32; } .footer a { color: #32cd32; }
SCSS CSS $yellow: #fce473; $pink: #c71585; $green: #32cd32; $blue: #1d90ff;
$primary-color: $pink; .quote { border-left: 5px solid $primary-color; } .button { background: $primary-color; } .sidebar a:hover { border-bottom-color: $primary-color; } .footer a { color: $primary-color; } .quote { border-left: 5px solid #c71585; } .button { background: #c71585; } .sidebar a:hover { border-bottom-color: #c71585; } .footer a { color: #c71585; }
Math
$numPerRow: 4; $margin: 2%; width: ((100% - (($numPerRow - 1)
* $margin)) / $numPerRow);
Nesting
SCSS CSS nav { ul { margin: 0; padding: 0;
list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } } nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
@imports
None
SCSS //main.scss /* base */ @import “base/reset”; @import “base/typography”; /*
components */ @import “components/buttons”; @import “components/nav”; @import “components/dropdown”; |— base/ | |— _reset.scss #Reset/normalize | |— _typography.scss #Typography rules | |— components/ | |— _buttons.scss #Buttons | |— _navigation.scss #Navigation | |— _dropdown.scss #Dropdown
@mixins
SCSS CSS @mixin overlay() { bottom: 0; left: 0; position:
absolute; right: 0; top: 0; } .modal-background { @include overlay(); background: black; opacity: 0.9; } .modal-background { bottom: 0; left: 0; position: absolute; right: 0; top: 0; background: black; opacity: 0.9; }
SCSS CSS @mixin overlay() { bottom: 0; left: 0; position:
absolute; right: 0; top: 0; } .modal-background { @include overlay(); background: black; opacity: 0.9; } .product-link { @include overlay(); background: blue; opacity: 0.6; } .modal-background { bottom: 0; left: 0; position: absolute; right: 0; top: 0; background: black; opacity: 0.9; } .product-link { bottom: 0; left: 0; position: absolute; right: 0; top: 0; background: blue; opacity: 0.6; }
SCSS CSS @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius:
$radius; border-radius: $radius; } .box { @include border-radius(3px); } .box { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; border-radius: 3px; }
$numPerRow: 4; $margin: 2%; width: ((100% - (($numPerRow - 1)
* $margin)) / $numPerRow); @mixin columnMaker($numPerRow, $margin) { width: ((100% - (($numPerRow - 1) * $margin)) / $numPerRow); &:nth-child(n) { margin-bottom: $margin; margin-right: $margin; } &:nth-child(#{$numPerRow}n) { margin-right: 0; margin-bottom: 0; } }
@extend
SCSS CSS %message-shared { border: 1px solid #ccc; padding: 10px;
color: #333; } %equal-heights { display: flex; flex-wrap: wrap; } .success { @extend %message-shared; border-color: green; } .error { @extend %message-shared; border-color: red; } .warning { @extend %message-shared; border-color: yellow; } .success, .error, .warning { border: 1px solid #ccc; padding: 10px; color: #333; } .success { border-color: green; } .error { border-color: red; } .warning { border-color: yellow; }
@extend - rulesets are inherently related - near to each
other in the code @mixin - inject dynamic values into repeated construct - Sassy copy/paste
Loops
@if @for @each @while
SCSS CSS $list: adam john wynn mason kuroir; @mixin author-images
{ @each $author in $list { .photo-#{$author} { background: image-url(‘/images/#{$author}.png’) no-repeat; } } } .author-bio { @include author-images; } .author-bio .photo-adam { background: url(‘/images/adam.png’) no-repeat; } .author-bio .photo-john { background: url(‘/images/adam.png’) no-repeat; } .author-bio .photo-wynn { background: url(‘/images/adam.png’) no-repeat; } .author-bio .photo-mason { background: url(‘/images/adam.png’) no-repeat; } .author-bio .photo-kuroir { background: url(‘/images/adam.png’) no-repeat; }
Pre-built Functions
lighten($color, $amount) grayscale($color) complement($color) unquote($string) to-upper-case($string) random()
$notification-confirm: hsla(101, 72%, 37%, 1); $notification-warning: #ffc53a; $notification-alert: rgb(172, 34,
34); %notification { border-radius: 10px; display: block; font-size: 1.5em; font-family: sans-serif; padding: 1em 2em; margin: 1em auto; width: 30%; text-align: center; } SCSS
@function set-notification-text-color($color) { @if (lightness($color) > 50) { @return #000000;
} @else { @return #ffffff; } } .notification { @extend %notification; } .notification-confirm { background: $notification-confirm; color: set-notification-text-color($notification-confirm); } .notification-warning { background: $notification-warning; color: set-notification-text-color($notification-warning); } .notification-alert { background: $notification-alert; color: set-notification-text-color($notification-alert); } SCSS
Getting Started WordPress.com Plugin WP-SCSS Command Line NPM: nom install
-g sass Chocolatey: choco install sass Homebrew: brew install sass/sass/sass sass styles.scss styles.css Application CodeKit Compass.app Koala PHPStorm
Resources: sass-lang.com marksheet.io thesassway.com sassisfaction.com