69
LAYOUT FLUIDO

Layout Fluido

Embed Size (px)

DESCRIPTION

Criação de páginas com layout fluido

Citation preview

Page 1: Layout Fluido

LAYOUT FLUIDO

Page 2: 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

Page 3: Layout Fluido

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

Page 4: Layout Fluido

Layout fixo

Page 5: Layout Fluido

Layout fixo

Page 6: Layout Fluido

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

Page 7: Layout Fluido

Medidas flexíveis

• As mais utilizadas

• %

• em

Page 8: Layout Fluido

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

Page 9: Layout Fluido

% body {

/* largura total da tela */ width: 100%;

} section {

/* 1/3 da página */ width: 33.33333%;

/* padding de 10% do pai */ padding: 10%;

}

Page 10: Layout Fluido

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%

Page 11: Layout Fluido

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 */ }

Page 12: Layout Fluido

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%; }

Page 13: Layout Fluido

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

Page 14: Layout Fluido

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;

}

Page 15: Layout Fluido

Quais os valores reais

article { font-size: 1.25em; } h1 { font-size: 2em; } p { font-size: 0.9em; }

Page 16: Layout Fluido

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

Page 17: Layout Fluido

Quais os valores reais

article { font-size: 1.25rem; } h1 { font-size: 2rem; } p { font-size: 0.9rem; }

Page 18: Layout Fluido

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

Page 19: Layout Fluido

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

Page 20: Layout Fluido

Utilizando o layout fluido

Page 21: 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

Page 22: Layout Fluido

Layout .olhar { width: 25%; float: left;}

Page 23: Layout Fluido

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%;

}

Page 24: Layout Fluido

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

Page 25: Layout Fluido

Box model

• Não é o width que determina a largura final • O tamanho final de cada elemento é

section {float: left;padding: 5%; width: 40%;

}

Page 26: Layout Fluido

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;

Page 27: Layout Fluido

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

Page 28: Layout Fluido

Alteração do box-sizing

section { box-sizing: border-box; float: left; padding: 1em; width: 50%;}

Page 29: Layout Fluido

Alterando todo

*{ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}

Page 30: Layout Fluido

Utilizando o layout fluido

Page 31: Layout Fluido

Utilizando layout fluido

• Para converter um layout baseado em pixels para um baseado em proporções:

Page 32: Layout Fluido

Utilizando layout fluido

Page 33: Layout Fluido

Utilizando layout fluido

Page 34: Layout Fluido

Utilizando layout fluido

Page 35: Layout Fluido

Utilizando layout fluido

Page 36: Layout Fluido

Utilizando layout fluido

Page 37: 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%; !} !!

Page 38: Layout Fluido

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" />

Page 39: Layout Fluido

Restrição ao layout fluido

Page 40: 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

Page 41: Layout Fluido

Restrição ao Layout Fluido

•  Imagine este design em uma tela muito grande

Page 42: Layout Fluido

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

Page 43: Layout Fluido

Restrição ao Layout Fluido

body { max-width: 2000px; margin-left: auto; margin-right: auto; width: 100%;}

Page 44: Layout Fluido

Imagens flexíveis

Page 45: Layout Fluido

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

Page 46: Layout Fluido

Recursos flexíveis •  É possível aplicar a mesma ideia para outros recursos

img, iframe, object, embed, video { height: auto; max-width: 100%; }

Page 47: Layout Fluido

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

Page 48: Layout Fluido

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

Page 49: Layout Fluido

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

Page 50: Layout Fluido

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

Page 51: Layout Fluido

Prefira CSS

• Vantagens

• renderizado no navegador do cliente

• ajustado para o tamanho da tela

• ajustado para a resolução

•  facilita manutenções futuras

Page 52: Layout Fluido

Bordas arredondadas

• Utiliza-se através da regra border-radius

Page 53: Layout Fluido

Bordas arredondadas

Page 54: Layout Fluido

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

Page 55: Layout Fluido

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

Page 56: Layout Fluido

http://icomoon.io/app/

Page 57: Layout Fluido

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>

Page 58: Layout Fluido

Imagens ideais para cada resolução

• Uma imagem de 960px para Desktop, mas que não faz sentido ser enviada para o mobile

Page 59: Layout Fluido

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); }}

Page 60: Layout Fluido

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

Page 61: Layout Fluido

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)); }

Page 62: Layout Fluido

Futuro

• <picture>

<picture>

<source src="mobile.jpg">

<source src="grande.jpg”

media="(min-width: 700px)”>

<img src="fallback.jpg”>

</picture>

Page 63: Layout Fluido

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/

Page 64: Layout Fluido

http://www.fa7.edu.br/webmobile/picturefill.zip

Exemplo PictureFill

Page 65: Layout Fluido

PictureFill

Page 66: Layout Fluido

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

Page 67: Layout Fluido

Sencha IoSRC

<img src='http://sencha.com/files/u.jpg' alt='My large image'/>

Page 68: Layout Fluido

Sencha IoSrc <img

src='http://src.sencha.io/http://sencha.com/files/u.jpg'

alt='My smaller image'

/>

Page 69: Layout Fluido

Sencha IoSrc <img

src='http://src.sencha.io/320/200/http://sencha.com/files/u.jpg'

alt='My constrained image'

width='320'

height='200'

/>