SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
@rlucha
Arquitectura front-end CSS
para proyectos a gran escala
¿Qué es un proyecto a gran escala?
Media o larga duración / Requisitos indefinidos / Recursos indefinidos
Cambiar el enfoque
Facilidad de mantenimiento
Absorber nuevos requisitos minimizando el impacto
Incorporar nuevos recursos al equipo lo más rápidamente posible
Modularización
Separar un gran proyecto en pequeñas partes discretas
Independencia de las partes / encapsulamiento
Reutilización de código / DRY
... similar a la programación OO
OOCSS
Un objeto CSS es una estructura repetitiva independiente del contexto
Principio de responsabilidad única
Principio open/closed (fácil de extender, difícil de modificar)
SMACSS
Módulo
Componente
Submódulo
Guía de prácticas
Jerarquía por capas
Es una metodología
Elimina la especificidad
BEM
Bloque
Elemento
Modificador
Colisión de especificidad
La cascada tiene muchísima potencia pero es difícil de controlar
Una colisión afecta a partes dispares del proyecto
Ejemplo
<div class=”contentHolder”>
<ul class=”movieList”>
<li> Item 1</li>
<li> Item 2</li>
<li class=”fav”> Item 3</li>
<li> Item 4</li>
</ul>
</div>
...
<span class=”fav”>
Añadir a favoritos
</span>
· item 1
· item 2
· item 3
· item 4
Añadir a favoritos
.contentHolder .movieList li {
font-size: 10pt;
}
.movieList .fav {
font-weight: 600;
color: #F00;
font-size: 12pt;
}
.fav {
font-size: 14pt;
color: #0F0;
text-decoration: underline;
}
Consecuencias inesperadas
BEM
Bloque
movieList
- --Elemento
item
Modificador
fav
<div class=”contentholder”>
<ul class=”movieList”>
<li class=”movieList-item”> Item 1</li>
<li class=”movieList-item”> Item 2</li>
<li class=”movieList-item movieList-item--fav”> Item 3</li>
<li class=”movieList-item”> Item 4</li>
</ul>
</div>
...
<span class=”fav”>
Añadir a favoritos
</span>
.movieList-item {
font-size: 10pt;
}
.movieList-item--fav {
font-weight: 600;
color: #F00;
font-size: 12pt;
}
.fav {
font-size: 14pt;
color: #0F0;
text-decoration: underline;
}
BEM es modular y pseudoespecífico
Creando namespaces locales por módulo/bloque solucionamos los dos
principales problemas de un proyecto a gran escala.
Identificación de las partes y control de la especificidad.
BEM + SASS
Podemos utilizar la sintaxis BEM con la
anidación de SASS utilizando el operador “&”
en conjunción con la directiva @at-root
· & es una referencia al contexto superior
· #{&} interpola el nombre del contexto
· @at-root crea la regla en el root del
documento compilado sin tener en cuenta el
nesting
.movieList {
@at-root #{&}-item {
font-size: 10pt;
@at-root #{&}--fav {
font-weight: 600;
color: #F00;
font-size: 12pt;
}
}
}
BEM + SASS
&
referencia al
contexto superior
#{&}
interpolación
a string
@at-root
añade la regla al
root sin nesting
Mixins
El uso de mixins abstrae la necesidad de
conocer la nomenclatura exacta en SASS
Permite a gente que no conoce SASS extender
el proyecto sin curva de aprendizaje
Reduce los errores de sintaxis
No usamos selectores CSS
@include block(movieList) {
@include element(item) {
font-size: 10pt;
@include modifier(fav) {
font-weight: 600;
color: #F00;
font-size: 12pt;
}
}
}
Herencia (aka Submódulos)
Al controlar con SASS cómo se interpolan
los nombres de clase podemos controlar
el contexto en el que se crean las
propiedades.
El mixin extendBlock crea la clase
.movieList--horizontal .movieList-item
y le aplica inline-block manteniendo el
resto de propiedades intactas. Con esta
sobrecarga tenemos un control total de la
especificidad.
@include block(movieList) {
@include element(item) {
font-size: 10pt;
@include modifier(fav) {
...
}
}
}
@include extendBlock(movieList,horizontal) {
@include element(item) {
display: inline-block;
}
}
.movieList--horizontal .movieList-item
BEM.scss
$extend: false;
$blockExtended: "";
@mixin block($name) {
@at-root .#{$name} {
@content;
}
}
@mixin modifier($name) {
@at-root #{&}--#{$name} {
@content;
}
}
@mixin element($name) {
@if $extend == true {
@at-root #{&} .#{$blockExtended}-#{$name} {
@content;
}
}
@else {
@at-root #{&}-#{$name} {
@content;
}
}
}
@mixin extendBlock($blockExtended,$name) {
$extend: true !global;
$blockExtended: $blockExtended !global;
@at-root .#{$blockExtended}--#{$name} {
@content;
}
$extend: false !global;
}
BEM dentro del proyecto
Un archivo scss por bloque
Un archivo template por bloque
Los bloques son específicos del proyecto
/public
/css
/scss/
/vendor
/framework
_base.scss
_variables.scss
_app.scss
/blocks
_movieList.scss
_topNavigation.scss
...
/partials/
movieList.hbs
Combinando FMWs
Hacer la transición de frameworks de
soluciones a frameworks de componentes.
Ofrecen componentes abstraídos de
presentación con los que podemos dotar a
nuestros bloques de funcionalidades comunes.
· inuit.css
· suit.css
/public
/css
/scss/
/vendor
/framework
_base.scss
_variables.scss
_app.scss
/blocks
_movieList.scss
_topNavigation.scss
...
/partials/
movieList.hbs
inuit.css
GRID responsive
Headers
Sprites
Buttons
Lists
Media Object
Pagination
...
Usando la directiva @extend podemos extender la funcionalidad de nuestros
bloques con las abstracciones del framework de componentes
Reutilizamos abstracciones comunes a todos los proyectos
Extendiendo el proyecto
@extend %placeholders
@include block(movieList) {
@extend %framework-blockList;
@include element(item) {
@extend %framework-blockList-item;
font-size: 10pt;
@include modifier(fav) {
font-weight: 600;
color: #F00;
font-size: 12pt;
}
}
}
%framework-blockList {
margin: 0;
padding: 0;
list-style: none;
}
%framework-blockList-item {
padding: $fmw-block-list-padding;
}
open/close por capas
Scaffolding ( normalize.css, animate.css, ... )
Theme ( pink.scss, ocean.scss, ... )
Blocks ( movieLIst.scss, mainMenu.scss, ... )
@extend
override
@import
Framework ( inuit.scss, suit.scss, ... )
Resumen
separar en módulos / identificarlos / encapsularlos / reutilizarlos
scaffolding / extender FMW / integrar módulos / customizar temas
Y después...
Testing
.movieList-item {
@extend %error;
}
.movieList .movieList-item {
@extend %success;
}
Partir de un estado de error que sólo se
resuelve si se usa en el contexto apropiado
Inyectar CSS desde el navegador con
extensiones
Generadores estáticos
Assemble / Jekyll / DocPad
En el futuro...
Preprocesadores customizables
Interpolaciones arbitrarias de selectores
Nuevas reglas y relaciones
ReWork
Shadow DOM
Directivas
@rlucha
¡Muchas gracias!

Más contenido relacionado

La actualidad más candente

Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
 
Diagramas de uml generacion de codigos
Diagramas de uml generacion de codigosDiagramas de uml generacion de codigos
Diagramas de uml generacion de codigosJesus Rodriguez
 
Introduction to css
Introduction to cssIntroduction to css
Introduction to csseShikshak
 
Listado de etiquetas y atributos html
Listado de etiquetas y atributos htmlListado de etiquetas y atributos html
Listado de etiquetas y atributos htmljulyovalle
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기Taegon Kim
 
ASP.NET 07 - Site Navigation
ASP.NET 07 - Site NavigationASP.NET 07 - Site Navigation
ASP.NET 07 - Site NavigationRandy Connolly
 
Web Components
Web ComponentsWeb Components
Web ComponentsFITC
 
Cascading style sheet
Cascading style sheetCascading style sheet
Cascading style sheetMichael Jhon
 
BEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyBEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyVarya Stepanova
 
Tutorial de DTD en PDF
Tutorial de DTD en PDFTutorial de DTD en PDF
Tutorial de DTD en PDFAbrirllave
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5IT Geeks
 

La actualidad más candente (20)

Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
Css
CssCss
Css
 
Diagramas de uml generacion de codigos
Diagramas de uml generacion de codigosDiagramas de uml generacion de codigos
Diagramas de uml generacion de codigos
 
Introduction to css
Introduction to cssIntroduction to css
Introduction to css
 
Advanced Cascading Style Sheets
Advanced Cascading Style SheetsAdvanced Cascading Style Sheets
Advanced Cascading Style Sheets
 
Listado de etiquetas y atributos html
Listado de etiquetas y atributos htmlListado de etiquetas y atributos html
Listado de etiquetas y atributos html
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
 
ASP.NET 07 - Site Navigation
ASP.NET 07 - Site NavigationASP.NET 07 - Site Navigation
ASP.NET 07 - Site Navigation
 
Web Components
Web ComponentsWeb Components
Web Components
 
CSS
CSSCSS
CSS
 
BasicHTML
BasicHTMLBasicHTML
BasicHTML
 
Curso html
Curso   htmlCurso   html
Curso html
 
Cascading style sheet
Cascading style sheetCascading style sheet
Cascading style sheet
 
Uml java
Uml javaUml java
Uml java
 
BEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyBEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodology
 
Tutorial de DTD en PDF
Tutorial de DTD en PDFTutorial de DTD en PDF
Tutorial de DTD en PDF
 
Introducing Cascading Style Sheets
Introducing Cascading Style SheetsIntroducing Cascading Style Sheets
Introducing Cascading Style Sheets
 
html5.ppt
html5.ppthtml5.ppt
html5.ppt
 
Css to-scss
Css to-scssCss to-scss
Css to-scss
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 

Destacado

CSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y ModularCSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y Modularrodboc
 
Smacss. Organizando css
Smacss. Organizando cssSmacss. Organizando css
Smacss. Organizando cssMedio y forma
 
Cómo dejar de preocuparse y amar Angular
Cómo dejar de preocuparse y amar AngularCómo dejar de preocuparse y amar Angular
Cómo dejar de preocuparse y amar AngularRoberto Lucha Sedeño
 
Haml y Sass: HTML y CSS dietéticos
Haml y Sass: HTML y CSS dietéticosHaml y Sass: HTML y CSS dietéticos
Haml y Sass: HTML y CSS dietéticosDAVID GRILLI
 
Front-end Basics for Developers
Front-end Basics for DevelopersFront-end Basics for Developers
Front-end Basics for DevelopersNadal Soler
 
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZUBOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZUJUAN CONTRERAS CACERES
 
Descripción general de uningeniero
Descripción general de uningenieroDescripción general de uningeniero
Descripción general de uningenieroluferova
 
Fósiles (3) (1) (1) gghjkkjnmjmkkl
Fósiles (3) (1) (1) gghjkkjnmjmkklFósiles (3) (1) (1) gghjkkjnmjmkkl
Fósiles (3) (1) (1) gghjkkjnmjmkklpuuppii
 
02 institucionalidad politica ii
02 institucionalidad politica ii02 institucionalidad politica ii
02 institucionalidad politica iiPSUHistoriacachs
 
Presentacion eres workaholic y no lo sabes
Presentacion eres workaholic y no lo sabesPresentacion eres workaholic y no lo sabes
Presentacion eres workaholic y no lo sabesAntonRoMX
 
Proyectos de legislación consejo de legislación de 2016- de rotary internati...
Proyectos de legislación  consejo de legislación de 2016- de rotary internati...Proyectos de legislación  consejo de legislación de 2016- de rotary internati...
Proyectos de legislación consejo de legislación de 2016- de rotary internati...JUAN CONTRERAS CACERES
 
portafolio de tecnologia y trabajo
portafolio de tecnologia y trabajoportafolio de tecnologia y trabajo
portafolio de tecnologia y trabajoluferova
 
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZUBOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZUJUAN CONTRERAS CACERES
 
Suicidio
Suicidio Suicidio
Suicidio Jesbaan
 
Que es colombia en la actualidad!
Que es colombia en la actualidad!Que es colombia en la actualidad!
Que es colombia en la actualidad!Alejandroyanquen
 

Destacado (20)

CSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y ModularCSS - Arquitectura Escalable y Modular
CSS - Arquitectura Escalable y Modular
 
Smacss. Organizando css
Smacss. Organizando cssSmacss. Organizando css
Smacss. Organizando css
 
Arquitetura CSS - SMACSS + OOCS + BEM
Arquitetura CSS - SMACSS + OOCS + BEMArquitetura CSS - SMACSS + OOCS + BEM
Arquitetura CSS - SMACSS + OOCS + BEM
 
Cómo dejar de preocuparse y amar Angular
Cómo dejar de preocuparse y amar AngularCómo dejar de preocuparse y amar Angular
Cómo dejar de preocuparse y amar Angular
 
Haml y Sass: HTML y CSS dietéticos
Haml y Sass: HTML y CSS dietéticosHaml y Sass: HTML y CSS dietéticos
Haml y Sass: HTML y CSS dietéticos
 
Front-end Basics for Developers
Front-end Basics for DevelopersFront-end Basics for Developers
Front-end Basics for Developers
 
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZUBOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
 
Descripción general de uningeniero
Descripción general de uningenieroDescripción general de uningeniero
Descripción general de uningeniero
 
Fósiles (3) (1) (1) gghjkkjnmjmkkl
Fósiles (3) (1) (1) gghjkkjnmjmkklFósiles (3) (1) (1) gghjkkjnmjmkkl
Fósiles (3) (1) (1) gghjkkjnmjmkkl
 
02 institucionalidad politica ii
02 institucionalidad politica ii02 institucionalidad politica ii
02 institucionalidad politica ii
 
Prueba pisa
Prueba pisaPrueba pisa
Prueba pisa
 
globalizacion
globalizacion globalizacion
globalizacion
 
Presentacion eres workaholic y no lo sabes
Presentacion eres workaholic y no lo sabesPresentacion eres workaholic y no lo sabes
Presentacion eres workaholic y no lo sabes
 
Proyectos de legislación consejo de legislación de 2016- de rotary internati...
Proyectos de legislación  consejo de legislación de 2016- de rotary internati...Proyectos de legislación  consejo de legislación de 2016- de rotary internati...
Proyectos de legislación consejo de legislación de 2016- de rotary internati...
 
Paola Dutra T2
Paola Dutra T2 Paola Dutra T2
Paola Dutra T2
 
portafolio de tecnologia y trabajo
portafolio de tecnologia y trabajoportafolio de tecnologia y trabajo
portafolio de tecnologia y trabajo
 
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZUBOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
BOLETIN N* 02 SOBRE INSTITUTO DE FOZ IGUAZU
 
Transformadores
TransformadoresTransformadores
Transformadores
 
Suicidio
Suicidio Suicidio
Suicidio
 
Que es colombia en la actualidad!
Que es colombia en la actualidad!Que es colombia en la actualidad!
Que es colombia en la actualidad!
 

Similar a Arquitectura frontend con BEM y SASS

4505.07 estilos usando master pages y css
4505.07   estilos usando master pages y css4505.07   estilos usando master pages y css
4505.07 estilos usando master pages y cssCarlos Muñoz C.
 
Pre-procesadores CSS. SASS
Pre-procesadores CSS. SASSPre-procesadores CSS. SASS
Pre-procesadores CSS. SASSMarionaCruz
 
Presentacióin tema 6
Presentacióin tema 6Presentacióin tema 6
Presentacióin tema 6Diana Mabel
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - SassNadal Soler
 
Curso mysql modificado
Curso mysql modificadoCurso mysql modificado
Curso mysql modificadoYusef Yamel
 
OOCSS - Versión anotada - @janogarcia
OOCSS - Versión anotada - @janogarciaOOCSS - Versión anotada - @janogarcia
OOCSS - Versión anotada - @janogarciaJano Garcia
 
Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)
Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)
Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)gdgsantacruz
 
DEBER HOJA DE ESTILO (CSS) blog blogger blogspot
DEBER HOJA DE ESTILO (CSS) blog blogger blogspotDEBER HOJA DE ESTILO (CSS) blog blogger blogspot
DEBER HOJA DE ESTILO (CSS) blog blogger blogspotLISSYCE
 
Framework de programacion de paginas web
Framework de programacion de paginas webFramework de programacion de paginas web
Framework de programacion de paginas webGeraldyn De Sousa
 
Presentación-HTML5-okkk.pdf
Presentación-HTML5-okkk.pdfPresentación-HTML5-okkk.pdf
Presentación-HTML5-okkk.pdfDrakoSK
 
Css: bases y buenas prácticas
Css: bases y buenas prácticasCss: bases y buenas prácticas
Css: bases y buenas prácticasferwalker
 
Estilos CSS en React.pdf
Estilos CSS en React.pdfEstilos CSS en React.pdf
Estilos CSS en React.pdfMarianaTapia43
 
Diapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netDiapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netTAPIA SILVA EVELINA
 

Similar a Arquitectura frontend con BEM y SASS (20)

4505.07 estilos usando master pages y css
4505.07   estilos usando master pages y css4505.07   estilos usando master pages y css
4505.07 estilos usando master pages y css
 
Pre-procesadores CSS. SASS
Pre-procesadores CSS. SASSPre-procesadores CSS. SASS
Pre-procesadores CSS. SASS
 
Bootstrap, un framework CSS
Bootstrap, un framework CSSBootstrap, un framework CSS
Bootstrap, un framework CSS
 
Presentacióin tema 6
Presentacióin tema 6Presentacióin tema 6
Presentacióin tema 6
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - Sass
 
Hojas de estilo css
Hojas de estilo cssHojas de estilo css
Hojas de estilo css
 
Presentación1
Presentación1Presentación1
Presentación1
 
curso_mysql.pdf
curso_mysql.pdfcurso_mysql.pdf
curso_mysql.pdf
 
Curso mysql modificado
Curso mysql modificadoCurso mysql modificado
Curso mysql modificado
 
OOCSS - Versión anotada - @janogarcia
OOCSS - Versión anotada - @janogarciaOOCSS - Versión anotada - @janogarcia
OOCSS - Versión anotada - @janogarcia
 
Hojas de Estilo en Cascada - CSS
Hojas de Estilo en Cascada - CSSHojas de Estilo en Cascada - CSS
Hojas de Estilo en Cascada - CSS
 
Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)
Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)
Keep calm and write CSS with Flexbox - Luz Maria Maida Claure (WTM - GDG - CBBA)
 
CSS
CSSCSS
CSS
 
DEBER HOJA DE ESTILO (CSS) blog blogger blogspot
DEBER HOJA DE ESTILO (CSS) blog blogger blogspotDEBER HOJA DE ESTILO (CSS) blog blogger blogspot
DEBER HOJA DE ESTILO (CSS) blog blogger blogspot
 
Framework de programacion de paginas web
Framework de programacion de paginas webFramework de programacion de paginas web
Framework de programacion de paginas web
 
Presentación-HTML5-okkk.pdf
Presentación-HTML5-okkk.pdfPresentación-HTML5-okkk.pdf
Presentación-HTML5-okkk.pdf
 
Css: bases y buenas prácticas
Css: bases y buenas prácticasCss: bases y buenas prácticas
Css: bases y buenas prácticas
 
CSS
CSSCSS
CSS
 
Estilos CSS en React.pdf
Estilos CSS en React.pdfEstilos CSS en React.pdf
Estilos CSS en React.pdf
 
Diapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netDiapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.net
 

Último

Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura ModernaLe Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Modernasofpaolpz
 
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...MayerlyAscanioNavarr
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Roheimariagsg
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfBrbara57940
 
Arquitectura Moderna Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna  Walter Gropius- Frank Lloyd WrightArquitectura Moderna  Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna Walter Gropius- Frank Lloyd Wrightimariagsg
 
Normas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratisNormas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratisbrasilyamile
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoJorge Fernandez
 
TIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánicoTIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánicoWilsonChambi4
 
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYOPDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYOManuelBustamante49
 
Presentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxPresentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxbarbaracantuflr
 
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdfCERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdfasnsdt
 
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdfclase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdfFABIOANDRESPALLARESP
 
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdfcnaomi195
 
Brochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfBrochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfhellotunahaus
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHEgonzalezdfidelibus
 
Arquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezArquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezNaza59
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroJuan Carlos Fonseca Mata
 
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
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfslaimenbarakat
 

Último (20)

Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura ModernaLe Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
 
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
 
Arquitectura Moderna Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna  Walter Gropius- Frank Lloyd WrightArquitectura Moderna  Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna Walter Gropius- Frank Lloyd Wright
 
Normas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratisNormas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratis
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimiento
 
TIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánicoTIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánico
 
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYOPDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
PDU - PLAN DE DESARROLLO URBANO DE LA CIUDAD DE CHICLAYO
 
Presentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxPresentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptx
 
Arte textil: Tejidos artesanos en la frontera hispano-lusa
Arte textil: Tejidos artesanos en la frontera hispano-lusaArte textil: Tejidos artesanos en la frontera hispano-lusa
Arte textil: Tejidos artesanos en la frontera hispano-lusa
 
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdfCERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
 
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdfclase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
 
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
 
Brochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfBrochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdf
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
 
Arquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezArquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth Bermúdez
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de Querétaro
 
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
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
 

Arquitectura frontend con BEM y SASS

  • 1. @rlucha Arquitectura front-end CSS para proyectos a gran escala
  • 2. ¿Qué es un proyecto a gran escala? Media o larga duración / Requisitos indefinidos / Recursos indefinidos
  • 3. Cambiar el enfoque Facilidad de mantenimiento Absorber nuevos requisitos minimizando el impacto Incorporar nuevos recursos al equipo lo más rápidamente posible
  • 4. Modularización Separar un gran proyecto en pequeñas partes discretas Independencia de las partes / encapsulamiento Reutilización de código / DRY ... similar a la programación OO
  • 5. OOCSS Un objeto CSS es una estructura repetitiva independiente del contexto Principio de responsabilidad única Principio open/closed (fácil de extender, difícil de modificar)
  • 6. SMACSS Módulo Componente Submódulo Guía de prácticas Jerarquía por capas Es una metodología Elimina la especificidad BEM Bloque Elemento Modificador
  • 7. Colisión de especificidad La cascada tiene muchísima potencia pero es difícil de controlar Una colisión afecta a partes dispares del proyecto
  • 8. Ejemplo <div class=”contentHolder”> <ul class=”movieList”> <li> Item 1</li> <li> Item 2</li> <li class=”fav”> Item 3</li> <li> Item 4</li> </ul> </div> ... <span class=”fav”> Añadir a favoritos </span> · item 1 · item 2 · item 3 · item 4 Añadir a favoritos .contentHolder .movieList li { font-size: 10pt; } .movieList .fav { font-weight: 600; color: #F00; font-size: 12pt; } .fav { font-size: 14pt; color: #0F0; text-decoration: underline; } Consecuencias inesperadas
  • 9. BEM Bloque movieList - --Elemento item Modificador fav <div class=”contentholder”> <ul class=”movieList”> <li class=”movieList-item”> Item 1</li> <li class=”movieList-item”> Item 2</li> <li class=”movieList-item movieList-item--fav”> Item 3</li> <li class=”movieList-item”> Item 4</li> </ul> </div> ... <span class=”fav”> Añadir a favoritos </span> .movieList-item { font-size: 10pt; } .movieList-item--fav { font-weight: 600; color: #F00; font-size: 12pt; } .fav { font-size: 14pt; color: #0F0; text-decoration: underline; }
  • 10. BEM es modular y pseudoespecífico Creando namespaces locales por módulo/bloque solucionamos los dos principales problemas de un proyecto a gran escala. Identificación de las partes y control de la especificidad.
  • 11. BEM + SASS Podemos utilizar la sintaxis BEM con la anidación de SASS utilizando el operador “&” en conjunción con la directiva @at-root · & es una referencia al contexto superior · #{&} interpola el nombre del contexto · @at-root crea la regla en el root del documento compilado sin tener en cuenta el nesting .movieList { @at-root #{&}-item { font-size: 10pt; @at-root #{&}--fav { font-weight: 600; color: #F00; font-size: 12pt; } } }
  • 12. BEM + SASS & referencia al contexto superior #{&} interpolación a string @at-root añade la regla al root sin nesting
  • 13. Mixins El uso de mixins abstrae la necesidad de conocer la nomenclatura exacta en SASS Permite a gente que no conoce SASS extender el proyecto sin curva de aprendizaje Reduce los errores de sintaxis No usamos selectores CSS @include block(movieList) { @include element(item) { font-size: 10pt; @include modifier(fav) { font-weight: 600; color: #F00; font-size: 12pt; } } }
  • 14. Herencia (aka Submódulos) Al controlar con SASS cómo se interpolan los nombres de clase podemos controlar el contexto en el que se crean las propiedades. El mixin extendBlock crea la clase .movieList--horizontal .movieList-item y le aplica inline-block manteniendo el resto de propiedades intactas. Con esta sobrecarga tenemos un control total de la especificidad. @include block(movieList) { @include element(item) { font-size: 10pt; @include modifier(fav) { ... } } } @include extendBlock(movieList,horizontal) { @include element(item) { display: inline-block; } } .movieList--horizontal .movieList-item
  • 15. BEM.scss $extend: false; $blockExtended: ""; @mixin block($name) { @at-root .#{$name} { @content; } } @mixin modifier($name) { @at-root #{&}--#{$name} { @content; } } @mixin element($name) { @if $extend == true { @at-root #{&} .#{$blockExtended}-#{$name} { @content; } } @else { @at-root #{&}-#{$name} { @content; } } } @mixin extendBlock($blockExtended,$name) { $extend: true !global; $blockExtended: $blockExtended !global; @at-root .#{$blockExtended}--#{$name} { @content; } $extend: false !global; }
  • 16. BEM dentro del proyecto Un archivo scss por bloque Un archivo template por bloque Los bloques son específicos del proyecto /public /css /scss/ /vendor /framework _base.scss _variables.scss _app.scss /blocks _movieList.scss _topNavigation.scss ... /partials/ movieList.hbs
  • 17. Combinando FMWs Hacer la transición de frameworks de soluciones a frameworks de componentes. Ofrecen componentes abstraídos de presentación con los que podemos dotar a nuestros bloques de funcionalidades comunes. · inuit.css · suit.css /public /css /scss/ /vendor /framework _base.scss _variables.scss _app.scss /blocks _movieList.scss _topNavigation.scss ... /partials/ movieList.hbs
  • 19. Usando la directiva @extend podemos extender la funcionalidad de nuestros bloques con las abstracciones del framework de componentes Reutilizamos abstracciones comunes a todos los proyectos Extendiendo el proyecto
  • 20. @extend %placeholders @include block(movieList) { @extend %framework-blockList; @include element(item) { @extend %framework-blockList-item; font-size: 10pt; @include modifier(fav) { font-weight: 600; color: #F00; font-size: 12pt; } } } %framework-blockList { margin: 0; padding: 0; list-style: none; } %framework-blockList-item { padding: $fmw-block-list-padding; }
  • 21. open/close por capas Scaffolding ( normalize.css, animate.css, ... ) Theme ( pink.scss, ocean.scss, ... ) Blocks ( movieLIst.scss, mainMenu.scss, ... ) @extend override @import Framework ( inuit.scss, suit.scss, ... )
  • 22. Resumen separar en módulos / identificarlos / encapsularlos / reutilizarlos scaffolding / extender FMW / integrar módulos / customizar temas Y después...
  • 23. Testing .movieList-item { @extend %error; } .movieList .movieList-item { @extend %success; } Partir de un estado de error que sólo se resuelve si se usa en el contexto apropiado Inyectar CSS desde el navegador con extensiones
  • 25. En el futuro... Preprocesadores customizables Interpolaciones arbitrarias de selectores Nuevas reglas y relaciones ReWork Shadow DOM Directivas