SlideShare una empresa de Scribd logo
Un mejor CSS
Planeando para no sufrir en el futuro.
DrupalCon Latin America - Febrero 2015
Jose Leiva
@leivajd // leivajd.com
2007 web
2010 Drupal
CSS, planeando para el futuro
CSS, planeando para el futuro
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.
CSS, planeando para el futuro
.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
CSS, planeando para el futuro
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
CSS, planeando para el futuro
Evalúa la sesión.
https://latinamerica2015.drupal.org/node/4083

Más contenido relacionado

PDF
HTML5 101 - Drupaleada jun12
PDF
Sass & Compass - DrupalCamp CR13
PDF
Año Nuevo, Herramientas Nuevas
PDF
Intro a Sass
PPT
Hablemos sobre Drupal vs WordPress
PDF
Pruebas de usabilidad, guerrilla style
PDF
No más curva.
PPT
Drupal - prototipos rápidos
HTML5 101 - Drupaleada jun12
Sass & Compass - DrupalCamp CR13
Año Nuevo, Herramientas Nuevas
Intro a Sass
Hablemos sobre Drupal vs WordPress
Pruebas de usabilidad, guerrilla style
No más curva.
Drupal - prototipos rápidos

Similar a CSS, planeando para el futuro (20)

PDF
CSS - Drupal Camp Costa Rica 2016
PDF
Sass: CSS con Superpoderes
PDF
Desarrollo web inteligente
PDF
Front end basics - Sass
PPTX
S2-DAW-2022S1.pptx
PPTX
Css: bases y buenas prácticas
PDF
Manual css-hojas-estilo
PPTX
Sass - Preprocesador de CSS
PDF
Tutorial css
PDF
TUTORIAL CSS
DOC
19 tips para css
PDF
"CSS Preprocessors Time!" por @nahuelsotelo
PPTX
Guía Básica de CSS.pptx
PPTX
Guía Básica de CSS.pptx
PDF
Semana 3 Maquetación CSS
ODP
Curso HTML CSS 4/4
PPTX
Identificacion
PDF
Hojas de Estilo en Cascada - CSS
PDF
CSS - Hojas de Estilo en Cascada.pdf
PDF
guia sintaxis css.pdf
CSS - Drupal Camp Costa Rica 2016
Sass: CSS con Superpoderes
Desarrollo web inteligente
Front end basics - Sass
S2-DAW-2022S1.pptx
Css: bases y buenas prácticas
Manual css-hojas-estilo
Sass - Preprocesador de CSS
Tutorial css
TUTORIAL CSS
19 tips para css
"CSS Preprocessors Time!" por @nahuelsotelo
Guía Básica de CSS.pptx
Guía Básica de CSS.pptx
Semana 3 Maquetación CSS
Curso HTML CSS 4/4
Identificacion
Hojas de Estilo en Cascada - CSS
CSS - Hojas de Estilo en Cascada.pdf
guia sintaxis css.pdf
Publicidad

Último (20)

PPTX
Presentación de resumen del producto.pptx
PDF
Presentación Me gustas San Valentín Creativo Rosa_20250729_111237_0000.pdf
PDF
CATALOGO piratería y decoración para negocio
PDF
Higiene Industrial para la seguridad laboral
PDF
aparato digestivo histologia aparato digestivo.pdf
PPTX
MATBApptxx.mbaarqtqweujjyyffdrtghjujjjjjikbfd
DOCX
EL SENSOR PARA CUIDAR EL MEDIO AMBIENTE.docx
PPTX
tipos de cefalea pptx presentación diapositivas
PPTX
mapa mental sobre la elaboracion del plan analitico sobre la nueva escuela me...
PDF
ANALIS DE SITIO QUEVEDO DE CASAS Y ENTORNOS
PDF
Las leyes de las marcas como aprender a crear marcas impactantes
PDF
Informe del proyecto con todo 14-02-25.pdf
PDF
Gestion d3 procesos kfififoofofkfjdjdjieoeodkjfjfjf
PDF
analisis arquitectonico de la catedral de sevilla
PDF
Documento A4 Página de proyecto con fotos ecología verde.pdf (1).pdf
PPTX
Plantilla Oficial bbvbcvbcvbcvbcvbcvbcbcvbcvb
PDF
Análisis de Comunidad | Seminario Espacio y Hábitat
DOCX
FCE POLITICA tercer grado secundaria adolescentes
DOCX
FCE POLITICa tercer grado secundaria adolescentes
PDF
programa-regular-abril-julio-2025-ii (1).pdf
Presentación de resumen del producto.pptx
Presentación Me gustas San Valentín Creativo Rosa_20250729_111237_0000.pdf
CATALOGO piratería y decoración para negocio
Higiene Industrial para la seguridad laboral
aparato digestivo histologia aparato digestivo.pdf
MATBApptxx.mbaarqtqweujjyyffdrtghjujjjjjikbfd
EL SENSOR PARA CUIDAR EL MEDIO AMBIENTE.docx
tipos de cefalea pptx presentación diapositivas
mapa mental sobre la elaboracion del plan analitico sobre la nueva escuela me...
ANALIS DE SITIO QUEVEDO DE CASAS Y ENTORNOS
Las leyes de las marcas como aprender a crear marcas impactantes
Informe del proyecto con todo 14-02-25.pdf
Gestion d3 procesos kfififoofofkfjdjdjieoeodkjfjfjf
analisis arquitectonico de la catedral de sevilla
Documento A4 Página de proyecto con fotos ecología verde.pdf (1).pdf
Plantilla Oficial bbvbcvbcvbcvbcvbcvbcbcvbcvb
Análisis de Comunidad | Seminario Espacio y Hábitat
FCE POLITICA tercer grado secundaria adolescentes
FCE POLITICa tercer grado secundaria adolescentes
programa-regular-abril-julio-2025-ii (1).pdf
Publicidad

CSS, planeando para el futuro