css naming | ceci n'est pas un pipe

61
Ceci n'est pas une pipe @wnas

Upload: wilfred-nas

Post on 14-Jun-2015

227 views

Category:

Internet


4 download

DESCRIPTION

Slides of a lighting talk I gave for the 2014 fronteers conference on css naming

TRANSCRIPT

Page 1: CSS naming | ceci n'est pas un pipe

Ceci n'est pas une pipe@wnas

Page 2: CSS naming | ceci n'est pas un pipe

About css naming conventions.

Page 3: CSS naming | ceci n'est pas un pipe

What are they.

Page 4: CSS naming | ceci n'est pas un pipe

.g-form-checkbox {// always

}

Page 5: CSS naming | ceci n'est pas un pipe

.g-form-checkbox {// use

}

G is for the generic stuff

Page 6: CSS naming | ceci n'est pas un pipe

.g-form-checkbox {// a

}

FORM is for the form stuff

Page 7: CSS naming | ceci n'est pas un pipe

.g-form-checkbox {// carrousel

}

CHECKBOX is for the …

Page 8: CSS naming | ceci n'est pas un pipe

Why should you use them

Page 9: CSS naming | ceci n'est pas un pipe

.textAlignRight {text-align: left;

}

Page 10: CSS naming | ceci n'est pas un pipe

We are wiser than that, right?

Page 11: CSS naming | ceci n'est pas un pipe

.button {// be

}

Page 12: CSS naming | ceci n'est pas un pipe

.btn {// excellent

}

Page 13: CSS naming | ceci n'est pas un pipe

.normalButton {// to

}

Page 14: CSS naming | ceci n'est pas un pipe

.button button {// each

}

Page 15: CSS naming | ceci n'est pas un pipe

.button {// be

}.btn {

// excellent}.normalButton {

// to}.button button {

// each}button {

// other}

Page 16: CSS naming | ceci n'est pas un pipe

To make you think

Page 17: CSS naming | ceci n'est pas un pipe

To help you communicate

Page 18: CSS naming | ceci n'est pas un pipe

Don’t build pages

Page 19: CSS naming | ceci n'est pas un pipe

Build components

Page 20: CSS naming | ceci n'est pas un pipe

And elements

Page 21: CSS naming | ceci n'est pas un pipe

To get you started

Page 22: CSS naming | ceci n'est pas un pipe

BEM https://bem.info/method/

Page 23: CSS naming | ceci n'est pas un pipe

OOCSS http://oocss.org/

Page 24: CSS naming | ceci n'est pas un pipe

SMACSS https://smacss.com/

Page 25: CSS naming | ceci n'est pas un pipe

My choice?

Page 26: CSS naming | ceci n'est pas un pipe

Build your own

Page 27: CSS naming | ceci n'est pas un pipe

Pattern lab http://patternlab.io/

Page 28: CSS naming | ceci n'est pas un pipe

Atoms, molecules and organisms

Page 29: CSS naming | ceci n'est pas un pipe

Examples

Page 30: CSS naming | ceci n'est pas un pipe

Atoms

Page 31: CSS naming | ceci n'est pas un pipe

<input>

Page 32: CSS naming | ceci n'est pas un pipe

.g-form-input {// Neverborder: 1px solid pink;

}

Page 33: CSS naming | ceci n'est pas un pipe

Types

Page 34: CSS naming | ceci n'est pas un pipe

.g-form-input {// gonnaborder: 1px solid pink;

}.g-form-input[type=search] {

// giveborder-color: orange;

}.g-form-input[type=number] {

// youborder-style: dotted;

}

Page 35: CSS naming | ceci n'est pas un pipe

State

Page 36: CSS naming | ceci n'est pas un pipe

.g-form-input {// upborder: 1px solid pink;

}.g-form-input:focus {

// Neveroutline: 0;

}.g-form-input[type=search]:focus {

// gonnaborder-width: 2px;outline: 2px dotted blue;

}

Page 37: CSS naming | ceci n'est pas un pipe

You could also do…

Page 38: CSS naming | ceci n'est pas un pipe

.g-form-input {// sayborder: 1px solid pink;

}.g-form-input.search {

// good beyborder-style: dotted;

}.g-form-input.search.disabled {

// Neverborder-color: lightgray;

}

Page 39: CSS naming | ceci n'est pas un pipe

.g-form-input {// gonnaborder: 1px solid pink;

}.g-form-input-search {

// turnborder-image-outset: sides;

}.g-form-input-search—disabled {

// aroundborder-left:0;

}

Page 40: CSS naming | ceci n'est pas un pipe

Be lazy!

Page 41: CSS naming | ceci n'est pas un pipe

Molecules

Page 42: CSS naming | ceci n'est pas un pipe

How they play together

Page 43: CSS naming | ceci n'est pas un pipe

.g-m-search {// and

}}

Page 44: CSS naming | ceci n'est pas un pipe

.g-m-search {// desert

}.g-m-search .g-form-input {// youborder-bottom: 5px;

}

Page 45: CSS naming | ceci n'est pas un pipe

Organisms

Page 46: CSS naming | ceci n'est pas un pipe

.g-o-header {// now for something,

}.g-o-header .g-form-input:focus {// completely differentborder-bottom-color: blue;

}

Page 47: CSS naming | ceci n'est pas un pipe

.g-o-header .g-m-search {// the

}.g-o-header .g-m-search .g-form-input:focus {

// Larchborder-top-color: khaki;

}

Page 48: CSS naming | ceci n'est pas un pipe

Templates

Page 49: CSS naming | ceci n'est pas un pipe

.g-t-search .g-form-input {// red pillborder-color: red;

}

Page 50: CSS naming | ceci n'est pas un pipe

.g-t-result .g-form-input {// blue pillborder-color: aqua;

}

Page 51: CSS naming | ceci n'est pas un pipe

Pages

Page 52: CSS naming | ceci n'est pas un pipe

.g-t-result.g-page-jammSession .g-form-input {// almost done Krijn…border: 0;

}

Page 53: CSS naming | ceci n'est pas un pipe

A few more pointers

Page 54: CSS naming | ceci n'est pas un pipe

Avoid using ID’s

Page 55: CSS naming | ceci n'est pas un pipe

Don’t over nest

Page 56: CSS naming | ceci n'est pas un pipe

Avoid direct child selectors >

Page 57: CSS naming | ceci n'est pas un pipe

Also avoid the Adjacent sibling combinator (+) and the General sibling combinator (~)

Page 58: CSS naming | ceci n'est pas un pipe

More than one class on an element ain’t all bad.

Page 59: CSS naming | ceci n'est pas un pipe

<div class=“g-form-button

g-form-button-inactive g-form-button-primary”>

<button>Click me</button></div>

Page 60: CSS naming | ceci n'est pas un pipe

Talk about it!

Page 61: CSS naming | ceci n'est pas un pipe

@wnas