Construindo uma experiência agradável na Web desde o começo com

progressive enhancement

Luiz Corte Real

(aperte a barra de espaço para continuar)
Minha foto

Sobre mim

Desenvolvedor na TecSinapse

Instrutor no Alura

Capa do livro Coletânea Front-end

Um dos autores do livro

Capítulo sobre progressive enhancement

Slide inicial da apresentação que dei sobre Progressive Enhancement no Front in POA ano passado

Palestra ano passado

Primeiro, um pouco de contexto

Diversidade

Dispositivos

Pessoas

Situações

Como atender todos esses cenários?

Workarounds

(que nem sempre dão certo)

Graceful degradation

A ideia é boa, mas...

Frustração

Becos sem saída

Com JS

Sem JS

Então...

Comofas?

Progressive enhancement

Começar pelo limitado e funcional

Garantir acesso ao conteúdo básico

HTML semântico


Título

Parágrafo com link

HTML ♥ progressive enhancement



						


						

Demo

(por Scott Jehl)

Inclusive para webapps!

Demo

(projeto demonstração, versão 1)

CSS e JavaScript devem ser vistos como recursos adicionais

Melhorando o visual

Começando pelo mais simples

CSS ♥ progressive enhancement


li:nth-child(odd) {
	background: url(img.png) no-repeat center;
	background: url(img.svg) no-repeat center/100% auto;
}
						

Mobile first

Mobile first ♥
progressive enhancement


.container {
	width: 1000px;
	margin: auto;
}
@media (max-width: 1000px) {
	.container {
		width: 98%;
	}
}
						
versus

.container {
	width: 98%;
	margin: auto;
	max-width: 1000px;
}
						

Demo

(projeto demonstração, versão 2 - apenas mobile)

(projeto demonstração, versão 3 - desktop)

Mobile first ♥
progressive enhancement²

Ícone do hamburguer

Mobile first ♥
progressive enhancement²

Menu mobile bacana

Melhorando a interação

Começando pelo IE 6 mais simples

JavaScript não obstrutivo

Se depende de JS, faz com JS

Demo

(projeto demonstração, versão 4 - player incrementado)

Feature detection

Em vez de browser detection

Demo

(projeto demonstração, versão 5 - WebGL)

JS ♥ AJAX

AJAX 💔 offline

Offline first ♥
progressive enhancement

Mais limitado: internet móvel no metrô

Demo

(projeto demonstração, versão 6 - playlist AJAX)

Progressive enhancement:
por quê?

  • Mais robusto
  • Maior abrangência desde o começo
  • Foco no conteúdo
  • Código mais simples

Progressive enhancement:
quando?

  • Sites
  • Apps internas
  • Web apps
  • Progressive web apps
(era mais fácil ter falado quando não usar)

Contras

Obrigado!

Luiz Corte Real

@srsaude

Projeto de exemplo

Palestra sobre o tema em 2014: vídeo / slides