progressive enhancement – Sobre mim – Primeiro, um pouco de contexto



progressive enhancement – Sobre mim – Primeiro, um pouco de contexto

0 0


webbr-2015

Slides da palestra sobre progressive enhancement apresentada na conferência web.br 2015

On Github luiz / webbr-2015

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)

Sobre mim

Desenvolvedor na TecSinapse

Instrutor no Alura

Um dos autores do livro

Capítulo sobre progressive enhancement

Palestra ano passado

Primeiro, um pouco de contexto

Diversidade

Navegadores

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

<article>
	<h1>Título</h1>
	<p>Parágrafo com
		<a href="outra-pagina.html">link</a>
	</p>
</article>

HTML ♥ progressive enhancement

<input type="data" required="">
<audio>
	<source src="audio.mp3" type="audio/mp3">
	<source src="audio.ogg" type="audio/ogg">
	Conteúdo alternativo para quem não tem suporte
</audio>

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²

Mobile first ♥progressive enhancement²

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

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)