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

サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみたサーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみたryutakatori
 
Bootstrap 5 whats new
Bootstrap 5   whats newBootstrap 5   whats new
Bootstrap 5 whats newSandun Perera
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebAnderson Luís Furlan
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스Arawn Park
 
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안Amazon Web Services Korea
 
On Display: A Practical Overview of the CSS Display Property
On Display: A Practical Overview of the CSS Display PropertyOn Display: A Practical Overview of the CSS Display Property
On Display: A Practical Overview of the CSS Display PropertySteve Blaurock
 
DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020
DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020Amazon Web Services Korea
 
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법Amazon Web Services Korea
 
AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략
AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략
AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략Amazon Web Services Korea
 
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発真吾 吉田
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축I Goo Lee
 
AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법
AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법
AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법Amazon Web Services Korea
 
성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro
성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro
성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 IntroAmazon Web Services Korea
 
CSS Flexbox (flexible box layout)
CSS Flexbox (flexible box layout)CSS Flexbox (flexible box layout)
CSS Flexbox (flexible box layout)Woodridge Software
 
AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...
AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...
AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...Amazon Web Services Korea
 
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 Amazon Web Services Korea
 
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront Amazon Web Services Japan
 

La actualidad más candente (20)

サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみたサーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみた
 
Bootstrap 5 whats new
Bootstrap 5   whats newBootstrap 5   whats new
Bootstrap 5 whats new
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento Web
 
SASS - CSS with Superpower
SASS - CSS with SuperpowerSASS - CSS with Superpower
SASS - CSS with Superpower
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
 
On Display: A Practical Overview of the CSS Display Property
On Display: A Practical Overview of the CSS Display PropertyOn Display: A Practical Overview of the CSS Display Property
On Display: A Practical Overview of the CSS Display Property
 
DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020
DynamoDB를 게임에서 사용하기 – 김성수, 박경표, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
 
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
 
AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략
AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략
AWS Summit Seoul 2023 | AWS 마이그레이션을 통한 엔카닷컴의 DT 전략
 
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
 
Crear desde cero una Web con Wordpress
Crear desde cero una Web con WordpressCrear desde cero una Web con Wordpress
Crear desde cero una Web con Wordpress
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축
 
AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법
AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법
AWS Summit Seoul 2023 | 갤럭시 규모의 서비스를 위한 Amazon DynamoDB의 역할과 비용 최적화 방법
 
Redis
RedisRedis
Redis
 
성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro
성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro
성공적인 AWS Cloud 마이그레이션 전략 및 사례 - 방희란 매니저:: AWS Cloud Track 1 Intro
 
CSS Flexbox (flexible box layout)
CSS Flexbox (flexible box layout)CSS Flexbox (flexible box layout)
CSS Flexbox (flexible box layout)
 
AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...
AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...
AWS Summit Seoul 2023 | AWS의 개발자를 위한 신규 서비스 소개 Amazon CodeCatalyst & Amazon C...
 
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
 
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
 

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

Anexo Nivel 3 Ficha Lectura pptjsbdkks
Anexo  Nivel 3 Ficha  Lectura pptjsbdkksAnexo  Nivel 3 Ficha  Lectura pptjsbdkks
Anexo Nivel 3 Ficha Lectura pptjsbdkkscristinacastro892534
 
Afiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezAfiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezPaola575380
 
La Bauhaus y la nueva tipografía en el diseño gráfico
La Bauhaus y la nueva tipografía en el diseño gráficoLa Bauhaus y la nueva tipografía en el diseño gráfico
La Bauhaus y la nueva tipografía en el diseño gráficoCristianLobo10
 
Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30SantiagoAgudelo47
 
Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...
Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...
Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...chechei12040303
 
Tríptico-en-homenaje-por-el-día-de-la-madre.pdf
Tríptico-en-homenaje-por-el-día-de-la-madre.pdfTríptico-en-homenaje-por-el-día-de-la-madre.pdf
Tríptico-en-homenaje-por-el-día-de-la-madre.pdfPowerRayo
 
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
 
CLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdf
CLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdfCLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdf
CLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdfDanielaPrezMartnez3
 
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
 
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
 
ATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptx
ATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptxATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptx
ATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptxEdisonCondesoDelgado1
 
CATALOGO 2024 DIA DE LA MADRE, presentación.pdf
CATALOGO 2024 DIA DE LA MADRE, presentación.pdfCATALOGO 2024 DIA DE LA MADRE, presentación.pdf
CATALOGO 2024 DIA DE LA MADRE, presentación.pdftortillasdemaizjf2
 
GRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosGRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosCristianGmez22034
 
Triptico de los derechos humanos pe señorees jaja
Triptico de los derechos humanos pe señorees jajaTriptico de los derechos humanos pe señorees jaja
Triptico de los derechos humanos pe señorees jajadayannanicolzuluetab
 
Torre agbar analisis arquitectonico.....
Torre agbar analisis arquitectonico.....Torre agbar analisis arquitectonico.....
Torre agbar analisis arquitectonico.....estefaniaortizsalina
 
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
 
Slaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdfSlaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdfslaimenbarakat
 
414414508-Diseno-de-Coberturas-Metalicas.pptx
414414508-Diseno-de-Coberturas-Metalicas.pptx414414508-Diseno-de-Coberturas-Metalicas.pptx
414414508-Diseno-de-Coberturas-Metalicas.pptxeldermishti
 
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYPLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYkarendaza9506
 

Último (20)

Anexo Nivel 3 Ficha Lectura pptjsbdkks
Anexo  Nivel 3 Ficha  Lectura pptjsbdkksAnexo  Nivel 3 Ficha  Lectura pptjsbdkks
Anexo Nivel 3 Ficha Lectura pptjsbdkks
 
Afiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola PerezAfiche de arquitectura manierista Paola Perez
Afiche de arquitectura manierista Paola Perez
 
La Bauhaus y la nueva tipografía en el diseño gráfico
La Bauhaus y la nueva tipografía en el diseño gráficoLa Bauhaus y la nueva tipografía en el diseño gráfico
La Bauhaus y la nueva tipografía en el diseño gráfico
 
Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30
 
Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...
Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...
Apuntes de criterios estrcuturales, calculo de trabes y contratrabes de concr...
 
Tríptico-en-homenaje-por-el-día-de-la-madre.pdf
Tríptico-en-homenaje-por-el-día-de-la-madre.pdfTríptico-en-homenaje-por-el-día-de-la-madre.pdf
Tríptico-en-homenaje-por-el-día-de-la-madre.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
 
CLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdf
CLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdfCLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdf
CLASE 2 PSICOTERAPIA COGNITIVO CONDUCTUAL.pdf
 
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
 
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
 
ATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptx
ATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptxATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptx
ATENCION INTEGRAL DEL ADULTO Y ADULTO MAYOR.pptx
 
CATALOGO 2024 DIA DE LA MADRE, presentación.pdf
CATALOGO 2024 DIA DE LA MADRE, presentación.pdfCATALOGO 2024 DIA DE LA MADRE, presentación.pdf
CATALOGO 2024 DIA DE LA MADRE, presentación.pdf
 
GRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosGRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivos
 
Triptico de los derechos humanos pe señorees jaja
Triptico de los derechos humanos pe señorees jajaTriptico de los derechos humanos pe señorees jaja
Triptico de los derechos humanos pe señorees jaja
 
DIAGNOSTICO URBANO DE DE LA ISLA DE COCHE
DIAGNOSTICO URBANO DE DE LA ISLA DE COCHEDIAGNOSTICO URBANO DE DE LA ISLA DE COCHE
DIAGNOSTICO URBANO DE DE LA ISLA DE COCHE
 
Torre agbar analisis arquitectonico.....
Torre agbar analisis arquitectonico.....Torre agbar analisis arquitectonico.....
Torre agbar analisis arquitectonico.....
 
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
 
Slaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdfSlaimen Barakat - SLIDESHARE TAREA 3.pdf
Slaimen Barakat - SLIDESHARE TAREA 3.pdf
 
414414508-Diseno-de-Coberturas-Metalicas.pptx
414414508-Diseno-de-Coberturas-Metalicas.pptx414414508-Diseno-de-Coberturas-Metalicas.pptx
414414508-Diseno-de-Coberturas-Metalicas.pptx
 
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYPLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
 

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