Kitty Giraudel
Non-binary accessibility & diversity advocate, frontend developer, author. Real life cat. They/she.
“Your CSS
is a mess.”
Your CSS
is a mess.
Broken from the start?
Sass to the rescue!
But... wait.
It's not all bright and shiny.
Complexity,
maintainability,
scary code...
Don't
over-{think|engineer}
KISS
Keep It
Simple, Stupid!
KYSS
Keep Your
Sass Simple
KYSSS
Keep Your
Sass Simple & Straightforward
KYSSSS
Keep Your
Sass Simple, Smart & Straightforward...
Write
simple APIs
.parent {
@include _(
10 8 6 4,
$gutter: alpha omega omega default
);
}
.parent {
width: 100%;
@include respond-to("desktop") {
width: 75%;
}
}
$color: map-get(
map-get(
map-get(
$themes, "shopping"
), "colors"
), "secondary"
);
$color: theme-conf(
"shopping", "colors", "secondary"
);
Beware of selector nesting
Don't do everything in Sass
Rethinking
Atwood's law
Anything that can be written in Sass will eventually be written in Sass (probably by me)
SassyJSON
@include json-encode((
"cats" : true,
"answer" : 42
));
// {"cats": true, "answer": 42}
SassySort
$list: sort(
"How" "cool" "Sass" "is?" 42
);
// 42 "cool" "How" "is?" "Sass"
SassyBitwise
$value: bitwise(42 '&' 48);
// 32
Some things shouldn't
be done
Vendor
prefixing?
Maybe not.
Autoprefixer
Less code
Up-to-date
REM?
Think twice.
px_to_rem
Less code
Easier
Clean
your code
.selector {
color: blue;
backgroud: url(unicorn.png);
-webkit-transform: rotate(15deg);
transform: rotate(15deg);
position: relative }
.selector {
position: relative;
-webkit-transform: rotate(15deg);
transform: rotate(15deg);
color: blue;
backgroud: url("unicorn.png");
}
cssguidelin.es
scss-lint
Document
your code
.selector {
overflow: hidden;
white-space: nowrap;
margin: -.5em;
z-index: 42;
}
/**
* 1. Clear inner floats
* 2. Force all items on same line
* 3. Cancel items padding
* 4. Above content, below modal
*/
.selector {
overflow: hidden; /* 1 */
white-space: nowrap; /* 2 */
margin: -.5em; /* 3 */
z-index: 42; /* 4 */
}
Document
your Sass
SassDoc
/// Mixin to size an element
/// @access public
/// @param {Number} $width - Width
/// @param {Number} $height - Height
/// @example scss - Sizing an element
/// .element {
/// @include size(100%, 5em);
/// }
SassDoc
SassDoc
Test
your code
True
or
BootCamp
@include describe("A suite") {
@include it("contains spec with expectation") {
@include should(
expect(2 + 2),
to(be(4))
);
}
}
Bootcamp
KISS - KYSS
clean, test,
document
And everything will be fine.
Thanks!
@HugoGiraudel
By Kitty Giraudel
Non-binary accessibility & diversity advocate, frontend developer, author. Real life cat. They/she.