SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
LAYOUT FLUIDO
Layout Fluido 
• É a grande estrela hoje do Web Design 
Responsivo 
• Com a quantidade de dispositivos que 
renderizam página web hoje, não é possível 
simplesmente copiar medidas diretas do layout 
• O Layout Fluido utiliza medidas flexíveis
Layout Fixo 
• O layout fixo é aquele que utiliza pixels para 
determinar as larguras dos elementos do design 
• Não se adapta às alterações do campo de visão 
do dispositivo que o renderiza
Layout fixo
Layout fixo
Layout Fluido 
• Layouts fluidos utilizam unidades flexíveis (% , em) 
para larguras ao invés de pixels 
• Permite que haja fidelidade do design inicial da 
página 
• Layout se adapta de acordo com o campo de visão 
• Desafio 
• Se desapegar das medidas do projeto inicial
Medidas flexíveis 
• As mais utilizadas 
• % 
• em
Medidas Flexíveis 
• % 
• Utilizado para determinar as larguras dos elementos 
• A porcentagem é em relação ao tamanho do 
elemento pai 
• Pode ser utilizado para fontes 
• Tamanho relativo ao tamanho da fonte do elemento pai
% 
body { 
/* largura total da tela */ 
width: 100%; 
} 
section { 
/* 1/3 da página */ 
width: 33.33333%; 
/* padding de 10% do pai */ 
padding: 10%; 
}
Medidas Flexíveis 
• em 
• Normalmente utilizado para fontes 
• Medida sempre está relacionado à fonte base 
• Um font-size implícito equivale a 16px na maioria dos 
navegadores 
• 1em = 100% 
• 2em = 200%
em 
html { 
/* font-size base implícito equivalente a 16px */ 
} 
p{ 
/* 16px * 1.125 = 18px */ 
font-size: 1.125em; 
} 
h1 { 
/*dobro da fonte base */ 
font-size: 2em; 
} 
h2 { 
/* 50% maior do que o valor base */ 
font-size: 150%; /* 1.5em */ 
}
em 
• Pode ser usado em qualquer propriedade mas 
sempre significar uma relação com o tamanho da 
fonte 
• Útil quando a medida de algum elemento tem 
relação com texto, uma medida tipográfica 
• Ex: Espaçamento entre parágrafos 
p { margin: 0 1em; } 
p { margin: 0 5%; }
Flexibilidade nos elementos 
filhos 
• Vantagem 
• As medidas flexíveis afetam os elementos filhos 
(aninhados) 
• Cenário: 
• Quando o usuário aumenta a fonte no navegador pra 
ler melhor 
• todo o layout baseado em em é afetado
Os filhos herdam o tamanho 
base 
<html> 
<body> 
<article> 
<h1>Desenvolvimento Mobile</h1> 
<p>Ipsum lorum, ipsum lorum, ipsum lorum.</p> 
</article> 
</body> 
</html> 
article { 
font-size: 1.25em; 
} 
h1 { 
font-size: 2em; 
} 
p { 
font-size: 0.9em; 
}
Quais os valores reais 
article { 
font-size: 1.25em; 
} 
h1 { 
font-size: 2em; 
} 
p { 
font-size: 0.9em; 
}
rem 
• Nova medida 
• Como o em é relativo ao elemento pai, o 
gerenciamento do tamanho das fontes pode ficar 
complexo caso existam muitos niveis. 
• O rem sempre é relativo ao tamanho base do 
elemento root, o <html> 
• Para alterar tudo, altere o tamanho do font-size do 
elemento html
Quais os valores reais 
article { 
font-size: 1.25rem; 
} 
h1 { 
font-size: 2rem; 
} 
p { 
font-size: 0.9rem; 
}
No caso anterior 
• html e o body vão ter os 16 px base 
• O article terá 16px * 1.25 = 20px 
• O h1 tem 16px * 2 = 32px 
• O p vai ter 16px * 0.9 = 14px
viewport-units: vw e vh 
• Flexibiliza o tamanho de forma proporcional ao 
tamanho do navegador 
• 1vh -> 1% da largura da janela do navegador 
• h2 { font-size: 2vw; } 
• Pouco suporte dos navegadores
Utilizando o layout fluido
Utilizando o layout fluido 
• Mudança de paradigma 
• Pode ser uma tarefa árdua quando já se está 
acostumado a medidas fixas 
• O segredo é se concentrar nas proporções dos 
elementos do layout 
• Enxergar os as relações entre os elementos do layout 
ao invés de seus tamanhos fixos
Layout 
.olhar { 
width: 25%; 
float: left; 
}
Sobre boxes css 
• Suponha que existam 2 sections definidas pelas 
regras abaixo, eu teria um linha com 2 colunas? 
section { 
float: left; 
padding: 5%; 
width: 50%; 
}
Sobre boxes css 
• Cada section vai ter 60% da largura da página 
• Ficará uma embaixo da outra 
• Causa: o padding não é considerado no width 
• Isso é um efeito do box model
Box model 
• Não é o width que determina a largura final 
• O tamanho final de cada elemento é 
section { 
float: left; 
padding: 5%; 
width: 40%; 
}
Alterando o box-sizing 
• Fazer com o width já inclua os valores do 
padding e do border-width 
section { 
float: left; 
padding: 5%; 
width: 50%; 
} 
box-sizing: border-box;
Alteração do box-sizing 
• Cenário: O width do elemento está definido em 
relação ao elemento pai, mas você gostaria que o 
padding fosse uma relação com o font-size do 
elemento
Alteração do box-sizing 
section { 
box-sizing: border-box; 
float: left; 
padding: 1em; 
width: 50%; 
}
Alterando todo 
*{ 
-webkit-box-sizing: border-box; 
-moz-box-sizing: border-box; 
box-sizing: border-box; 
}
Utilizando o layout fluido
Utilizando layout fluido 
• Para converter um layout baseado em pixels para 
um baseado em proporções:
Utilizando layout fluido
Utilizando layout fluido
Utilizando layout fluido
Utilizando layout fluido
Utilizando layout fluido
Novos valores 
• 960/960 = 1 (100%) 
• 240/960 = 0,25 (25%) 
• 250/960 = 26,041667% 
• 260/960 = 27,083333% 
#principal {! 
margin: 10px 260px 0px 250px;! 
}! 
! 
#principal {! 
margin: 10px 27.083333% 0px 26.041667%;! 
}! 
!
Para tudo funcionar como você 
espera 
<meta name="viewport” 
content="width=device-width, initial-scale=1" /> 
Evite: 
<meta name="viewport” 
content="width=device-width, 
user-scalable=no" /> 
<meta name="viewport” 
content="width=device-width, 
minimum-scale=1, maximum-scale=1" />
Restrição ao layout fluido
Restrição ao layout fluido 
• O layout fluido é a maneira de endereçar uma 
página aos vários dispositivos de tamanhos 
diferentes do dia de hoje 
• Mas, em certas situações, pode não ser a melhor 
opção deixar o layout fluir 100% sobre uma tela
Restrição ao Layout Fluido 
• Imagine este design em uma tela muito grande
Restrição ao layout fluido 
• Em telas muito grandes, alguns layouts fluidos 
podem ficar muito “esticados” 
• espaçamentos entre elementos muito grandes 
• É interessante pensar em um limite mínimo e 
máximo de tela em px 
• max-width 
• min-width
Restrição ao Layout Fluido 
body { 
max-width: 2000px; 
margin-left: auto; 
margin-right: auto; 
width: 100%; 
}
Imagens flexíveis
Imagens flexíveis 
• As imagens também precisam se adequar ao espaços de 
acordo com a resolução do aparelho 
• Regra CSS 
img { 
max-width: 100%; 
} 
limita a largura das imagens à largura do elemento que as 
contém
Recursos flexíveis 
• É possível aplicar a mesma ideia para outros recursos 
img, 
iframe, 
object, 
embed, 
video { 
height: auto; 
max-width: 100%; 
}
Imagens responsivas 
• Uma parte bem complicada de um bom design 
responsivo 
• As imagens possuem um número fixo de pixels 
• Mas e max-width: 100%; ??? 
• A imagem aumentar e diminui de acordo com o tamanho 
da tela 
• A imagem pode perder qualidade quando esticada
Imagens responsivas 
• Existem vários cenários onde a imagem deve 
responder ao contexto 
• Utilizar imagens diferentes, otimizadas para cada 
cenário: 
• Imagens grandes utilizadas em versão Desktop 
• Imagens bem definidas em telas de retina de alta 
resolução 
• Zoom nas imagens 
• Imagens diferentes para versões Desktop e Mobile 
devido ao layout
Por que? 
• Economia de bytes utilizando a imagem 
adequada à cada tamanho de tela 
• Qualidade visual na renderização de acordo com 
a resolução 
• Imagens de conteúdos diferentes para adaptação 
do design
Prefira CSS 
• Uma alternativa para evitar imagens responsivas 
é utilizar CSS 
• Quando possível recriar aspectos visuais do 
layout com técnicas que podem substituir 
imagens 
• Efeitos CSS3 
• bordas arredondadas, sombras, gradientes
Prefira CSS 
• Vantagens 
• renderizado no navegador do cliente 
• ajustado para o tamanho da tela 
• ajustado para a resolução 
• facilita manutenções futuras
Bordas arredondadas 
• Utiliza-se através da regra border-radius
Bordas arredondadas
Texto e imagens 
• Quando possível não adicione texto às imagens 
• Texto é fluido e pode configurado facilmente 
através de CSS 
• Texto em imagens 
• não podem ser indexados no Google 
• não tem como alterar a posição de acordo com a 
resolução
Icon Fonts 
• Hoje é possível através do @font-face carregar para 
sua página fontes customizadas 
• Uma alternativa para o uso de imagens é a utilização 
de família de fontes de ícones 
• Vantagens 
• fontes são bem renderizadas nas telas 
• um arquivo só de fonte pode conter vários ícones juntos 
• você pode customizar cor e tamanho
http://icomoon.io/app/
Imagens e Media Queries 
• Na maioria dos casos é preciso utilizar imagens 
nos formatos clássicos (PNG, JPEG) 
• Cenários 
• Enviar imagens nos tamanhos ideais para cada tela 
• backgrounds 
• <img>
Imagens ideais para cada 
resolução 
• Uma imagem de 960px para Desktop, mas que 
não faz sentido ser enviada para o mobile
Imagens ideais para cada resolução 
• Caso de imagem de fundo 
.banner { 
background-image: url(banner-mobile.jpg); 
} 
@media (min-width: 400px) { 
.banner { background-image: url(banner-medio.jpg); } 
} 
@media (min-width: 700px) { 
.banner { background-image: url(banner-grande.jpg); } 
}
Imagem seletiva com <img> 
• Ainda não existe uma flexibilidade com media queries 
• Alternativas 
• Rertirar todas as tags <img> e colocar todas as imagens via 
CSS 
• Algumas imagens possuem significado semântico, não são 
apenas peças do layout 
• Utilizar JS para alterar o src da imagem de acordo com a 
resolução da tela 
• Pode haver o carregamento de todas as imagens
Futuro 
• Responsividade com HTML5 
• Novo atributo srcset para a tag <img> que permite 
listar um conjunto de arquivos de acordo com o 
viewport 
<img 
srcset="mobile.jpg 400w, medio.jpg 700px, grande.jpg"> 
.banner { 
background: 
image-set(url(mobile.jpg) 400w, url(grande.jpg)); 
}
Futuro 
• <picture> 
<picture> 
<source src="mobile.jpg"> 
<source src="grande.jpg” 
media="(min-width: 700px)”> 
<img src="fallback.jpg”> 
</picture>
PictureFill 
• Semelhante a especificação de <picture>, utiliza 
JS e os elementos atuais do HTML5 para carregar 
a imagem responsivamente 
<div data-picture> 
<div data-src="mobile.jpg"></div> 
<div data-src="grande.jpg” 
data-media="(min-width: 700px)"></div> 
<noscript><img src="fallback.jpg"></noscript> 
</div> 
https://github.com/scottjehl/picturefill 
http://scottjehl.github.io/picturefill/
Exemplo PictureFill 
http://www.fa7.edu.br/webmobile/picturefill.zip
PictureFill
Soluções de servidor 
• Uma estratégia em que se coloca apenas uma imagem 
grande com boa definição um servidor externo 
redimensiona a imagem dinamicamente 
• Sencha IoSrc 
• http://www.sencha.com/products/io) 
• ReSrc 
• http: //www.resrc.it/ 
• Thumbor 
• https: //github.com/globocom/thumbor
Sencha IoSRC 
<img 
src='http://sencha.com/files/u.jpg' 
alt='My large image' 
/>
Sencha IoSrc 
<img 
src='http://src.sencha.io/http://sencha.com/files/u.jpg' 
alt='My smaller image' 
/>
Sencha IoSrc 
<img 
src='http://src.sencha.io/320/200/http://sencha.com/files/u.jpg' 
alt='My constrained image' 
width='320' 
height='200' 
/>

Mais conteúdo relacionado

Mais procurados

Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptPablo Sanches
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSSledsifes
 
Wireframes para sites e dispositivos móveis
Wireframes para sites e dispositivos móveisWireframes para sites e dispositivos móveis
Wireframes para sites e dispositivos móveisTersis Zonato
 
HTML - Aula 01 - Estrutura básica e tags básicas no html
HTML - Aula 01 - Estrutura básica e tags básicas no htmlHTML - Aula 01 - Estrutura básica e tags básicas no html
HTML - Aula 01 - Estrutura básica e tags básicas no htmlTiago Luiz Ribeiro da Silva
 
11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventosCentro Paula Souza
 
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
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Arquitetura de Informação (atualizado)
Arquitetura de Informação (atualizado)Arquitetura de Informação (atualizado)
Arquitetura de Informação (atualizado)Luiz Agner
 

Mais procurados (20)

Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScript
 
Introdução CSS
Introdução CSSIntrodução CSS
Introdução CSS
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSS
 
Web Design > Aula 00
Web Design > Aula 00Web Design > Aula 00
Web Design > Aula 00
 
Wireframes para sites e dispositivos móveis
Wireframes para sites e dispositivos móveisWireframes para sites e dispositivos móveis
Wireframes para sites e dispositivos móveis
 
Como criar Sites
Como criar SitesComo criar Sites
Como criar Sites
 
Introdução ao HTML
Introdução ao HTMLIntrodução ao HTML
Introdução ao HTML
 
HTML - Aula 01 - Estrutura básica e tags básicas no html
HTML - Aula 01 - Estrutura básica e tags básicas no htmlHTML - Aula 01 - Estrutura básica e tags básicas no html
HTML - Aula 01 - Estrutura básica e tags básicas no html
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Tags HTML
Tags HTMLTags HTML
Tags HTML
 
Rich domain model
Rich domain modelRich domain model
Rich domain model
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
CSS
CSSCSS
CSS
 
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
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Arquitetura de Informação (atualizado)
Arquitetura de Informação (atualizado)Arquitetura de Informação (atualizado)
Arquitetura de Informação (atualizado)
 
Curso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSSCurso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSS
 

Destaque

Layout designeditorial-20-b
Layout designeditorial-20-bLayout designeditorial-20-b
Layout designeditorial-20-bTamille Garcias
 
Principios Design
Principios DesignPrincipios Design
Principios Designrenatamruiz
 
Gestalt do objeto
Gestalt do objetoGestalt do objeto
Gestalt do objetoUFMA, IFMA
 
02 - Introdução a Projetos parte 2 - v1.0
02 - Introdução a Projetos parte 2 - v1.002 - Introdução a Projetos parte 2 - v1.0
02 - Introdução a Projetos parte 2 - v1.0César Augusto Pessôa
 
Gestalt Terapia - Psicologia
Gestalt Terapia - PsicologiaGestalt Terapia - Psicologia
Gestalt Terapia - PsicologiaAdriane Fernandes
 
Gestalt do Objeto - João Gomes Filho
Gestalt do Objeto - João Gomes FilhoGestalt do Objeto - João Gomes Filho
Gestalt do Objeto - João Gomes FilhoElizabeth Fantauzzi
 
ProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãO
ProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãOProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãO
ProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãODaniel Castro
 
Aula 5 - Elementos Gráficos
Aula 5 - Elementos GráficosAula 5 - Elementos Gráficos
Aula 5 - Elementos Gráficosaulasdejornalismo
 
Produção gráfica - Aula 05 Diagramação
Produção gráfica - Aula 05 DiagramaçãoProdução gráfica - Aula 05 Diagramação
Produção gráfica - Aula 05 DiagramaçãoDaniel Castro
 
Fundamentos da linguagem visual
Fundamentos da linguagem visualFundamentos da linguagem visual
Fundamentos da linguagem visualItamir Beserra
 
A historia da gestalt
A historia da gestaltA historia da gestalt
A historia da gestaltDiego Avila
 
Planejamento Visual na Diagramação
Planejamento Visual na DiagramaçãoPlanejamento Visual na Diagramação
Planejamento Visual na DiagramaçãoRenato Melo
 

Destaque (20)

Aula 03 layout
Aula 03 layoutAula 03 layout
Aula 03 layout
 
Layout designeditorial-20-b
Layout designeditorial-20-bLayout designeditorial-20-b
Layout designeditorial-20-b
 
Editoracao e design - Layout
Editoracao e design - LayoutEditoracao e design - Layout
Editoracao e design - Layout
 
Composição introdução
Composição   introduçãoComposição   introdução
Composição introdução
 
Principios Design
Principios DesignPrincipios Design
Principios Design
 
Gestalt do objeto
Gestalt do objetoGestalt do objeto
Gestalt do objeto
 
02 - Introdução a Projetos parte 2 - v1.0
02 - Introdução a Projetos parte 2 - v1.002 - Introdução a Projetos parte 2 - v1.0
02 - Introdução a Projetos parte 2 - v1.0
 
Gestalt Terapia - Psicologia
Gestalt Terapia - PsicologiaGestalt Terapia - Psicologia
Gestalt Terapia - Psicologia
 
Apresentação Layout
Apresentação LayoutApresentação Layout
Apresentação Layout
 
Gestalt do Objeto - João Gomes Filho
Gestalt do Objeto - João Gomes FilhoGestalt do Objeto - João Gomes Filho
Gestalt do Objeto - João Gomes Filho
 
Teoria da Gestalt
Teoria da GestaltTeoria da Gestalt
Teoria da Gestalt
 
ProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãO
ProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãOProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãO
ProduçãO Grafica Aula 03 04 Gestalt Na DiagramaçãO
 
Aula 5 - Elementos Gráficos
Aula 5 - Elementos GráficosAula 5 - Elementos Gráficos
Aula 5 - Elementos Gráficos
 
Produção gráfica - Aula 05 Diagramação
Produção gráfica - Aula 05 DiagramaçãoProdução gráfica - Aula 05 Diagramação
Produção gráfica - Aula 05 Diagramação
 
Fundamentos da linguagem visual
Fundamentos da linguagem visualFundamentos da linguagem visual
Fundamentos da linguagem visual
 
A historia da gestalt
A historia da gestaltA historia da gestalt
A historia da gestalt
 
Linguagem Visual - Fundamentos Compositivos
Linguagem Visual - Fundamentos CompositivosLinguagem Visual - Fundamentos Compositivos
Linguagem Visual - Fundamentos Compositivos
 
Composição gráfica
Composição gráficaComposição gráfica
Composição gráfica
 
Leis da Gestalt
Leis da GestaltLeis da Gestalt
Leis da Gestalt
 
Planejamento Visual na Diagramação
Planejamento Visual na DiagramaçãoPlanejamento Visual na Diagramação
Planejamento Visual na Diagramação
 

Semelhante a Layout Fluido

Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design ResponsivoVictor Melo
 
Portando sua aplicação web para iphone
Portando sua aplicação web para iphonePortando sua aplicação web para iphone
Portando sua aplicação web para iphoneRenato Nitta
 
Introdução as práticas de desenvolvimento web com design responsivo
Introdução as práticas de desenvolvimento web com design responsivoIntrodução as práticas de desenvolvimento web com design responsivo
Introdução as práticas de desenvolvimento web com design responsivoRégis Eduardo Weizenmann Gregol
 
Responsive web design, conteúdo em todos os dispositivos
Responsive web design, conteúdo em todos os dispositivosResponsive web design, conteúdo em todos os dispositivos
Responsive web design, conteúdo em todos os dispositivosDiogo Souza Machado
 
Responsive Web Design - Entregando a informação da melhor maneiro possível
Responsive Web Design - Entregando a informação da melhor maneiro possívelResponsive Web Design - Entregando a informação da melhor maneiro possível
Responsive Web Design - Entregando a informação da melhor maneiro possívelSérgio Lima
 
Palestra urutai-mobile
Palestra urutai-mobilePalestra urutai-mobile
Palestra urutai-mobileRogerio Fontes
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web DesignTalita Pagani
 
Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Nelson Glauber Leal
 
Criando temas em PSD pensando no Front-end e Back-end
Criando temas em PSD pensando no Front-end e Back-endCriando temas em PSD pensando no Front-end e Back-end
Criando temas em PSD pensando no Front-end e Back-end@cristianoweb
 

Semelhante a Layout Fluido (20)

Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Responsive Layouts
Responsive LayoutsResponsive Layouts
Responsive Layouts
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
jQuery mobile
jQuery mobilejQuery mobile
jQuery mobile
 
Layouts
LayoutsLayouts
Layouts
 
Android - Além do HelloWord
Android - Além do HelloWordAndroid - Além do HelloWord
Android - Além do HelloWord
 
Jquery Mobile
Jquery MobileJquery Mobile
Jquery Mobile
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Portando sua aplicação web para iphone
Portando sua aplicação web para iphonePortando sua aplicação web para iphone
Portando sua aplicação web para iphone
 
Introdução as práticas de desenvolvimento web com design responsivo
Introdução as práticas de desenvolvimento web com design responsivoIntrodução as práticas de desenvolvimento web com design responsivo
Introdução as práticas de desenvolvimento web com design responsivo
 
Responsive web design, conteúdo em todos os dispositivos
Responsive web design, conteúdo em todos os dispositivosResponsive web design, conteúdo em todos os dispositivos
Responsive web design, conteúdo em todos os dispositivos
 
Responsive Web Design - Entregando a informação da melhor maneiro possível
Responsive Web Design - Entregando a informação da melhor maneiro possívelResponsive Web Design - Entregando a informação da melhor maneiro possível
Responsive Web Design - Entregando a informação da melhor maneiro possível
 
Palestra urutai-mobile
Palestra urutai-mobilePalestra urutai-mobile
Palestra urutai-mobile
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Desenvolvimento Web
Desenvolvimento WebDesenvolvimento Web
Desenvolvimento Web
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023
 
Criando temas em PSD pensando no Front-end e Back-end
Criando temas em PSD pensando no Front-end e Back-endCriando temas em PSD pensando no Front-end e Back-end
Criando temas em PSD pensando no Front-end e Back-end
 

Mais de Eduardo Mendes

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - FundamentosEduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de ProjetoEduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTMLEduardo Mendes
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEduardo Mendes
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails Eduardo Mendes
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Eduardo Mendes
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantesEduardo Mendes
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantesEduardo Mendes
 

Mais de Eduardo Mendes (20)

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
 
Html - Aula 4
Html - Aula 4Html - Aula 4
Html - Aula 4
 
Html - Aula 3
Html - Aula 3Html - Aula 3
Html - Aula 3
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
 
ExtJS-4
ExtJS-4ExtJS-4
ExtJS-4
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Jquery
JqueryJquery
Jquery
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de Software
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails
 
Padrão Iterator
Padrão IteratorPadrão Iterator
Padrão Iterator
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantes
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 

Layout Fluido

  • 2. Layout Fluido • É a grande estrela hoje do Web Design Responsivo • Com a quantidade de dispositivos que renderizam página web hoje, não é possível simplesmente copiar medidas diretas do layout • O Layout Fluido utiliza medidas flexíveis
  • 3. Layout Fixo • O layout fixo é aquele que utiliza pixels para determinar as larguras dos elementos do design • Não se adapta às alterações do campo de visão do dispositivo que o renderiza
  • 6. Layout Fluido • Layouts fluidos utilizam unidades flexíveis (% , em) para larguras ao invés de pixels • Permite que haja fidelidade do design inicial da página • Layout se adapta de acordo com o campo de visão • Desafio • Se desapegar das medidas do projeto inicial
  • 7. Medidas flexíveis • As mais utilizadas • % • em
  • 8. Medidas Flexíveis • % • Utilizado para determinar as larguras dos elementos • A porcentagem é em relação ao tamanho do elemento pai • Pode ser utilizado para fontes • Tamanho relativo ao tamanho da fonte do elemento pai
  • 9. % body { /* largura total da tela */ width: 100%; } section { /* 1/3 da página */ width: 33.33333%; /* padding de 10% do pai */ padding: 10%; }
  • 10. Medidas Flexíveis • em • Normalmente utilizado para fontes • Medida sempre está relacionado à fonte base • Um font-size implícito equivale a 16px na maioria dos navegadores • 1em = 100% • 2em = 200%
  • 11. em html { /* font-size base implícito equivalente a 16px */ } p{ /* 16px * 1.125 = 18px */ font-size: 1.125em; } h1 { /*dobro da fonte base */ font-size: 2em; } h2 { /* 50% maior do que o valor base */ font-size: 150%; /* 1.5em */ }
  • 12. em • Pode ser usado em qualquer propriedade mas sempre significar uma relação com o tamanho da fonte • Útil quando a medida de algum elemento tem relação com texto, uma medida tipográfica • Ex: Espaçamento entre parágrafos p { margin: 0 1em; } p { margin: 0 5%; }
  • 13. Flexibilidade nos elementos filhos • Vantagem • As medidas flexíveis afetam os elementos filhos (aninhados) • Cenário: • Quando o usuário aumenta a fonte no navegador pra ler melhor • todo o layout baseado em em é afetado
  • 14. Os filhos herdam o tamanho base <html> <body> <article> <h1>Desenvolvimento Mobile</h1> <p>Ipsum lorum, ipsum lorum, ipsum lorum.</p> </article> </body> </html> article { font-size: 1.25em; } h1 { font-size: 2em; } p { font-size: 0.9em; }
  • 15. Quais os valores reais article { font-size: 1.25em; } h1 { font-size: 2em; } p { font-size: 0.9em; }
  • 16. rem • Nova medida • Como o em é relativo ao elemento pai, o gerenciamento do tamanho das fontes pode ficar complexo caso existam muitos niveis. • O rem sempre é relativo ao tamanho base do elemento root, o <html> • Para alterar tudo, altere o tamanho do font-size do elemento html
  • 17. Quais os valores reais article { font-size: 1.25rem; } h1 { font-size: 2rem; } p { font-size: 0.9rem; }
  • 18. No caso anterior • html e o body vão ter os 16 px base • O article terá 16px * 1.25 = 20px • O h1 tem 16px * 2 = 32px • O p vai ter 16px * 0.9 = 14px
  • 19. viewport-units: vw e vh • Flexibiliza o tamanho de forma proporcional ao tamanho do navegador • 1vh -> 1% da largura da janela do navegador • h2 { font-size: 2vw; } • Pouco suporte dos navegadores
  • 21. Utilizando o layout fluido • Mudança de paradigma • Pode ser uma tarefa árdua quando já se está acostumado a medidas fixas • O segredo é se concentrar nas proporções dos elementos do layout • Enxergar os as relações entre os elementos do layout ao invés de seus tamanhos fixos
  • 22. Layout .olhar { width: 25%; float: left; }
  • 23. Sobre boxes css • Suponha que existam 2 sections definidas pelas regras abaixo, eu teria um linha com 2 colunas? section { float: left; padding: 5%; width: 50%; }
  • 24. Sobre boxes css • Cada section vai ter 60% da largura da página • Ficará uma embaixo da outra • Causa: o padding não é considerado no width • Isso é um efeito do box model
  • 25. Box model • Não é o width que determina a largura final • O tamanho final de cada elemento é section { float: left; padding: 5%; width: 40%; }
  • 26. Alterando o box-sizing • Fazer com o width já inclua os valores do padding e do border-width section { float: left; padding: 5%; width: 50%; } box-sizing: border-box;
  • 27. Alteração do box-sizing • Cenário: O width do elemento está definido em relação ao elemento pai, mas você gostaria que o padding fosse uma relação com o font-size do elemento
  • 28. Alteração do box-sizing section { box-sizing: border-box; float: left; padding: 1em; width: 50%; }
  • 29. Alterando todo *{ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
  • 31. Utilizando layout fluido • Para converter um layout baseado em pixels para um baseado em proporções:
  • 37. Novos valores • 960/960 = 1 (100%) • 240/960 = 0,25 (25%) • 250/960 = 26,041667% • 260/960 = 27,083333% #principal {! margin: 10px 260px 0px 250px;! }! ! #principal {! margin: 10px 27.083333% 0px 26.041667%;! }! !
  • 38. Para tudo funcionar como você espera <meta name="viewport” content="width=device-width, initial-scale=1" /> Evite: <meta name="viewport” content="width=device-width, user-scalable=no" /> <meta name="viewport” content="width=device-width, minimum-scale=1, maximum-scale=1" />
  • 40. Restrição ao layout fluido • O layout fluido é a maneira de endereçar uma página aos vários dispositivos de tamanhos diferentes do dia de hoje • Mas, em certas situações, pode não ser a melhor opção deixar o layout fluir 100% sobre uma tela
  • 41. Restrição ao Layout Fluido • Imagine este design em uma tela muito grande
  • 42. Restrição ao layout fluido • Em telas muito grandes, alguns layouts fluidos podem ficar muito “esticados” • espaçamentos entre elementos muito grandes • É interessante pensar em um limite mínimo e máximo de tela em px • max-width • min-width
  • 43. Restrição ao Layout Fluido body { max-width: 2000px; margin-left: auto; margin-right: auto; width: 100%; }
  • 45. Imagens flexíveis • As imagens também precisam se adequar ao espaços de acordo com a resolução do aparelho • Regra CSS img { max-width: 100%; } limita a largura das imagens à largura do elemento que as contém
  • 46. Recursos flexíveis • É possível aplicar a mesma ideia para outros recursos img, iframe, object, embed, video { height: auto; max-width: 100%; }
  • 47. Imagens responsivas • Uma parte bem complicada de um bom design responsivo • As imagens possuem um número fixo de pixels • Mas e max-width: 100%; ??? • A imagem aumentar e diminui de acordo com o tamanho da tela • A imagem pode perder qualidade quando esticada
  • 48. Imagens responsivas • Existem vários cenários onde a imagem deve responder ao contexto • Utilizar imagens diferentes, otimizadas para cada cenário: • Imagens grandes utilizadas em versão Desktop • Imagens bem definidas em telas de retina de alta resolução • Zoom nas imagens • Imagens diferentes para versões Desktop e Mobile devido ao layout
  • 49. Por que? • Economia de bytes utilizando a imagem adequada à cada tamanho de tela • Qualidade visual na renderização de acordo com a resolução • Imagens de conteúdos diferentes para adaptação do design
  • 50. Prefira CSS • Uma alternativa para evitar imagens responsivas é utilizar CSS • Quando possível recriar aspectos visuais do layout com técnicas que podem substituir imagens • Efeitos CSS3 • bordas arredondadas, sombras, gradientes
  • 51. Prefira CSS • Vantagens • renderizado no navegador do cliente • ajustado para o tamanho da tela • ajustado para a resolução • facilita manutenções futuras
  • 52. Bordas arredondadas • Utiliza-se através da regra border-radius
  • 54. Texto e imagens • Quando possível não adicione texto às imagens • Texto é fluido e pode configurado facilmente através de CSS • Texto em imagens • não podem ser indexados no Google • não tem como alterar a posição de acordo com a resolução
  • 55. Icon Fonts • Hoje é possível através do @font-face carregar para sua página fontes customizadas • Uma alternativa para o uso de imagens é a utilização de família de fontes de ícones • Vantagens • fontes são bem renderizadas nas telas • um arquivo só de fonte pode conter vários ícones juntos • você pode customizar cor e tamanho
  • 57. Imagens e Media Queries • Na maioria dos casos é preciso utilizar imagens nos formatos clássicos (PNG, JPEG) • Cenários • Enviar imagens nos tamanhos ideais para cada tela • backgrounds • <img>
  • 58. Imagens ideais para cada resolução • Uma imagem de 960px para Desktop, mas que não faz sentido ser enviada para o mobile
  • 59. Imagens ideais para cada resolução • Caso de imagem de fundo .banner { background-image: url(banner-mobile.jpg); } @media (min-width: 400px) { .banner { background-image: url(banner-medio.jpg); } } @media (min-width: 700px) { .banner { background-image: url(banner-grande.jpg); } }
  • 60. Imagem seletiva com <img> • Ainda não existe uma flexibilidade com media queries • Alternativas • Rertirar todas as tags <img> e colocar todas as imagens via CSS • Algumas imagens possuem significado semântico, não são apenas peças do layout • Utilizar JS para alterar o src da imagem de acordo com a resolução da tela • Pode haver o carregamento de todas as imagens
  • 61. Futuro • Responsividade com HTML5 • Novo atributo srcset para a tag <img> que permite listar um conjunto de arquivos de acordo com o viewport <img srcset="mobile.jpg 400w, medio.jpg 700px, grande.jpg"> .banner { background: image-set(url(mobile.jpg) 400w, url(grande.jpg)); }
  • 62. Futuro • <picture> <picture> <source src="mobile.jpg"> <source src="grande.jpg” media="(min-width: 700px)”> <img src="fallback.jpg”> </picture>
  • 63. PictureFill • Semelhante a especificação de <picture>, utiliza JS e os elementos atuais do HTML5 para carregar a imagem responsivamente <div data-picture> <div data-src="mobile.jpg"></div> <div data-src="grande.jpg” data-media="(min-width: 700px)"></div> <noscript><img src="fallback.jpg"></noscript> </div> https://github.com/scottjehl/picturefill http://scottjehl.github.io/picturefill/
  • 66. Soluções de servidor • Uma estratégia em que se coloca apenas uma imagem grande com boa definição um servidor externo redimensiona a imagem dinamicamente • Sencha IoSrc • http://www.sencha.com/products/io) • ReSrc • http: //www.resrc.it/ • Thumbor • https: //github.com/globocom/thumbor
  • 67. Sencha IoSRC <img src='http://sencha.com/files/u.jpg' alt='My large image' />
  • 68. Sencha IoSrc <img src='http://src.sencha.io/http://sencha.com/files/u.jpg' alt='My smaller image' />
  • 69. Sencha IoSrc <img src='http://src.sencha.io/320/200/http://sencha.com/files/u.jpg' alt='My constrained image' width='320' height='200' />