36
OBJECT ORIENTED CSS Gabriel Albuquerque [email protected]

OOCSS - Object Oriented CSS

Embed Size (px)

DESCRIPTION

Melhore a performance com o OOCSS.

Citation preview

Page 1: OOCSS - Object Oriented CSS

OBJECT ORIENTED CSS

Gabriel Albuquerque

[email protected]

Page 2: OOCSS - Object Oriented CSS

NICOLE SULLIVAN

Page 3: OOCSS - Object Oriented CSS

O QUE É?

Não é um frameworkNão é outra linguagem

É um paradigma

Conjuto de boas práticas para otimizar

a relação de componentes HTML com seus estilos e

consequentemente melhorar a performance do site

Page 4: OOCSS - Object Oriented CSS

“Programação orientada a objetos é

um paradigma de programação que

representa conceitos como 'objetos' que

possuem campos de dados (atributos que

descrevem o objeto) e procedimentos

associados, conhecidos como métodos.”

- Wikipedia

CSS orientado a objetos é um

paradigma que representa

elementos HTML como 'objetos' que possuem estilos que podem ser

reutilizados.

OOP OOCSS

Page 5: OOCSS - Object Oriented CSS

Elementos reutilizáveis

Domínio da cascata

Classes múltiplas para simular OO

Page 6: OOCSS - Object Oriented CSS

Código limpo e menor

Page 7: OOCSS - Object Oriented CSS

Menos páginas de estilos

Menos requisições HTTP

Page 8: OOCSS - Object Oriented CSS

Escalabilidade

Desenvolvimento mais rápido

Site mais rápido

Page 9: OOCSS - Object Oriented CSS

“Crie uma biblioteca de componentes” - Nicole Sullivan

Separar os elementos

• Headings

• Lists

• Module headers e footers

• Grids

• Buttons

• Qualquer coisa que seja consistente em todo o site

Misturar e combinar esses componentes para formar o site

Primeiro definir todos os componentes e depois as páginas

Page 10: OOCSS - Object Oriented CSS

1 Heading

5 Media Blocks

2 Link Styles

1 Comment List

1 Action List

1 Paragraph

Page 11: OOCSS - Object Oriented CSS

DEFINA VALORES DEFAULT

Page 12: OOCSS - Object Oriented CSS

#weatherModule h3 {

color: red;

}

#tabs h3 {

color: blue;

}

Page 13: OOCSS - Object Oriented CSS

#weatherModule h3 {

color: red;

}

#tabs h3 {

color: blue;

}

h3 {

color: black;

}

#weatherModule h3 {

color: red;

}

#tabs h3 {

color: blue;

}

Page 14: OOCSS - Object Oriented CSS

EVITE ESPECIFICAR ELEMENTOS

Page 15: OOCSS - Object Oriented CSS

div.error {

color: red;

}

Page 16: OOCSS - Object Oriented CSS

div.error {

color: red;

}

EXCEÇÃO

Estender uma classe para funcionar em vários elementos.

Exemplo: Estender a classe error para aplicá-la nos elementos strong ou div declarando somente os valores diferentes dos valores default

.error { color: red;

}

Page 17: OOCSS - Object Oriented CSS

USE A ORDEM DA CASCATA A SEU FAVOR

Page 18: OOCSS - Object Oriented CSS

html body .myModule div .hd {

margin-bottom: 10px;

}

Page 19: OOCSS - Object Oriented CSS

html body .myModule div .hd {

margin-bottom: 10px;

}

.myModule .hd {

margin-bottom: 10px;

}

Page 20: OOCSS - Object Oriented CSS

EVITE ESPECIFICAR LOCALIZAÇÃO

Page 21: OOCSS - Object Oriented CSS

.sidebar ul li a {

color: red;

}

.header ul li a {

color: blue;

}

Page 22: OOCSS - Object Oriented CSS

.sidebar ul li a {

color: red;

}

.header ul li a {

color: blue;

}

.sidebar {

color: red;

}

.header {

color: blue;

}

Page 23: OOCSS - Object Oriented CSS

.sidebar ul li a {

color: red;

}

.header ul li a {

color: blue;

}

.sidebar {

color: red;

}

.header {

color: blue;

}

.sidebar a {

color: red;

}

.header a {

color: blue;

}

Page 24: OOCSS - Object Oriented CSS

.sidebar ul li a {

color: red;

}

.header ul li a {

color: blue;

}

.sidebar {

color: red;

}

.header {

color: blue;

}

.sidebar a {

color: red;

}

.header a {

color: blue;

}

Page 25: OOCSS - Object Oriented CSS

.sidebar ul li a {

color: red;

}

.header ul li a {

color: blue;

}

.sidebar {

color: red;

}

.header {

color: blue;

}

.sidebar a {

color: red;

}

.header a {

color: blue;

}

Page 26: OOCSS - Object Oriented CSS

NÃO ACESSE UM NÓ DE UM OBJETO DIRETAMENTE

Page 27: OOCSS - Object Oriented CSS

.inner {

color: red;

}

.tr {

color: blue;

}

.bl {

color: black;

}

Page 28: OOCSS - Object Oriented CSS

.inner {

color: red;

}

.tr {

color: blue;

}

.bl {

color: black;

}

.weatherMod .inner {

color: red;

}

.weatherMod .tr {

color: blue;

}

.weatherMod .bl {

color: black;

}

Page 29: OOCSS - Object Oriented CSS

SEPARE A ESTRUTURA DO VISUAL

Page 30: OOCSS - Object Oriented CSS

#button {

width: 200px;

height: 50px;

padding: 10px;

border: solid 1px #CCC;

background: linear-gradient(#CCC, #222);

box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;

}

#box {

width: 400px;

overflow: hidden;

border: solid 1px #CCC;

background: linear-gradient(#CCC, #222);

box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;

}

Page 31: OOCSS - Object Oriented CSS

#button {

width: 200px;

height: 50px;

padding: 10px;

border: solid 1px #CCC;

background: linear-gradient(#CCC, #222);

box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;

}

#box {

width: 400px;

overflow: hidden;

border: solid 1px #CCC;

background: linear-gradient(#CCC, #222);

box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;

}

.button {

width: 200px;

height: 50px;

}

.box {

width: 400px;

overflow: hidden;

}

.skin {

border: solid 1px #ccc;

background: linear-gradient(#CCC, #222);

box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;

}

Page 32: OOCSS - Object Oriented CSS

SEPARE O CONTAINER DO CONTEÚDO

Page 33: OOCSS - Object Oriented CSS

.myObject h2 {

font-size: .8em;

line-height: 1;

color: #777;

text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;

}

Page 34: OOCSS - Object Oriented CSS

.myObject h2 {

font-size: .8em;

line-height: 1;

color: #777;

text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;

}

h2 {

font-size: .7em;

line-height: 2;

color: #CCC;

}

.myObject .category {

font-size: .8em;

line-height: 1;

color: #777;

text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;

}

Page 35: OOCSS - Object Oriented CSS

RESUMO

Definir valores default

Evite especificar elementos

Use a ordem da cascata a seu favor

Evite especificar localização

Não acesse sub-nó de um objeto diretamente

Separe a estrutura do visual

Separe o container do conteúdo

Page 36: OOCSS - Object Oriented CSS

REFERÊNCIAS

http://www.slideshare.net/stubbornella

https://github.com/stubbornella/oocss/wiki

http://www.stubbornella.org/

http://oocss.org/

http://coding.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/

http://tableless.com.br/oocss-ou-css-do-jeito-certo/#.UaTjJ6Ie2IB

http://taligarsiel.com/Projects/howbrowserswork1.htm#CSS_parsing

http://thenextweb.com/2011/03/22/writing-efficient-css-understand-your-selectors/

http://tableless.com.br/melhorando-performance-css/#.UaT1FqIe2IA