I'm Tab Atkins

and I work at Google.

@tabatkins

xanthir.com/+

xanthir.com

xanthir.com/talks/2014-10-02/

a, b {
	i, j {
		x, y {
			...
		}
	}
}
a i x, a i x, a j x, a j y,
b i x, b i y, b j x, b j y {
	...
}
.error { /* stuff */ }
.serious-error {
	@extend .error;
	/* more stuff */
}
.error, .serious-error { /* stuff */ }
.serious-error {
	/* more stuff */
}
a b c { ... }
x y {
	@extend c;
}
a b c,
x a b y, a x b y, a b x y,
ax b y, a bx y { ... }
a, b {
	i, j {
		x, y {
			...
		}
	}
}
:matches(a,b) :matches(i,j) :matches(x,y) {
	...
}
a b c { ... }
x y {
	@extend c;
}
a b c, x y:matches(a b y) { ... }

Variables

foo {
	--bar: literally anything;
}
CSS Extensions

Custom Media Queries

@custom-media --small-screen (max-width: 25em);
@media (--small-screen) {
	...
}

Custom Media Queries

<script>CSS.customMedia.set("--date", ...);</script>
@media (--date: 20141002) and (1100 <= --time < 1150) {
	...
}

Custom Functions

foo {
	color: --lighter(red);
}

Custom At-Rules

@--mixin foo(x, y, z) { ... }
div.bar {
	@--include foo(1, 2, 3);
}

The End

@tabatkins

xanthir.com/+

xanthir.com

xanthir.com/talks/2014-10-02/

Questions?