SlideShare ist ein Scribd-Unternehmen logo
1 von 116
Downloaden Sie, um offline zu lesen
Un mejor CSS
Planeando para no sufrir en el futuro.
DrupalCon Latin America - Febrero 2015
Jose Leiva
@leivajd // leivajd.com
2007 web
2010 Drupal
Objetivo
Que nuestro “yo” del futuro
no nos odie ;)
Objetivo
1CSS es fácil
selector
selector{
	propiedad: valor;
}
selector{
	propiedad: valor;
	propiedad: valor;
}
selector{
	 propiedad: valor;
}
selector{
	 propiedad: valor;
}
selector{
	 propiedad: valor;
}
selector{
	 propiedad: valor;
}
} .css
CSS es fácil, verdad?
Escribir CSS es sencillo.
Pero...
.headerMenu ul.menu li.active-trail a {
	 background: #D0DFEF;
}
.view-news-and-press.news-right-side-bar-
block .views-row {
	position: relative;
	min-height: 60px;
}
.item-title,
#main-column .item-title,
#second-column .item-title,
.primary-lead-area .item-title,
.second-lead-area .item-title {
	 font-size: 18px;
	border: 0;
	 font-family: Georgia;
	 margin: 0;
	 clear: none;
	 padding-bottom: 5px;
}
• Alta especificidad
• Alta especificidad
• Alta dependencia HTML
• Alta especificidad
• Alta dependencia HTML
• Golpea performance
• Alta especificidad
• Alta dependencia HTML
• Golpea performance
• Difícil de reutilizar
• Alta especificidad
• Alta dependencia HTML
• Golpea performance
• Difícil de reutilizar
:(
Escribir CSS es sencillo.
La arquitectura no.
Arquitectura
Herramientas, planear & escribir
CSS de manera que el código sea
de calidad
• Performance
• Performance
• Reusable
• Performance
• Reusable
• Hace lo que debería?
• Performance
• Reusable
• Hace lo que debería?
• Mantenible y escalable
• Performance
• Reusable
• Hace lo que debería?
• Mantenible y escalable
• Performance
• Reusable
• Hace lo que debería?
• Mantenible y escalable
:)
2Procesos & herramientas
Pensemos en nuestros amigos del
back-end. Organización, variables,
parciales, objetos y abstracción.
Cambio & complejidad.
OOCSS, BEM & SMACSS, no
son librerías o framework, son
metodologías.
• Entender el todo y sus partes.
• Organización y estructura.
• Vanilla CSS o prepocesadores.
CSS preprocesadores, llenan
vacíos.
CSS preprocesadores, llenan
vacíos. Son una abstracción.
.scss
.scss
Sass
->
.css.scss
Sass
-> ->
• Son excelentes, si se usan correctamente
• Dividir en pequeños pedazos
• Proveen abstracción
• No reemplazan CSS o arquitectura
• Son excelentes, si se usan correctamente
• Dividir en pequeños pedazos
• Proveen abstracción
• No reemplazan CSS o arquitectura
foo {
	...
}
foo zaa {
	...
}
foo {
	...
	
	 zaa {
		...
	}
}
.home_page_at_work {
	 .views-field-field-primary-image-attachment {
	 	 .field-content {
			img {
				...
			}
		}
	}
}
.home_page_at_work .views-field-field-prima-
ry-image-attachment .field-content img {
	...
}
:(
• No anidar == HTML
• Un ojo en el output
• Si podemos, no anidar
• Regla 3 niveles
• Son excelentes, si se usan correctamente
• Dividir en pequeños pedazos
• Proveen abstracción
• No reemplazan CSS o arquitectura
stylesheets[all][] = css/reset.css
stylesheets[all][] = css/drupal-stuff.css
stylesheets[all][] = css/base.css
stylesheets[all][] = css/layout.css
stylesheets[all][] = css/typo.css
; FOD
stylesheets[all][] = css/ds_2col.css
stylesheets[all][] = css/search.css
stylesheets[all][] = css/system.menus.css
stylesheets[all][] = css/screen.css
stylesheets[all][] = css/screen.css
Magic en lugar FOAD
https://www.drupal.org/project/magic
// Screen
// =======================
// Variables, Mixins, functions
@import “partials/base”;
// Page
@import “partials/page/screen”;
// Patterns
@import “partials/patterns/screen”;
// Layout
@import “partials/layout/screen”;
// Modules
@import “partials/modules/screen”;
screen.scss
sass/
|-- screen.scss         # Primary Sass file
|-- partials/ # Partials
| |-- _base.scss
| |-- _variables.scss
| |-- _mixins.scss
| |-- vendors/
| | |---- _drupal.scss
|   |    |---- _jqueryandstuff.scss
| | |---- ...
| |-- patterns/
| | |---- _buttons.scss
| | |---- _links.scss
| | |---- ...
| |-- components/
| | |---- _paginator.scss
| | |---- ...
| |---- ...
// Links
// ===================
a {
color: $blue; text-decoration: none;
&:hover,
&:active {
color: $black;
}
}
_links.scss
• Son excelentes, si se usan correctamente
• Dividir en pequeños pedazos
• Proveen abstracción
• No reemplazan saber CSS
Pensar en objetos o abstracciones, y
desgranar esos componentes en piezas
pequeñas.
Objetos son reutilizables.
.promo-box {}
.promo-box h3 {}
.promo-box {}
.promo-box h3,
.promo-box h4 {}
.promo-box {}
//mi heading puede ser cualquier elemento
.promo-box .promo-box-h {}
ul.product-list li {}
.product-list li {}
.product-list .product-item {}
.product-item {}
<ul>
	 <li class=”product-item”>Product 1</li>
	 <li class=”product-item”>Product 2</li>
	 <li class=”product-item”>Product 3</li>
</ul>
<p class=”produt-item”>Product 1</p>
<div class=”product-item”>
	 <h3 class=”produt-item-h”>Product 1</h3>
	<p>Detalles</p>
</div>
Cuidado con los dogmas, siempre le
hemos tenido miedo a la clasitis, pero
si nos funciona no hay porque
descartarlo.
Sentido común. Escribir patrones una
vez, reusar esos pedazos.
Mo’ Devs, Mo’ Problems
• Training
• Training
• Buenas prácticas
Sintaxis, formato consistente,
convenciones para nombres*, etc
.promo-item {
		background-color: #000;
		color: #fff;
		padding: 10px;
}
https://github.com/ahmednuaman/grunt-scss-lint
* Naming conventions
There are only two hard things in
computer science: cache invalidation and
naming things. - Phil Karlton
• SMACSS - http://bit.ly/1ILqWwb
• BEM - http://bit.ly/1CPXvpb
• OOCSS - http://bit.ly/1zGLVdH
OOCSS Principios:
• Claridad
• Semántico
• Genérico
• Breve
.is-touch {
		...
}
.is-hidden {
		...
}
.is-selected {
		...
}
.tab {
		...
		&.is-selected {
			...
		}
}
//output
.tab.is-selected {
	 ...
}
.btn {
		...
}
Objeto
.items-list {
		...
		
		.item-thumb {
			...
		}
}
Padre - Hijo
.product-list {
		...
}
.product-list-thumb {
		...
}
Padre - Hijo
Contexto. Asignar cambios de estilo
sólo a elementos que cambien por
página, no a objetos.
.cart {
	.main-content {
		...
	}
.sidebar {
		...
	}
}
.promo-box {
	 background: red;
	 color: white;
}
// atados a la estructura
.sidebar .promo-box {	
	 background: black;
}
.promo-box {
	 background: red;
	 color: white;
}
// usamos la Cascada
.promo-box-dark {	
	 background: black;
}
class=”promo-box promo-box-dark”
Subclassing
.promo-box {
	 background: red;
	 color: white;
}
.promo-box-dark {
	@extend .promo-box;
	 background: black;
}
class=”promo-box-dark”
Subclassing
.promo-box,
.promo-box-dark {
background: red;
color: white;
}
.promo-box-dark {
background: black;
}
.promo-box {
	 background: red;
	 color: white;
}
.promo-box-dark {
	 @extend .promo-box;
	 background: black;
}
...
.promo-wrap .promo-box {
	 margin: 0;
}
.promo-box, .promo-box-dark {
	 background: red;
	 color: white;
}
.promo-box-dark {
	 background: black;
}
.promo-wrap .promo-box,
.promo-wrap .promo-box-dark {
	 margin: 0;
}
:(
Cuidar el output.
%placeholder es una buena
alternativa.
.btn,
%btn {
	...
}
.btn-positive {
@extend %btn;
...
}
.btn-negative {
@extend %btn;
...
}
.btn,
.btn-positive,
.btn-negative {
	...
}
.btn-positive {
...
}
.btn-negative {
...
}
.ui-promo-item {
		...
}
class=”ui-promo-item js-promo-item qa-
promo-item”
.ui-promo-item {
		...
}
class=”ui-promo-item js-promo-item qa-
promo-item”
Tenga una convención,
documéntelo y adhiérase a ella.
Lectura recomendada
http://24ways.org/2014/naming-things/
http://nicolasgallagher.com/about-html-semantics-
front-end-architecture/
• Training
• Buenas prácticas
• Documentar
http://codepen.io/chriscoyier/blog/codepens-css
/* Comentarios FTW */
/**
* Contents
* =========
* 1. Reset
* 2. Base
* 3. Layout
* 4. Modules
**/
...
/*
* =Reset
*/
/**
* Titulo
* 1. Descripción del comentario,
* detalles de porque se necesita,etc
**/
.foo {
	 	 overflow: hidden; /* [1] */
}
// En cada bloque de reglas, los
// @include o @extend se incluyen
// de primero, para evitar sobre
// escribir declaraciones.
// .foo {
// @include mixin-name;
// propiedad: valor;
// }
_mixins.scss
// Tip
// --------------------
// Create a rectangle-triangle to be
// used as a tip.
@mixin tip($color: $orange) {
	...
}
_mixins.scss
CSS no es siempre el problema:
trabajamos con otros devs, falta de
conocimiento, diferentes técnicas.
3Aterrizando
Pragmatismo sobre perfección. Mejor un
“good enough” hoy, que un “perfecto”
mañana.
El código del equipo debe ser un libro que
cualquiera puede leer, no un diario personal.
Escribamos menos CSS. Cada parte es un
potencial punto de falla, reducir features y
código.
Modularidad en CSS no es realmente la meta.
vMantenibilidad es. Si CSS es modular pero
es difícil de mantener, entonces es malo.
Gracias!
@leivajd
http://www.slideshare.net/leivajd
Evalúa la sesión.
https://latinamerica2015.drupal.org/node/4083

Weitere ähnliche Inhalte

Ähnlich wie CSS, planeando para el futuro (20)

CSS3
CSS3CSS3
CSS3
 
Frameworks CSS
Frameworks CSSFrameworks CSS
Frameworks CSS
 
Introducción a los Frameworks CSS
Introducción a los Frameworks CSSIntroducción a los Frameworks CSS
Introducción a los Frameworks CSS
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Semana 3 Maquetación CSS
Semana 3   Maquetación CSSSemana 3   Maquetación CSS
Semana 3 Maquetación CSS
 
utilidades bootstrap
utilidades bootstraputilidades bootstrap
utilidades bootstrap
 
Clase 10. CSS 6.pdf
Clase 10. CSS 6.pdfClase 10. CSS 6.pdf
Clase 10. CSS 6.pdf
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
css3
css3css3
css3
 
Acceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraAcceptance testing with Steak and Capybara
Acceptance testing with Steak and Capybara
 
HTML5, CSS3, Responsive Design
HTML5, CSS3, Responsive DesignHTML5, CSS3, Responsive Design
HTML5, CSS3, Responsive Design
 
Estándares Web con Chico UI
Estándares Web con Chico UIEstándares Web con Chico UI
Estándares Web con Chico UI
 
Css - Tema 2
Css -  Tema 2Css -  Tema 2
Css - Tema 2
 
CSS3
CSS3CSS3
CSS3
 
¿Rails no escala?
¿Rails no escala?¿Rails no escala?
¿Rails no escala?
 
Estilos en React con styled-components
Estilos en React con styled-componentsEstilos en React con styled-components
Estilos en React con styled-components
 
hojas de_estilo_css
 hojas de_estilo_css hojas de_estilo_css
hojas de_estilo_css
 
T2 1-css
T2 1-cssT2 1-css
T2 1-css
 
Bootstrap, un framework CSS
Bootstrap, un framework CSSBootstrap, un framework CSS
Bootstrap, un framework CSS
 
Estilo & CSS3
Estilo & CSS3Estilo & CSS3
Estilo & CSS3
 

Kürzlich hochgeladen

Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30SantiagoAgudelo47
 
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYPLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYkarendaza9506
 
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfINICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfBrbara57940
 
Anexo Nivel 3 Ficha Lectura pptjsbdkks
Anexo  Nivel 3 Ficha  Lectura pptjsbdkksAnexo  Nivel 3 Ficha  Lectura pptjsbdkks
Anexo Nivel 3 Ficha Lectura pptjsbdkkscristinacastro892534
 
140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.doc140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.docilvrosiebp
 
Fundamentos de la Ergonomía y sus características principales
Fundamentos de la Ergonomía y sus características principalesFundamentos de la Ergonomía y sus características principales
Fundamentos de la Ergonomía y sus características principalesLuis Fernando Salgado
 
Slaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdfSlaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdfslaimenbarakat
 
Planificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.docPlanificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.docAhilynBasabe
 
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptxDISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptxNorberto Chacon
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfcucciolosfabrica
 
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNALPOESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNALEvaMaraMorenoLago1
 
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptxSESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptxJustoAlbertoBaltaSmi
 
secuencias de los figuras de cuadros y rectangulos
secuencias de los figuras de cuadros y rectangulossecuencias de los figuras de cuadros y rectangulos
secuencias de los figuras de cuadros y rectangulosRosarioLloglla
 
Espacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesEspacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesespejosflorida
 
Introduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptxIntroduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptxcalc5597
 
Arquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfArquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfLeonardoDantasRivas
 
GRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosGRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosCristianGmez22034
 
cabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadanacabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadanaMarsielMendoza1
 
Afiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezAfiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezPaola575380
 
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docxPLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docxLeo Florez
 

Kürzlich hochgeladen (20)

Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30
 
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYPLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
 
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfINICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
 
Anexo Nivel 3 Ficha Lectura pptjsbdkks
Anexo  Nivel 3 Ficha  Lectura pptjsbdkksAnexo  Nivel 3 Ficha  Lectura pptjsbdkks
Anexo Nivel 3 Ficha Lectura pptjsbdkks
 
140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.doc140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.doc
 
Fundamentos de la Ergonomía y sus características principales
Fundamentos de la Ergonomía y sus características principalesFundamentos de la Ergonomía y sus características principales
Fundamentos de la Ergonomía y sus características principales
 
Slaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdfSlaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdf
 
Planificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.docPlanificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.doc
 
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptxDISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdf
 
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNALPOESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
 
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptxSESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
 
secuencias de los figuras de cuadros y rectangulos
secuencias de los figuras de cuadros y rectangulossecuencias de los figuras de cuadros y rectangulos
secuencias de los figuras de cuadros y rectangulos
 
Espacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesEspacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientes
 
Introduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptxIntroduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptx
 
Arquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfArquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdf
 
GRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosGRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivos
 
cabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadanacabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadana
 
Afiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezAfiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola Perez
 
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docxPLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
 

CSS, planeando para el futuro