Faculdade de Tecnologia Senac Goiás

Transcrição

Faculdade de Tecnologia Senac Goiás
Faculdade de Tecnologia Senac Goiás
Jefson de Souza Alves
AEC - Atividade Externa ao Componente Curricular
HTML5
Goiânia 2016
Introdução ao HTML5
Desde 1999, o desenvolvimento da linguagem HTML (HyperText Markup Language) ficou
estacionado na versão 4. De lá pra cá, a W3C esteve focada em linguagens como XML
(Extensible Markup Language) e SVG (Scalable Vector Graphics - o uso de gráficos
vetoriais em navegadores). Enquanto isso, desenvolvedores de navegadores estiveram
preocupados em melhorar as funcionalidades destes, como exibir páginas em abas e
oferecer integração com leitores de RSS. Recentemente, no entanto, organizações como
Mozilla Foundation, Opera e Apple se uniram para atualizar o HTML e implementar novos
e interessantes recursos.
Neste artigo, veremos algumas novidades que o HTML5 traz. Para quem está se
familiarizando agora com o HTML, sem preocupações: os elementos tradicionais
continuam os mesmos, já que o HTML5 foi planejado considerando também
compatibilidade com estas funcionalidades.
Novos elementos
Vários novos elementos foram introduzidos no HTML5, todos com a finalidade de facilitar
a compreensão e a manutenção do código. Alguns são uma evolução natural do elemento
<div> com foco na semântica; outros surgiram da necessidade de padronizar a maneira
de se publicar conteúdo, como acontece hoje com as imagens. Os principais elementos
dessa nova versão são:
Elementos de estrutura
<header> - cabeçalho da página ou de uma seção (não confundir com a tag <head>);
<section> - cada seção do conteúdo;
<article> - um item do conteúdo dentro da página ou da seção;
<footer> - o rodapé da página ou de uma seção;
<nav> - o conjunto de links que formam a navegação, seja o menu principal do site ou
links relacionados ao conteúdo da página;
<aside> - conteúdo relacionado ao artigo (como arquivos e posts relacionados em um
blog, por exemplo).
Elementos de conteúdo
<figure> - usado para associar uma legenda a uma imagem, vídeo, arquivo de áudio,
objeto ou iframe:
<figure id="figura01">
<legend>Figura 1. Esquema de uma página em HTML5</legend>
<img src="html5.png" border="0" width="200" height="300"
alt="Estrutura de uma página escrita com os novos elementos do HTML5" />
</figure>
<canvas> - por meio de uma API gráfica, renderiza imagens 2D dinâmicas que poderão
ser usadas em jogos, gráficos, etc;
<audio> e <video> - usados para streaming (transmissão pela internet) de áudio e vídeo.
É uma tentativa de criar um padrão em todos os navegadores como acontece hoje com as
imagens:
<audio src="musica.mp3" autoplay="autoplay" loop="20000" />
<video src="video.mov" width="400" height="360" />
<dialog> - junto com as tags <dt> e <dd> criado para formatar um diálogo:
<dialog>
<dt> Michael, you never told me your family knew Johnny Fontane!
<dd> Oh sure, you want to meet him?
<dt> Yeah!
<dd> You know, my father helped Johnny in his career.
<dt> Really? How?
<dd> ...Let's listen to this song.
</dialog>
<time> - representa data e/ou hora;
<meter> - utilizado para representar medidas, que podem ser de distância, de
armazenagem em disco, etc.
Elementos retirados do HTML5
Alguns elementos não existirão mais no HTML5. Alguns foram retirados porque sua
função é puramente visual e devem ser substituídos por uma declaração no CSS
(Cascading Style Sheets), como: <basefont>, <big>, <center>, <font>, <s>, <strike>, <tt>
e <u>. Outros foram retirados porque afetam negativamente a acessibilidade do site:
<frame>, <frameset> e <noframes>.
Apesar de serem considerados antigos, <b> e <i> ainda serão reconhecidos e
renderizados para fins de formatação, mas devem ser substituídos sempre que possível
pelos elementos <strong> e <em>, respectivamente.
Também foram retirados alguns atributos, seja porque caíram em desuso ou porque
podem ser substituídos semanticamente por declarações no CSS para definir o visual dos
elementos. Os principais atributos retirados são:
• target no elemento <a>;
• align nos elementos <table> e demais tags de tabelas, <iframe>, <img>, <input>,
<hr>, <div>, <p>, entre outros;
• background em <body>;
• bgcolor nos elementos de tabela e no <body>;
• border em <table> e <object>;
•
•
•
•
•
cellpadding e cellspacing em <table>;
height em <td> e <th>;
width nos elementos <hr>, <table>, <td>, <th> e <pre>;
hspace e vspace em <img> e <object>;
noshade e size em <hr>.
Doctype
Com o HTML5 usaremos apenas uma declaração doctype:
<!DOCTYPE html>
Além de única, ela é curta e fácil de lembrar - hoje em dia praticamente todos os
desenvolvedores copiam e colam o longo e complicado doctype de algum lugar na hora
de começar um novo documento HTML.
Transição do XHTML
A semelhança entre o HTML5 e seus antecessores, HTML 4.01 e XHTML 1.0, é muito
grande. Quem está familiarizado com as versões anteriores não sentirá nenhuma
dificuldade na transição, e para quem ainda vai aprender a linguagem, os novos
elementos deixarão o processo mais simples.
A sintaxe dos elementos é como no HTML 4.01, que não exigia que elementos como
<img> e <input> fossem "fechados":
<input type="text" id="nome">
Porém, para aqueles que estão migrando do XHTML, a barra que fecha um elemento
continuará sendo aceita:
<input type="text" id="nome" />
Curiosidade:
Logotipo do HTML5
Em janeiro de 2011 o HTML5 ganhou um logotipo, junto com símbolos gráficos que
mostram para o visitante quais recursos estão sendo utilizados naquele site, como CSS3
e multimídia. Segundo o site oficial da W3C, o logotipo é "forte e confiável, universal como
a linguagem de marcação que você escreve".
Vantagens da linguagem
-Torna a internet mais rápida: desenvolvedores vem usando HTML5 para reduzir o
tamanho de arquivos e tornar a experiência do usuário mais limpa;
-HTML5 tem Canvas que é uma poderosa ferramenta para a criação de conteúdo
gráfico. Com Canvas é mais fácil criar animações, desenhos e outros elementos
visuais complexos sem usar aplicativos externos;
-Cada vez mais navegadores dão suporte ao HTML5. Quer saber se o seu
navegador é compativel com HTML5? Vá para html5test.com e verifique, caso não
seja, é melhor atualizar a versão de seu navegador;
-Um dos grandes diferenciais do HTML5 é sua capacidade de vídeo;
Desenvolvedores podem integrar vídeos e HTML5 sem a necessidade de plugins.
E como temos cada vez mais navegadores que são compatíveis ao HTML5, vemos
um rápido crescimento na porcentagem de vídeos online;
-O mesmo acontece com sons. HTML5 vem com uma ferramenta de suporte
poderosa para elementos de audio;
-HTML5 está disponível em diversas plataformas e sua performance é ótima em
PC's, dispositivos móveis e tablets;
-É importante mencionar que o HTML5 ainda está em desenvolvimento e aos
poucos passará por mudanças. Devido a suas capacidades tão impressionantes e
alto padrão, podemos dizer com alguma segurança que qualquer coisa envolvendo
HTML5 terá um grande impacto na internet;
Desvantagens da Linguagem
- Não está pronto;
- A parte de som está mal especificada;
- Não há consenso entre os formatos suportados na tag video;
- Implementação rudimentar por parte do IE (a MS só implementa o que é exclusivamente
dentro do padrão);
- Performance diferente nos diversos browsers (uma função/estrutura rápida num, pode
ser lenta em outro);
- Falta de ferramentas de autoria (editores, bibliotecas, etc);
- De maneira geral, performance pior que a do flash.
Tipos de aplicações que possuem a linguagem
HTML5 como base
O principal ponto de debate nesta área envolve linguagens nativas e HTML5, já que a
base de programação de uma app poderá ser inteiramente suportada pela linguagem
nativa do dispositivo (Android, iOS e Windows Phone possuem linguagens nativas
diferentes entre si) ou por HTML5, linguagem transversal a todos os dispositivos móveis
quando disponibilizada num browser. Esta última opção denomina-se web app pois tal
como um website engloba de forma generalizada HTML5, apoiado por CSS e JavaScript.
Há ainda a possibilidade de fazer uso das duas opções na mesma aplicação, ou seja,
criar aplicações híbridas (hybrid apps).
Optar pelo HTML5 no desenvolvimento deste tipo de aplicações é uma escolha que se
pode definir como "eclética". É uma linguagem considerada "multiplataforma" e certifica
que a app será carregada em qualquer dispositivo que tenha um browser ou uma
aplicação que interprete HTML. Evita-se assim a criação de raiz da mesma app cada vez
que for necessário distribuí-la num sistema operativo diferente, reduzindo
substancialmente o tempo e respetivo custo de desenvolvimento.
Elementos Semânticos
Em todas as páginas da Web existem divisões básicas referentes aos tipos de conteúdo
que são colocados em cada parte do layout, como cabeçalho, rodapé ou menu de
navegação.
Nas versões anteriores do HTML não haviam tags com uma semântica apropriada para
cada uma dessas divisões. Dessa forma, os desenvolvedores acabavam usando a tag
<div> para todas as situações, e criando seus próprios padrões de nomeclaturas através
dos atributos id ou class.
No HTML5 foram criadas diversas tags semânticas para indicar aos user-agents quais
conteúdos estão sendo inseridos em cada uma das divisão da página, organizando e
padronizando o desenvolvimento.
Cabeçalho com o elemento <header>
O novo elemento <header> do HTML5 é usado para definir o cabeçalho de uma página
ou sessão, e pode conter logo, títulos, menu de navegação, campo de busca, etc.
<header>
<img alt="logo" src="/img/logo.png">
<h1>Entendo a estrutura e semântica do HTML5</h1>
<form action="www.enderecodosite.com.br/search" id="searchform" method="get">
<label for="s">Pesquisa</label>
<input type="text" placeholder="Pesquisa" id="s">
<input type="submit" value="Pesquisa" class="submit">
</form>
</header>
Dentro do <header> podemos também inserir o elemento <hgroup>, que serve para
agrupar dois ou mais elementos de títulos (h1 até h6), organizando-os hierarquicamente.
O elemento <hgroup> foi descontinuado e não deve mais ser usado.
Exemplo: site http://destroyafteruse.com/ utiliza a marcação <header> em seu cabeçalho,
como podemos ver (de forma simplificada) logo abaixo.
<header>
<h1><a href="http://destroyafteruse.com/">Agent</a></h1>
<p id="site-description">Disruptive Innovation &amp; Strategic Product Design</p>
<div id="logo"><a href="http://destroyafteruse.com/"><img src="logo.gif"></a></div>
<p class="skip-link screen-reader-text"><a href="#content" title="Skip to content">Skip to
content</a></p>
<nav>
<ul>
<li><a href="http://destroyafteruse.com/category/news">News</a></li>
<li><a href="http://destroyafteruse.com/about-agent">ABOUT AGENT</a></li>
<li><a href="http://destroyafteruse.com/category/missions">Top Missions</a></li>
<li><a href="http://destroyafteruse.com/the-way-of-the-agent">THE AGENT WAY</a></li>
<li><a href="http://destroyafteruse.com/business-units">Business Units</a></li>
<li><a href="http://destroyafteruse.com/services">SERVICES</a></li>
<li><a href="http://destroyafteruse.com/our-process">Our Process</a></li>
<li><a href="http://destroyafteruse.com/category/the-agents">The Agents</a></li>
<li><a href="http://destroyafteruse.com/category/press">Press</a></li>
<li><a href="http://destroyafteruse.com/jobs">JOBS</a></li>
<li><a href="http://destroyafteruse.com/meeting-point">Meeting point</a></li>
</ul>
</nav>
</header>
Navegação Global com o elemento <nav>
O novo elemento <nav> do HTML5 serve para agrupar uma lista de links para outras
partes do site, seja essa lista de navegação local ou global. Esses blocos de links podem
estar em diferentes partes do layout, como no cabeçalho ou no rodapé.
<nav>
<ul class="menu">
<li><a href="inicio.html">Início</a></li>
<li><a href="quem-somos.html">Quem somos</a></li>
<li><a href="servicos.html">Serviços</a></li>
<li><a href="contato.html">Contato</a></li>
</ul>
</nav>
Exemplo: site do navegador Safari, da Apple (http://www.apple.com/br/safari/), utiliza a
marcação <nav> em seu menu, como podemos ver (de forma simplificada) abaixo.
<nav>
<ul role="navigation" id="globalnav">
<li><a href="/br/"><span>Apple</span></a></li>
<li><a href="http://store.apple.com/br/"><span>Store</span></a></li>
<li><a href="/br/mac/"><span>Mac</span></a></li>
<li><a href="/br/ipod/"><span>iPod</span></a></li>
<li><a href="/br/iphone/"><span>iPhone</span></a></li>
<li><a href="/br/ipad/"><span>iPad</span></a></li>
<li><a href="/br/itunes/"><span>iTunes</span></a></li>
<li><a href="/br/support/"><span>Suporte</span></a></li>
</ul>
<div id="globalsearch">
<form method="get" action="http://www.apple.com/br/search/">
<label for="sp-searchtext">Buscar</label>
<input type="text" id="sp-searchtext">
</form>
</div>
</nav>
Diferentes sessões com o elemento <section>
O novo elemento <section> do HTML5 é o menos especifico entre as novas tags. A
diferença do <section> para um <div> é que o primeiro serve para dividir o conteúdo em
diferentes sessões, que podem conter elementos como <header> ou <article>, enquanto
o segundo divide qualquer conteúdo, sem uma finalidade específica.
<section>
<article>
(...)
</article>
</section>
Exemplo: site do Nike Better World utilizava a marcação <section> para dividir duas
diferentes sessões, como podemos ver (de forma simplificada) logo abaixo.
<section data-controller="StoryPhilosophy" data-nav="Philosophy">
<article>
(...)
</article><!--article-->
</section><!--story-->
<section data-controller="StoryBeach" data-nav="Board Short">
<article>
(...)
</article><!--article-->
</section><!--story-->
<section data-controller="StoryHyperdunk" data-nav="Hyperdunk">
<article>
(...)
</article><!--article-->
</section><!--story-->
<section data-controller="StoryLegendpant" data-nav="Nike Legend Pant">
<article>
(...)
</article><!--article-->
</section><!--story-->
<section data-controller="StoryArchive" data-nav="View More Stories">
<div class="view-archive">
<h1>THERE'S MORE BETTER HERE.</h1>
<p><a href="/about">Click</a> to learn more about how we're leveling the playing field, and protecting it
too.</p>
<div class="swoosh"><img src="lib/img/logo_end.png" /></div>
</div>
</section><!--story-->
O conteúdo central com o elemento <article>
O novo elemento <article> do HTML5 serve para identificar um conteúdo independente e
de maior relevância dentro da página, que pode ser distribuido via feed, como um post,
artigo ou bloco de comentários.
O elemento <article> pode conter outros elementos como <header> ou <footer>.
<article>
<header>
<h1>Entendendo o elemento Article</h1>
<p>Publicado em <time pubdate datetime="2011-09-01">01 de Setembro de 2011</time></p>
</header>
...conteúdo...
<footer>
<small>© Todos os direitos reservados.</small>
</footer>
</article>
Exemplo: site Gaga Debki (http://gaga-debki.pl/) utiliza a marcação <article> para
especificar o conteúdo de maior relevância dentro do site, como podemos ver (de forma
simplificada) logo abaixo.
<article>
<h2>Ośrodek domków holenderskich</h2>
<p>Ośrodek domków holenderskich <strong>GAGA &bull; Dębki</strong> znajduje się w spokojnej części
Dębek w odległości <strong>400m od centrum Dębek i 900m od jednej z najpiękniejszych plaż w
Polsce.</strong></p>
<p>Posiadamy na wynajem 4 holenderskie domki letniskowe. Oferowane przez nas domki są w pełni
wyposażone w&nbsp;następujące przedmioty:</p>
<ul>
<li>aneks kuchenny z lodówką, kuchenką z piekarnikiem oraz ekspresem do kawy,</li>
<li>łazienkę z umywalką i prysznicem oraz WC,</li>
<li>indywidualny alarm,</li>
</ul>
<p>Nasze domki letniskowe posiadają dwie sypialnie, jedna z łóżkiem małżeńskim, druga z dwoma
pojedynczymi łóżkami wraz z pościelą. Istnieje także możliwość rozłożenia łóżka i spania w salonie.</p>
<p><em>Doba rozpoczyna się o godzinie 14-ej, a kończy się o godzinie 11-ej.</em></p>
</article>
Conteúdos relacionados com o elemento <aside>
O novo elemento <aside> do HTML5 serve para mostrar conteúdos que fazem referência
ao conteúdo principal à sua volta, como informações, blocos de navegação ou até mesmo
publicidade. Vejamos o exemplo abaixo:
<div id="main">
<div id="primary">
<article>
<header>
<h1>Entendendo o elemento Aside</h1>
<p>Publicado em <time pubdate datetime="2011-09-01">01 de Setembro de 2011</time></p>
</header>
(...)
<aside>
<h2>Curiosidades sobre o Aside</h2>
(...)
</aside>
<footer>
<p>Esse post foi publicado na categoria <a href="#" title="HTML5">HTML5</a>
</footer>
</article>
</div>
<div id="secondary">
<aside>
<h3>Arquivos</h3>
<ul>
<li><a href="#" title="agosto 2011">agosto 2011
<li><a href="#" title="julho 2011">julho 2011</a></li>
<li><a href="#" title="junho 2011">junho 2011</a></li>
<li><a href="#" title="maio 2011">maio 2011</a></li>
<li><a href="#" title="abril 2011">abril 2011</a></li>
</ul>
</aside>
</div>
</div>
Aqui temos duas situações onde o <aside> é empregado. No primeiro caso ele está
dentro de um elemento <article>, e por isso podemos entender que ele traz conteúdos
relacionados ao post ou artigo em questão.
No segundo caso o <aside> está fora do <article>, fazendo parte da barra lateral do site,
trazendo links de navegação que tem relação com a página como um todo.
Exemplo: site Tableless (http://tableless.com.br/) utiliza a marcação <aside> para
especificar os conteúdos relacionados dentro de suas páginas, como podemos ver (de
forma simplificada) logo abaixo.
<aside class="lateral">
(...)
<h3 class="widget-title">Posts Relacionados</h3>
<ul class="related_post">
<li><a title="Dicas de sobrevivência em uma era pós o IE6" href="#">Dicas de sobrevivência em uma
era pós o IE6</a></li>
<li><a title="Drops 7 ? Você está fazendo errado" href="#">Drops 7 ? Você está fazendo
errado</a></li>
<li><a title="Usando Meta Box em seu tema WordPress" href="#">Usando Meta Box em seu tema
WordPress</a></li>
<li><a title="Introdução aos padrões de codificação" href="#">Introdução aos padrões de
codificação</a></li>
<li><a title="Biblioteca CSS ou Framework?" href="#">Biblioteca CSS ou Framework?</a></li>
</ul>
(...)
</aside>
Rodapé com o elemento <footer>
O novo elemento <footer> do HTML5 representa o rodapé de um documento ou de uma
sessão específica do mesmo, podendo conter informações relacionadas ao autor e ao
copyright, blocos de navegação ou links relacionados.
<body>
<div id="page">
<article>
<header>
<h1>Entendendo o elemento Footer</h1>
<p>Publicado em <time pubdate datetime="2011-09-01">01 de setembro de 2011</time></p>
</header>
(...)
<footer>
<p>Publicado na categoria <a href="#" title="HTML5">HTML5</a></p>
</footer>
</article>
<footer>
<nav>
<ul>
<li><a href="inicio.html">Início</a></li>
<li><a href="quem-somos.html">Quem somos</a></li>
<li><a href="servicos.html">Serviços</a></li>
<li><a href="contato.html">Contato</a></li>
</ul>
</nav>
<small>Copyright © 2011 - Todos os direitos reservados</small>
</footer>
</div>
</body>
No exemplo acima vemos o <footer> sendo empregado em duas situações: no primeiro
caso ele está contido dentro do elemento <article>, representando o rodapé do post ou
artigo em questão, e no segundo caso está ao final do código, representando o rodapé da
página.
Exemplo: site HTML5 Boilerplate(http://html5boilerplate.com/) utiliza a marcação <footer>
para delimitar a sua área de rodapé, como podemos ver (de forma simplificada) logo
abaixo.
<footer>
<h3>Brought to you by</h3>
<p>
<a href="#"><img src="img/paul-irish.png">Paul Irish <br><i>Google Chrome, jQuery</i></a>
<a href="#"><img src="img/divya-manian.png">Divya Manian <br><i>Open Web Vigilante</i></a>
<a href="#"><img src="img/shichuan.png">Shichuan <br><i>Open Web Developer</i></a>
<a href="#"><img src="img/mathias-bynens.png">Mathias Bynens <br><i>Freelance web
developer</i></a>
<a href="#"><img src="img/nicolas-gallagher.png">Nicolas Gallagher <br> <i>Front-End Web
Developer</i></a>
</p>
<ul>
<li><a href="#">Mickael Daniel</a></li>
<li><a href="#">Jonathan Verrecchia</a></li>
<li><a href="#">Rob Larsen</a></li>
<li><a href="#">Mike West</a></li>
<li><a href="#">More Contributors</a></li>
</ul>
<p>It would not have been possible without the efforts of these superheroes:</p>
<ul>
<li><a href="#">Stoyan Stefanov</a></li>
<li><a href="#">Patrick H Lauke</a></li>
<li><a href="#">Faruk Ate?</a></li>
<li><a href="#">Remy Sharp</a></li>
<li><a href="#">Adam McIntyre</a></li>
<li><a href="#">Thierry Koblentz</a></li>
<li><a href="#">Mike Taylor</a></li>
<li><a href="#">Jonathan Neal</a></li>
<li><a href="#">Kroc Camen</a></li>
<li><a href="#">Ethan Dunham</a></li>
<li><a href="#">Peter Beverloo</a></li>
<li><a href="#">Viget</a></li>
<li><a href="#">Steve Souders</a></li>
<li><a href="#">Isobar Creative Technology team</a></li>
</ul>
</footer>