Web Design Responsivo

3,778 views

Published on

Desenvolvimento de páginas web com design responsivo para dispositivos móveis

Published in: Technology
3 Comments
11 Likes
Statistics
Notes
No Downloads
Views
Total views
3,778
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
258
Comments
3
Likes
11
Embeds 0
No embeds

No notes for slide

Web Design Responsivo

  1. 1. DESENVOLVIMENTO DE CONTEÚDOS WEB PARA MOBILE
  2. 2. Agenda • Apresentação da disciplina • Introdução ao ecossistema mobile • Breve histórias das linguagens de marcação mobile • HTML5 de Relance • Breve revisão de CSS • Estratégia de desenvolvimento de conteúdos mobile • Viewport • Web Design Responsivo • Layout Fluido • Mobile First
  3. 3. Quem sou eu • Eduardo Mendes • MSc em Engenharia de Teleinformática • DETI UFC • edumendes@gmail.com
  4. 4. Disciplina • Aulas teóricas e práticas • Sexta noite • Sábado manhã • Projeto • Sábado a tarde • Avaliação • Projeto + exercícios práticos
  5. 5. O Ecossistema Mobile
  6. 6. Mobile Web • Qual a principal diferença? A tela é menor!
  7. 7. Ecossistema mobile •  Não é apenas uma questão de tamanho físico •  Mobile é um cenário de uso que varia dependendo do aparelho •  Usuários móveis geralmente são exatamente isso: móveis •  O ambiente dos usuários pode ser imprevisível •  O usuários móveis esperam sites otimizados, que se adaptem à sua localização e ao seu ambiente
  8. 8. Cenário de Uso
  9. 9. As características são importantes
  10. 10. Físicas •  Teclado completo com teclas reais •  Dispositivo de seleção super preciso •  Tela larga, múltiplos monitores •  CPU/GPU poderosas •  Disco rígido de alta capacidade •  Teclado limitado/virtual •  Dispositivo de seleção toque •  Tela pequena, que pode rotacionar •  CPU/GPU menos capacitada •  Armazenamento menor
  11. 11. Experiência •  Tipicamente utilizado de localidades previsíveis •  Bom para navegação/ pesquisa em aberto •  Fácil de trocar entre várias tarefas •  Usuário está focado e confortável •  Tipicamente utilizado em ambientes imprevisíveis •  Bom para consultas rápidas •  Destinado à tarefas individuais discretas •  Usuário frequentemente distraído ou ocupado
  12. 12. O Ambiente Relógio embutido Bússola Geolocalização Acelerômetro Câmera Termômetro Messagens Calendário
  13. 13. O que considerar ao“mobilizar” seu site? •  Quem está usando seu site? •  O que seus usuários fazem quando chegam ao seu site? •  De onde seu site está sendo acessado? •  Quando seu site é acessado? •  Porque os usuários estão indo ao seu site? •  Como eles acessam o seu site?
  14. 14. Responder • Pode ajudar você a otimizar o tempo que você gasta sabendo o que você tem que fazer para um site mobile
  15. 15. A Web é uma só
  16. 16. Projetar para uma web • De forma geral: • Todos os dispositivos devem ser capaz de acessar seu site • Não exclua usuários baseado no dispositivo ou navegador que ele usa • Separe conteúdo do comportamento e da apresentação • Separe CSS e JS • Não adicione informações de comportamento e apresentação junto com o código
  17. 17. Breve história das linguagens para mobile
  18. 18. Breve história das linguagens de marcação mobile SGML HTML XML HDML cHTML XHTML Basic WML XHTML HTML5 XHTML-MP 1970s 1990s 2000s Padronizada 2001 Atualizada em 2008
  19. 19. XHTML-MP e HTML5 • Antes do aparecimento dos smartphones mais modernos, XHTML-MP era a linguagem de marcação mais comum para dispositivos móveis • XHTML-MP foi dividido em módulos • Isso possibilitou um meio para evoluir de WML para XHTML-MP • Permite que os navegadores com menos recursos realizem várias tarefas comuns no mundo web • Novos telefones e dipositivos são capazes de lidar com HTML5
  20. 20. HTML5 de relance
  21. 21. Tags semânticas • <header> e <footer> • Em comparação com a antiga tag <div> não há nenhuma diferença entre em termos de apresentação • Mas no futuro os motores de pesquisa se beneficiarão conseguindo diferenciar o que seja o conteúdo real de outros elementos
  22. 22. Tags semânticas • <article> e <section> • Artigos representam um bloco completo de conteúdo • Uma seção é um pedaço do todo • Artigos (article) podem ser compostos de múliplas seções (section) • Seções podem ter vários artigos
  23. 23. Tags semânticas • <figure> e <figcaption> • <figure> é um conteiner para conteúdo (geralmente imagens) e <figcaption> fornece uma legenda para aquele conteúdo • <nav> • indica que um determinado conteúdo é a navegação da página
  24. 24. <header>! <hgroup>! <h1>Título</h1>! <h2>Subtítulo</h2>! </hgroup>! </header>! ! <nav>! <ul>! Navegação! </ul>! </nav>! <section>! <article>! <header>! <h1>Título</h1>! </header>! <section>! Conteúdo! </section>! </article> ! ! <article>! <header>! <h1>Título</h1>! </header>! <section>! Conteúdo! </section>! </article>! </section>! ! <aside>! Principais links! </aside>! ! <figure>! <img src="..."/>! <figcaption>Cartao 1.1</figcaption>! </figure>! ! <footer>! Copyright ©! <time datetime="2013-08-01">! ! !2013</time>.! </footer>!
  25. 25. <input> • O elemento <input> agora tem uma série de novos valores para o atributo type, que permite que os navegadores façam coisas bacanas, dependendo do seu valor. • color • date • datetime • datetime-local • email • month •  number •  range •  search •  tel •  time •  url
  26. 26. Breve revisão CSS
  27. 27. CSS • O HTML cuida e dá semântica ao conteúdo • O CSS é uma linguagem de estilo utilizada para definir a apresentação de documentos • Ao invés de colocar a formatação dentro da página, cria-se uma página que contém todos os estilos (regras CSS)
  28. 28. Seletores CSS • Seletores agrupam as regras CSS aplicadas a um ou mais elementos em um página body{ background-color: #d2b48c; margin-left: 20%; margin-right:20%; border: 1px dotted gray; padding: 10px 10px 10px 10px; font-family: sans-serif; }
  29. 29. Todo elemento vem dentro de uma caixa
  30. 30. Vários tipos de caixas e bordas
  31. 31. Elementos aninhados herdam as regras CSS
  32. 32. Um gráfico para o aninhamento html head body title p q
  33. 33. Os elementos aninhados html body p ph1 h2 p img a em a
  34. 34. Elementos aninhados body { font-family:sans-serif; } h1, h2 { color: gray; } h1 { border-bottom: 1px solid black; } p { color: maroon; } em { font-family: serif; }
  35. 35. Os elementos aninhados html body p ph1 h2 p img a em a
  36. 36. Classe css <h2>Chá Verde Gelado</h2> <p class="verde"> <img src="../imagens/green.jpg"> Mistura de vitaminas e sais minerais, este drink combina benefícios do chá verde com a camomila. </p> p.verde { color: green; }
  37. 37. Podemos fazer mais blockquote.verde, p.verde { color: green; } <blockquote class=“verde”> .verde { color: green; }
  38. 38. O atributo id • Similar a classe • Um atributo chamado“id” • Deve possuir um nome único • Só um elemento na página deve possuir aquele id específico <p id=“mensagem”> Página desenvolvida em HTML </p>
  39. 39. Como usar? p.especial { color: red; } .especial { color:red; } Seleciona apenas as tags <p> que tenham a classe “especial” Seleciona todos os elementos que tenham a classe “especial”
  40. 40. Como usar? #mensagem{ color: red; } p#mensagem{ color:red; } Seleciona qualquer elemento que possua o id “mensagem” Seleciona apenas o elemento <p> que tenha o id “mensagem”
  41. 41. Padding em uma linha padding-top: 0px; padding-right: 20px; padding-bottom: 30px; padding-left: 10px padding: 0px 20px 30px 10px;
  42. 42. Margem em uma linha margin-top: 0px; margin-right: 20px; margin-bottom: 30px; margin-left: 10px margin: 0px 20px 30px 10px;
  43. 43. 1 valor para todos os paddings padding-top: 20px; padding-right: 20px; padding-bottom: 20px; padding-left: 20px padding: 20px;
  44. 44. Margem horizontal e vertical margin-top: 0px; margin-right: 20px; margin-bottom: 0px; margin-left: 20px margin: 0px 20px;
  45. 45. Borda em uma linha border-width: thin; border-style: solid; border-color: #007e7e; border: thin solid #007e7e;
  46. 46. Fundo em uma linha background-color: white; background-image: url(images/cocktail.gif); background-repeat: repeat-x; background: white url(images/cocktail.gif) repeat-x;
  47. 47. Blocos,inline e o display • Elementos de bloco • Separam o conteúdo • Elementos inline h2 p blockquote p q
  48. 48. A regra display • A regra display pode alterar um elemento de bloco para um elemento inline • Muito utilizado para trabalhar com menus
  49. 49. Valores para display ! li {! !display: inline;! }! ! li {! !display: block;! }! ! li {! !display: none;! }! !
  50. 50. O float • Faz com que um elemento flutue na página, caso haja espaço • Utilizado para da forma ao layout • O elemento pode flutuar a direita ou a esquerda
  51. 51. Layout com float float: left; width: 240px; float: right; width: 240px; margin: 10px 260px 0px 250px;
  52. 52. Estratégias de desenvolvimento de conteúdo mobile
  53. 53. Estratégias Não fazer nada O conteúdo para Desktop existente é o mesmo que é enviado para os dispositivos móveis sem nenhuma mudança ou otimização de layout Multi dispositivo O mesmo conteúdo é enviado para desktop e mobile, mas estilos e scripts apropriados para o tamanho físico de destino Versão mobile específica Dispositivos móveis e desktop recebem versões diferentes apropriadas ao seu tamanho específico
  54. 54. Não fazer nada • Conteúdo próprio para Desktop é enviado para o dispositivo móvel de forma inalterada
  55. 55. Não fazer nada •  Menos trabalho para desenvolver •  Não há necessidade de manter cópias separadas de conteúdos ou estilos •  Não otimiza a experiência do usuário •  Conteúdos largos e complexos que podem empobrecer a performance Vantagens Desvantagens OK: Páginas leves que possuem conteúdo flexível e fluente, páginas que são organizadas de forma mais vertical RUIM: Páginas com layouts complexos, que possuem itens de conteúdo grandes (imagens) ou que utilizam plugins como flash
  56. 56. Conteúdo adaptado • Mesma página é enviada para os dispositivos desktop e mobile • Entretanto, CSS e outros conteúdos podem se adaptar ao tamanho físico do dispositivo desktop.css mobile.css
  57. 57. Conteúdo adaptado •  Usar o mesmo conteúdo reduz o trabalho de desenvolvimento •  Boa experiência para tamanhos físicos múltiplos •  Pode ser difícil converter o conteúdo para este modelo, dependendo da complexidade da página •  Uso inapropriado de estilos pode fazer esta estratégia falhar Vantagens Desvantagens OK: Páginas com semântica bem definida por HTML e utiliza CSS e JS para definir aparência e comportamento RUIM: Páginas complexas com animações, vídeos e grandes imagens incorporadas, cujo a diferença para mobile seria muito grande
  58. 58. Versão Mobile Específica • Versão de conteúdo específica para mobile é enviada para os dispositivos móveis • Envolve algum redirecionamento do lado do servidor
  59. 59. Conteúdo específico •  Cada tamanho físico tem uma experiência melhor •  Versões podem ser desenvolvidas de maneira independente •  Aumenta o trabalho de desenvolvimento •  A verificação do tipo de dispositivo no servidor pode falhar Vantagens Desvantagens OK: Páginas complexas e que possuem uma grande diferença de um tamanho físico para o outro; sites que possuem independência de desenvolvimento das versões RUIM: Páginas simples que podem ter seu conteúdo adaptado facilmente
  60. 60. Web Design Responsivo
  61. 61. Ethan Marcotte
  62. 62. Problemas Um site precisa funcionar em um número de aparelhos, plataforma e navegadores que cresce a cada dia
  63. 63. Web Design Responsivo • Origem: A List Apart, Ethan Marcotte, 2010 Ao invés de adptar designs desconectados para cada um do número cada vez maior de dispositivos web, podemos tratá-los como faces da mesma experiência. Nós podemos projetar para uma experiência ideal de visualização, e embutir tecnologias padronizadas nos nossos designs não somente para torná-los mais flexíveis, mas mais adaptados para a mídia que os renderiza.
  64. 64. Web Design Responsivo • Conjunto de abordagens para adaptar o conteúdo à plataforma utilizada pelo usuário • Páginas se adaptam a todo tipo de dispositivo • Como fazer: design flexível e adaptável • navegador • dispositivo • contexto do usuário
  65. 65. Web Design Responsivo • Conjunto de abordagens para adaptar o conteúdo à plataforma utilizada pelo usuário • resoluções diferentes • orientações de tela diferentes • plataformas de interação diversas • otimização de performance
  66. 66. Desafios •  Diferentes navegadores estão disponíveis •  Chrome, Opera, Safari •  Capacidade para tecnologias de cada navegador varia muito •  Muitos dos antigos navegadores não suportam um JS ou CSS corretamente •  Dispositivos móveis são menores e mais lentos •  Redes móveis podem ter limites de acesso e transferência •  Complicações para conteúdos ricos •  Interfaces móveis obrigam-nos a repensar nossos websites •  Se ele consegue renderizar uma versão desktop, não quer dizer que seja a melhor opção
  67. 67. Não responsivo
  68. 68. http://interim.it/
  69. 69. http://www.bostonglobe.com/
  70. 70. Web Desing Responsivo As  mesmas  páginas     para  todos   os  disposi0vos  
  71. 71. Mas será possível ter somente um conjunto de páginas para todas as mídias?
  72. 72. Web Design Responsivo • Priorização do Conteúdo • Projetar para o conteúdo que realmente importa • Não apenas um design menor • Completa reestruturação de conteúdo • Conteúdo útil e com foco
  73. 73. Web Design Responsivo Web Design Responsivo Grid Layout Fluido CSS Media Queries Imagens e mídias flexíveis Controle do Viewport
  74. 74. Design Responsivo •  Um conjunto de regras CSS diferente são aplicadas a partir da avaliação de certas características do navegador em uso Media queries •  Utilização de medidas proporcionais (%, em) invés tamanhos absolutos (px) para os elementos do layout Grid Layout Fluido •  Através de CSS fazer com que imagens mídias se adaptem para caber no layout de acordo com as restrições de tamanho Imagens e recursos flexíveis
  75. 75. Viewport e Zoom
  76. 76. Viewport • Um pixel no mundo Desktop • Em um tela de computador normalmente 1px é 1px • Uma imagem com largura de 200px irá ocupar 200px da tela física do monitor • Se o tamanho for definido em % • o valor será calculado proporcional ao tamanho da janela do navegador
  77. 77. Viewport • Os navegadores mobile tentam exibir páginas web feitas para desktop • Ajuste automático do zoom
  78. 78. Viewport • Viewport é o espaço disponível no navegador para uma página ser renderizada • tamanho da janela do navegador, menos: • barra de ferramentas • barra de rolagem • navegação <meta name="viewport" content="">
  79. 79. Viewport •  <meta name="viewport" content=""> •  Principais parâmetros para content •  width/height: valor ou device-[width|height] •  name=“viewport”content=“width=device-width” •  initial-scale: define o zoom inicial, 0 a 10 •  name=“viewport”content=“width=device-width, initial-scale=1” •  user-scalable: yes | no •  name=“viewport”content=“width=device-width, initial-scale=1, user- scalable=no” •  minimum-scale, maximum-scale: 0.25 a 10 •  name=“viewport”content=“width=device-width, initial-scale=1, user- scalable=no, maximum-scale=1.5”
  80. 80. Viewport e CSS @viewport { width: 320px; height: device-height; zoom: 1; max-zoom: 2; min-zoom: 0.5; }
  81. 81. Zoom e o Pixel • O zoom é uma funcionalidade presente em navegadores modernos • Consideres • uma imagem de 150px em uma página • aplica-se zoom de 200% • a imagem passa a ocupar 300px na tela
  82. 82. Zoom e o Pixel • O Zoom altera a visualização, mas não modifica o código • a imagem continua a ser descrita com 150px • 150 CSS pixels + 200% zoom -> 300 pixels físicos
  83. 83. Viewport e o Zoom • O viewport • diminui quando se aumenta o zoom • aumenta quando se diminui o zoom • O viewport é medido em CSS pixels
  84. 84. Exemplos • Imagem de 320x356px, iPhone, viewport padrão http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html
  85. 85. Exemplos • Viewport com a mesma largura da imagem <meta name="viewport” content="width=320,initial-scale=1"> http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html
  86. 86. Aumentando o zoom http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html
  87. 87. Diminuindo o zoom http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html
  88. 88. Configuração ideal • A configuração ideal é aquela que considera a largura do próprio dispositivo como seu viewport • Os dispositivos móveis têm larguras diversas de telas <meta name="viewport” content="width=device-width">
  89. 89. Configuração ideal • O zoom também não deve estar alterado <meta name="viewport” content="width=device-width,initial-scale=1">
  90. 90. Viewport
  91. 91. Sempre habilite o zoom
  92. 92. Media queries
  93. 93. CSS Media Types • Permitem que se apliquem regras específicas à mídia que o renderiza Media Type Description all Used for all media type devices aural Used for speech and sound synthesizers braille Used for braille tactile feedback devices embossed Used for paged braille printers handheld Used for small or handheld devices print Used for printers projection Used for projected presentations, like slides screen Used for computer screens tty Used for media using a fixed-pitch character grid, like teletypes and terminals tv Used for television-type devices
  94. 94. Exemplos em uma página HTML ! ! <link rel="stylesheet” ! href="estilos.css” media="screen">! ! <link rel="stylesheet”! href="impressao.css” media="print">
  95. 95. Exemplos em um arquivo CSS ! @media screen {! /* Regras CSS para monitores */ }! ! ! @media print {! /* Regras CSS para impressao */ }!
  96. 96. CSS Media queries • Fornecem um modo de aplicar folhas de estilos seletivamente baseado em algumas características da mídia onde o conteúdo será renderizado • Tamanho da janela, tamanho da tela, resolução, etc
  97. 97. CSS Media queries •  Uma media querie consiste em um tipo de mídia e zero ou mais expressões que verificam as condições particulares de recursos de mídia •  height •  width •  orientation •  device-width •  device-height •  as medidas podem ser testadas px, cm, in, ems •  aceitam prefixos min- max- •  Media queries -> design condicional
  98. 98. CSS Media Queries
  99. 99. CSS Media Queries: exemplos <link rel="stylesheet" href="estilos.css”! media="screen and (color)">! ! @media screen and (min-width: 481px){ }! @media screen, print and (max-width: 480px){ }! @media all and (orientation:landscape) { } ! @media screen and (monochrome) { } ! @media screen and (color) { } !
  100. 100. http://www.fa7.edu.br/webmobile/mq_inicial.zip Exemplo
  101. 101. Exemplo Media Querie
  102. 102. Exemplo de Media Querie
  103. 103. Exemplo de Media Querie
  104. 104. Operadores em Media Queries •  Conjunção (and) @media (max-width: 600px) and (orientation: portrait) { } •  Disjunção (,) @media (min-width: 300px), (min-height: 300px) { } •  Negação (not) @media not print and (max-width: 600px) and(orientation: portrait) { }
  105. 105. Breakpoints
  106. 106. Breakpoints • Apesar de existirem vários parâmetros para media queries, apenas alguns são usados de fato • a grande maioria dos sites não requer todos os parâmetros • maior parte: altura e largura do dispositivo • em que momento escrever regras para uma resolução diferente?
  107. 107. Breakpoints • Ponto em que o layout“quebra” • Delimitador das regras CSS para atenderem novas especificações • Aquele tamanho em que novos ajustes precisam ser realizados no layout para que ocorra a melhor experiência possível do layout
  108. 108. Abordagens sobre breakpoints • No início dos estudos do Web Design Responsivo • breakpoints de acordo com a resolução de dispositivos específicos • Para smartphones @media only screen and (min-device-width : 320px) and (max-device-width : 480px) • Para desktops @media only screen and (min-width : 1224px)
  109. 109. 320 and Up @media print { } @media only screen and (min-width: 480px) { ... } @media only screen and (min-width: 600px) { ... } @media only screen and (min-width: 768px) { ... } @media only screen and (min-width: 992px) { ... } @media only screen and (min-width: 1382px) { ... }
  110. 110. Less Framework /* Tablet Layout */ @media only screen and (min-width: 768px) and (max-width: 991px) { ... } /* Mobile Layout */ @media only screen and (max-width: 767px) { ... } /* Layout largo de mobile */ @media only screen and (min-width: 480px) and (max-width: 767px) { ... } /* Retina display */ @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) { ... }
  111. 111. Twitter Bootstrap /* Telefones em landscape e abaixo */ @media (max-width: 480px) { ... } /* Telefone em landscape a tablet em portrait */ @media (max-width: 767px) { ... } /* tablet em portrait a landscape e desktop */ @media (min-width: 768px) and (max-width: 979px) { ... } /* Desktop grande */ @media (min-width: 1200px) { ... }
  112. 112. Breakpoints .coluna { float: left; width: 25%; } @media (max-width: 600px) { .coluna { width: 50%; } } @media (max-width: 400px) { .coluna { float: none; width: 100%; } }
  113. 113. Breakpoints • Como encontrar os breakpoints? • Mais importante do que verificar todo tamanho de tela de dispositivo é verificar em que tamanho o layout realmente precisa ser ajustado
  114. 114. Breakpoints •  Abra sua página original no navegador •  Redimensione a janela devagar até o design parecer ruim •  se mobile-first •  abra pequeno e vá aumentando a janela •  senão •  abra grande e vá diminuindo a janela •  Quando achar um ponto em que o design quebra, copie o tamanho da janela •  crie uma media query com esse valor •  Recarregue a página, veja se as mudanças melhoraram o design, e continue redimensionando pra achar o próximo breakpoint
  115. 115. Responsive Design View Mozilla
  116. 116. Evite device breakpoints @media only screen and (min-width: 480px) { ... } @media only screen and (min-width: 600px) { ... } @media only screen and (min-width: 768px) { ... } @media only screen and (min-width: 992px) { ... } @media only screen and (min-width: 1382px) { ... }
  117. 117. Utilize content breakpoints @media (min-width: 592px) { ... } @media (min-width: 656px) { ... } @media (min-width: 752px) { ... } @media (min-width: 1088px) { ... } @media (min-width: 1312px) { ... }
  118. 118. Media queries: Arquivos separados ou tudo junto? • É possível criar media queries nas chamadas de folha de estilo <link rel="stylesheet" type="text/css" media="screen and (min-width:480px)” href="480.css"> <link rel="stylesheet" type="text/css” media="screen and (min-width:768px)” href="768.css"> @media only screen and (min-width: 480px) { ... } @media only screen and (min-width: 768px) { ... }
  119. 119. 1 arquivo • Somente 1 requisição HTTP • Mais difícil de esquecer de atualizar • Arquivo fica muito grande • Manutenção fica mais difícil Vantagens Desvantagens
  120. 120. Vários arquivos • O arquivo padrão é menor • Organização melhorada • Várias requisições HTTP • Possibilidade de esquecer de atualizar algo Vantagens Desvantagens
  121. 121. Media queries sobrepostas ou empilhadas • Sobrepor ou empilhar? • Não são termos técnicos para o Design Responsivo • Regras podem ser agrupadas por media queries de forma exclusiva (empilhadas) ou sobreposta (sobrecarregada)
  122. 122. Media queries sobrepostas @media all and (min-width:500px) { body { background: blue; font-family: serif; } } @media all and (min-width:700px) { body { background: red; color: #FFF; } }
  123. 123. Media queries sobrepostas @media all and (min-width:700px) { body { background: red; color: white; } } @media all and (min-width:500px) { body { background: blue; font-family: serif; } }
  124. 124. Media queries empilhadas @media all and (min-width:500px) and (max-width:699px) { body { background: blue; font-family: serif; } } @media all and (min-width:700px) { body { background: red; color: white; font-family: serif; } }
  125. 125. Media types,media queries, navegadores e dispositivos • Os media types já estão presentes desde CSS2 • Todos os navegadores modernos suportam os tipos screen e print • Smartphones • celulares antigos aceitavam o tipo handheld, mas smartphones modernos ignoram • Utilização de media queries para escrever regras específicas • @media screen and (max-width: 480px) { } • muitos navegadores antigos não entendem as medias queries
  126. 126. Media types,media queries, navedarodes e dispositivos • Operador only • @media only screen and (max-width: 480px) { } • igual à querie anterior • Arranjo técnico para que navegadores antigos reconheçam a media querie como falsa e daí não seja avaliada
  127. 127. Dica • Utilize apenas o tamanho @media (min-width: 320px) { } • simples • fácil • executa em navegadores antigos
  128. 128. http://www.fa7.edu.br/webmobile/cerva.zip Exemplo
  129. 129. Cervejaria
  130. 130. Cervejaria 1 coluna3 colunas
  131. 131. Estrutura • HTML
  132. 132. Princípio de Design • “Identifique os aspectos de seu aplicativo que variam e separe-os do que permanece igual” • Pegue o que variar e “encapsule” para que isso não afete o restante do código • Menos consequências indesejadas • Mais flexibilidade
  133. 133. Alteração • Identificar o que precisa ser alterado
  134. 134. Organizando o CSS •  Regras de estrutura comuns às versões Desktop e Mobile •  Regras de estrutura específicas para Mobile utilizando media queries @media screen and (max-width:480px) { } •  Regras de estrutura específicas para Desktop utilizando media queries @media screen and (min-width:481px) { }
  135. 135. Estrutura Comum
  136. 136. Desktop e Mobile
  137. 137. http://www.fa7.edu.br/webmobile/ex_layout.zip Exercício
  138. 138. Adaptar este conteúdo para uma coluna
  139. 139. Layout Fluido
  140. 140. 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
  141. 141. 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
  142. 142. Layout fixo
  143. 143. Layout fixo
  144. 144. 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
  145. 145. Medidas flexíveis • As mais utilizadas • % • em
  146. 146. 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
  147. 147. % body { /* largura total da tela */ width: 100%; } section { /* 1/3 da página */ width: 33.33333%; /* padding de 10% do pai */ padding: 10%; }
  148. 148. 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%
  149. 149. 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 */ }
  150. 150. 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%; }
  151. 151. 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
  152. 152. 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; }
  153. 153. Quais os valores reais article { font-size: 1.25em; } h1 { font-size: 2em; } p { font-size: 0.9em; }
  154. 154. 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
  155. 155. Quais os valores reais article { font-size: 1.25rem; } h1 { font-size: 2rem; } p { font-size: 0.9rem; }
  156. 156. 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
  157. 157. 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
  158. 158. Utilizando o layout fluido
  159. 159. 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
  160. 160. Layout .olhar {! width: 25%;! float: left;! }!
  161. 161. 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%; ! } !
  162. 162. 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
  163. 163. Box model • Não é o width que determina a largura final • O tamanho final de cada elemento é section {! !float: left;! !padding: 5%; ! !width: 40%; ! } !
  164. 164. 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;! !!
  165. 165. 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
  166. 166. Alteração do box-sizing section {! box-sizing: border-box;! float: left;! padding: 1em;! width: 50%;! }!
  167. 167. Alterando todo *{! -webkit-box-sizing: border-box;! -moz-box-sizing: border-box;! box-sizing: border-box;! }!
  168. 168. Utilizando layout fluido
  169. 169. Utilizando layout fluido • Para converter um layout baseado em pixels para um baseado em proporções:
  170. 170. 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%;! }! !
  171. 171. 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" />
  172. 172. Restrição ao layout fluido
  173. 173. 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
  174. 174. Restrição ao Layout Fluido • Imagine este design em uma tela muito grande
  175. 175. 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
  176. 176. Restrição ao Layout Fluido body {! max-width: 2000px;! margin-left: auto;! margin-right: auto;! width: 100%;! }!
  177. 177. Imagens flexíveis
  178. 178. 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
  179. 179. Recursos flexíveis • É possível aplicar a mesma ideia para outros recursos img, iframe, object, embed, video { height: auto; max-width: 100%; }
  180. 180. Mobile First
  181. 181. Qual será a melhor estratégia?
  182. 182. Mobile • Maior diferença • Espaço dísponível para o conteúdo • Existe o Scroll • Mais flexível • rua, praia, carro, casa, cama, sofá • Touch-screen • Limitações • Tela menor, rede lenta, hardware mais lento, toque menos preciso que o mouse
  183. 183. Abordagens ágeis Kent Beck TDD Baby Steps
  184. 184. Mobile First Versão mais limitada •  Conteúdo priorizado Versão menos limitada
  185. 185. Progressive Enhancement Layout mais simples Imagens menores CSS e JS Mais possibilidade de conteúdo Layout com colunas ? Imagens maiores Layout widescreen Imagens maiores
  186. 186. Melhoria Progressiva • O projeto web através de uma série de camadas Conteúdo (HTML) •  Somado à marcação básica para criar um documento que possa ser renderizados por vários navegadores Apresentação (CSS) •  Definição de cores, tipografia e organização do conteúdo Comportamento (JS) •  Camada que dá certo dinamismo ao conteúdo apresentado
  187. 187. Versão Mobile Específica
  188. 188. User-Agent • Cabeçalho enviado através de requisição HTTP • Cada navegador envia um valor único através do USER-AGENT • É a informação mais confiável que o servidor tem sobre qual é o navegador
  189. 189. http://detectmobilebrowsers.com/
  190. 190. O script <?php $useragent=$_SERVER['HTTP_USER_AGENT']; if(preg_match('/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile| ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp| series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207| 6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te| us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd -|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)| fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p| s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)| klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr| me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)| n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil| pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/| sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft| ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9| up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc| whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i',substr($useragent,0,4))) header('Location: http://detectmobilebrowser.com/mobile'); ?>
  191. 191. XHTML-MP • É um subconjunto do HTML projetado para funcionar adequadamente em navegadores mobile diferentes. • Ideal para navegadores de capacidade mediana
  192. 192. Projetando formulários
  193. 193. Projetando formulário • Costuma-se dizer que dispositivos móveis são muito mais utilizados para consumos de informação
  194. 194. Projetando formulários •  Formulários em dispositivos móveis são limitados por diversos fatores •  largura •  capacidade de entrada de dados •  Checklist básico •  Minimize o número de telas pelas quais o usuário tem que navegar •  Quando possível, procure usar controles de formulários nativos da web ao invés dos customizados •  Utilize labels na parte superior ao invés de à esquerda/direita •  Permita ao usuário a opção de exibir os caracteres da senha •  Utilize os novos inputs do HTML5
  195. 195. Labels superiores
  196. 196. Labels superiores • Não há necessidade de CSS complicados ou tabelas para montar o formulário • Os labels permanecem visíveis no momento do zoom do formulário • Internacionalização facilitada: a tradução de labels não altera o fluxo das informações
  197. 197. Campo Senha • Permita ao usuário a opção de exibir os caracteres quando ele estiver digitando senhas
  198. 198. Inputs HTML5 • HTML5 possui mais de 12 novos tipos de input • Não há problema para navegadores antigos porque são renderizados como inputs do tipo text • 2 melhorias • Os novos tipos de input permitem que os navegadores renderizem UI mais complexas para certos tipos de campos • Os novos atributos permitem uma interação melhorada ou outras funcionalidades para o campo do formulário
  199. 199. Inputs HTML5 Tipo do Input Descrição email! Indica que o campo é um endereço de email url! Indica que o campo é uma URL number! Indica que o campo deve ser uma entrada númerica range! Indica que o campo tem um valor mínimo e máximo color! Indica que o campo tem um valor para cor date! Indica que o campo contém uma data ou horário search! Indica que o campo é usado para realizar funcionalidades de pesquisa
  200. 200. Padrões de Navegação Mobile
  201. 201. Top nav • Uma das soluções mais fáceis de implementar é manter a navegação no topo
  202. 202. Top nav • Fácil de implementar • Sem necessidade de JS • Sem firulas CSS • Pode ocasionar problemas de altura • Pode ocasionar problemas com links muito próximos Vantagens
  203. 203. Âncora no rodapé • Mantém a lista de navegação no rodapé do site e um link no cabeçalho direcionando para esta navegação
  204. 204. Âncora no rodapé • Fácil de implementar • Sem necessidade de JS • Sem firulas CSS • Botão único no cabeçalho • Pode desorientar algumas pessoas • Alguns podem achar a solução deselegante Vantagens
  205. 205. Menu de Seleção • É possível transformar um menu em uma lista de links em um menu de seleção
  206. 206. Menu de Seleção • Não ocupa espaço na tela • Mantém toda a interação no cabeçalho • Facilmente identificável • Dificuldade para estilizar select • Quando há submenus • Necessita de JS Vantagens Desvantagens
  207. 207. Alternância • Semelhante a“Âncora no rodapé”, mas apresenta o menu próximo. Boa aparência e fácil de implementar.
  208. 208. Alternância • Mantém a interação em um só local • Elegante • Facilmente escalável • Performance • Precisa de JS Vantagens Desvantagens
  209. 209. Slide à esquerda • O menu de navegação é acessado através de um ícone que move o conteúdo para a direita, exibindo os links
  210. 210. Slide à esquerda • Não ocupa espaço na tela • Mantém a interação próxima • Boa aparência • Técnica avançada • Não escala bem • Potencialment confuso Vantagens Desvantagens
  211. 211. Somente no rodapé • Semelhante a Top Nav, mas sem âncora no cabeçalho
  212. 212. Somente no rodapé • Não ocupa espaço no cabeçalho • O conteúdo principal fica destacado • Difícil de encontrar e acessar o menu • É preciso percorrer todo o conteúdo Vantagens Desvantagens
  213. 213. Pull Down • Revela o menu através de movimento de slide
  214. 214. Pull Down • Convenção para smartphones • Técnica avançada • Precisa de uma instrução de uso Vantagens
  215. 215. XHTML-MP • Links • Não suporta o atributo target • Dá suporte ao atributo accesskey • 0 a 9 • Não suporta iframes • Prefira lista ordenadas • <ul>  <ol>
  216. 216. Referências • https://developer.mozilla.org/docs/CSS/ Media_queries • http://www.w3.org/TR/css3-mediaqueries/

×