SlideShare uma empresa Scribd logo
OBJECT ORIENTED CSS
Gabriel Albuquerque
ocapjack@gmail.com
NICOLE SULLIVAN
O QUE É?
Não é um framework
Nã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
“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
Elementos reutilizáveis
Domínio da cascata
Classes múltiplas para simular OO
Código limpo e menor
Menos páginas de estilos
Menos requisições HTTP
Escalabilidade
Desenvolvimento mais rápido
Site mais rápido
“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
1 Heading
5 Media Blocks
2 Link Styles
1 Comment List
1 Action List
1 Paragraph
DEFINA VALORES DEFAULT
#weatherModule h3 {
color: red;
}
#tabs h3 {
color: blue;
}
#weatherModule h3 {
color: red;
}
#tabs h3 {
color: blue;
}
h3 {
color: black;
}
#weatherModule h3 {
color: red;
}
#tabs h3 {
color: blue;
}
EVITE ESPECIFICAR ELEMENTOS
div.error {
color: red;
}
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;
}
USE A ORDEM DA CASCATA A SEU FAVOR
html body .myModule div .hd
{
margin-bottom: 10px;
}
html body .myModule div .hd
{
margin-bottom: 10px;
}
.myModule .hd {
margin-bottom: 10px;
}
EVITE ESPECIFICAR LOCALIZAÇÃO
.sidebar ul li a {
color: red;
}
.header ul li a {
color: blue;
}
.sidebar ul li a {
color: red;
}
.header ul li a {
color: blue;
}
.sidebar {
color: red;
}
.header {
color: blue;
}
.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;
}
.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;
}
.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;
}
NÃO ACESSE UM NÓ DE UM OBJETO DIRETAMENTE
.inner {
color: red;
}
.tr {
color: blue;
}
.bl {
color: black;
}
.inner {
color: red;
}
.tr {
color: blue;
}
.bl {
color: black;
}
.weatherMod .inner {
color: red;
}
.weatherMod .tr {
color: blue;
}
.weatherMod .bl {
color: black;
}
SEPARE A ESTRUTURA DO VISUAL
#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;
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;
}
SEPARE O CONTAINER DO CONTEÚDO
.myObject h2 {
font-size: .8em;
line-height: 1;
color: #777;
text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;
}
.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;
}
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
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

Mais conteúdo relacionado

Semelhante a OOCSS - Object Oriented CSS

Semelhante a OOCSS - Object Oriented CSS (6)

CSS
CSSCSS
CSS
 
Less - CSS Dynamic
Less - CSS DynamicLess - CSS Dynamic
Less - CSS Dynamic
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
Manual_html.pptx Curso_Técnico Informática de Sistemas
Manual_html.pptx Curso_Técnico Informática de SistemasManual_html.pptx Curso_Técnico Informática de Sistemas
Manual_html.pptx Curso_Técnico Informática de Sistemas
 
Css
Css   Css
Css
 
NoSQL e MongoDB
NoSQL e MongoDBNoSQL e MongoDB
NoSQL e MongoDB
 

Mais de Gabriel Albuquerque

Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...Gabriel Albuquerque
 
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"Gabriel Albuquerque
 
Star Wars e a Cultura da Convergência
Star Wars e a Cultura da ConvergênciaStar Wars e a Cultura da Convergência
Star Wars e a Cultura da ConvergênciaGabriel Albuquerque
 
Cultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e CasesCultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e CasesGabriel Albuquerque
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordGabriel Albuquerque
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoGabriel Albuquerque
 
Programação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaProgramação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaGabriel Albuquerque
 

Mais de Gabriel Albuquerque (11)

Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...
 
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
 
Teoria dos Grafos
Teoria dos GrafosTeoria dos Grafos
Teoria dos Grafos
 
Star Wars e a Cultura da Convergência
Star Wars e a Cultura da ConvergênciaStar Wars e a Cultura da Convergência
Star Wars e a Cultura da Convergência
 
Cultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e CasesCultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e Cases
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Tecnologia Bluetooth
Tecnologia BluetoothTecnologia Bluetooth
Tecnologia Bluetooth
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco Mínimo
 
Programação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaProgramação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma Máxima
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
WordPress
WordPressWordPress
WordPress
 

OOCSS - Object Oriented CSS