Baixe o app para aproveitar ainda mais
Prévia do material em texto
Apostila da Disciplina de Introdução a Programação Web Ementa da Disciplina: 1.HTML 5. 2. CSS 3. 3. JavaScript. 4. Jquery. 2017 Autor: Professor Esp. (Mestrando) Danilo Sartorelli Barbato Desenvolvimento Front-End: HTML5, CSS3, JavaScript e jQuery Danilo Sartorelli Barbato Resumo As tecnologias para desenvolvimento de aplicações web tiveram significativo crescimento, nos últimos anos, com o surgimento de novas ferramentas, padrões e funcionalidades (principalmente as grandes bases em HTML5, CSS3, JavaScript e jQuery na parte de Front-End) o que, consequentemente, trouxe o aumento de sua complexidade. Diante a esse fato, esta documentação define e explica conceitos básicos de linguagem de marcação estrutural, estilização, linguagem de programação de alto nível e especificidades de biblioteca, além de padrões web para que seja possível compreender os fundamentos do desenvolvimento web. Palavras-chave Tecnologia; Padrões-Web; Aplicações; Desenvolvimento; Front-End. Introdução O desenvolvimento de aplicações para a internet baseia-se em diversas diretrizes do W3C (Consórcio da World Wide Web), criado por Tim Berners- Lee, que define padrões, protocolos e melhores práticas para estas aplicações. Este desenvolvimento pode ser dividido em duas etapas: o design, que irá considerar a arquitetura, usabilidade, acessibilidade e desenho da aplicação; e o desenvolvimento da aplicação propriamente dita, que, por sua vez, é dividido em Front-End e Back-End, sendo o primeiro responsável pela entrega da informação, coleta de entradas e dados do usuário, e tratamento para entrega em formato específico ao sistema do Back-End, que pode retornar respostas e dados que retroalimentam as informações. Dessa forma, podemos dizer que o papel do desenvolvedor de Front-End é trabalhar junto com a equipe de design e Back-End a fim de produzir códigos leves e compatíveis com os padrões da Web em seus diversos navegadores, tamanhos de tela e resoluções, além de se preocupar com performance e técnicas de SEO, sistema de otimização para mecanismos de busca. Apesar do desenvolvimento web ter sido iniciado com o intuito de entregar conteúdos e informações, hoje é utilizado para criação de aplicações web, e serve para entregar informações para computadores, tablets, smartphones e televisões, recolher entradas de usuários, tocar mídias, integrar com outras aplicações e até mesmo ser compilado como aplicação nativa para diversos aparelhos e sistemas operacionais. Há muita procura e oferta de informações por essas tecnologias, isso ocorre devido a sua grande versatilidade, do crescimento em seu uso e por seu aumento de potencial, tornando-se difícil identificar os conteúdos úteis de acordo com a necessidade e nível de conhecimento. Vamos, então, conhecer os conceitos básicos dessas tecnologias de forma a gerar a compreensão geral, e permitir a busca e aprofundamento nos tópicos de interesse. 1. DESENVOLVIMENTO FRONT-END: 1.1 HTML5 O HTML5 é a quinta versão do Hypertext Markup Language. Lançada em 2014, a versão pode ser definida como uma linguagem de marcação para criação de páginas Web, de forma que conteúdos criados seguindo o padrão HTML podem ser interpretados e renderizados por navegadores (MAZZA, 2014). Apesar das primeiras versões da linguagem permitirem maior flexibilidade para escrita e interpretação das regras, houve uma maior rigidez na aplicação da sintaxe para as versões modernas, isso devido ao crescente aumento de elementos e ferramentas que a utilizam. Os documentos HTML podem ser salvos com as extensões .htm ou .html, sendo o último os mais comuns, entretanto, também podem ser entregues ao navegador como resultados de processamentos de linguagens de programação, como por exemplo PHP, Python, Ruby, dentre outras. Através desse processamento que grande parte dos sites não exibem a extensão do arquivo, entregando o documento final ao usuário com base em modelos HTML e dados dinâmicos, que permite a busca em bancos de dados. Independentemente da forma que foi gerado, todo documento HTML5 precisa ser constituído da declaração de tipo e de marcadores. A declaração para esta versão é a mais curta e simples, sendo necessário iniciar o documento com: <!DOCTYPE html> , não sendo necessário indicar número de versão ou url de padrão a ser seguido. Marcadores, ou 'tags' em inglês, são os elementos principais da linguagem HTML. Eles contêm abertura e fechamento, com exceção dos elementos com 'self closure', ou seja, aqueles que possuem autoclausura, sendo abertos e fechados no próprio marcador. Estritamente falando, o uso do termo elemento não se refere ao marcador em si, mas sim ao seu bloco, ou seja, abertura, atributos, conteúdo e fechamento. Esta definição, porém, não é seguida de forma rígida nos textos, artigos e livros. O formato padrão dos marcadores é constituído por: <marcador>conteúdo</marcador>. Ou seja, nome do marcador entre os caracteres '<' e '>' para abertura e os mesmos elementos com adição da barra invertida antes do nome do marcador para o fechamento. Sendo assim, um parágrafo que possui o marcador 'p' com o conteúdo: 'Este é o conteúdo do parágrafo', pode ser escrito da seguinte forma: <p>Este é o conteúdo do parágrafo</p>. De forma contrária, a tag com self closure terá o padrão <marcador />, com apenas um elemento que abre e fecha o marcador, também entre os caracteres '<' e '>', porém com adição barra invertida antes do caractere final. Um exemplo prático é a quebra de linha do marcador BR, que pode ser escrito como <BR />. Há a possível omissão da barra invertida para versões anteriores e flexíveis da linguagem de marcação. 1.1.1 Estrutura Básica Após a definição do 'doctype', que define o arquivo como documento que segue o padrão HTML5, é iniciada a sequência de marcadores que irão estruturar o documento. O elemento inicial que irá conter os demais elementos é o marcador HTML, que por sua vez, conterá os marcadores HEAD e BODY, cabeçalho e corpo do documento. O marcador HEAD, ou cabeçalho do documento, contém as metas informações sobre o documento, como o marcador TITLE, de título da página, lido e exibido pelos navegadores, além de outros elementos que irão apontar informações como data, autor, frequência de atualização, descrição, que podem não ser renderizados como conteúdo pelos navegadores, apesar de utilizados como o 'encoding', que aponta a forma de decodificação dos caracteres do documento. Há também marcadores inseridos nessa área que servem para requisitar outros arquivos ou inserir códigos e estilos diretamente na página. O marcador BODY, ou corpo do documento, contém as informações de conteúdo do documento, como parágrafos e imagens, porém essa área pode conter também definições e chamadas de estilos e scripts, além de comentários, que não serão renderizados como conteúdo pelo navegador. Abaixo segue exemplo de estrutura básica de documento HTML conforme padrões informados: <!DOCTYPE html> <html lang=”pt-br”> <head> <meta charset="utf-8" /> <title>Título da Página</title> </head> <body> <h1>Cabeçalho da Página</h1> <p>Parágrafo de texto da página.</p> <p>Parágrafo de texto com este link a seguir: <a href="/paginaASerCarregada.html>">texto clicável do link </a></p> </body> </html> Este documento acima será identificado pelo navegador como HTML5, pela definição de DOCTYPE e irá apresentar na aba superior o título ‘Título da Página’. A definição global do marcador HTML possui o atributo ‘lang’ que define a linguagem utilizada no documento, o que auxilia para traduções, indexaçõese leituras. Utilizamos, sempre, o valor ‘pt-br’ que indica a língua portuguesa utilizada no Brasil. Dentro da área de conteúdo, será apresentado o cabeçalho grande e abaixo serão exibidos dois parágrafos, porém o segundo possui um hiperlink para outra página. O marcador ‘A’ é utilizado para a criação de links, o conteúdo entre suas tags será exibido, e o endereço para carregamento da página está definido em um ATRIBUTO do marcador. Marcadores podem possuir múltiplos atributos, como de estilo (STYLE), definição de identificador único (ID), nome de classe (CLASS) e atributos específicos ao marcador. No caso do ‘A’, existe o atributo HREF, utilizado para definir o destino do link. Todos os conteúdos dentro dos marcadores serão tratados pelos navegadores seguindo um formato de codificação de texto (W3SCHOOLS). Esta definição é feita dentro do HEAD com o elemento ‘meta’ e atributo ‘charset’. O padrão é a utilização de UTF-8 e este será o formato considerado caso esse elemento não seja adicionado, porém para o tratamento de caracteres latinos, usa-se ISO- 8859-1, de forma que o elemento completo é escrito da seguinte forma: <meta charset="ISO-8859-1">. No modelo acima descrito, seria utilizado o formato padrão UTF-8. 1.1.2 Semântica Novos elementos estruturais foram padronizados com o HTML5, como header, nav, section, article, aside e footer, a serem inseridos dentro do marcador BODY. Segundo Mazza (2014), enquanto o marcador HEAD define o cabeçalho do documento, com informações para o navegador e buscadores, o elemento HEADER define o cabeçalho do conteúdo do portal, com o nome do site, por exemplo, além de englobar a busca e navegação. NAV, representa navegação, e será utilizado para englobar o bloco de itens de navegação, que por boas práticas, terá cada menu e link criado como item de lista (marcador LI) em lista não ordenada (marcador UL) para facilitar a navegação entre elementos e estilização. A tag FOOTER define o rodapé do elemento, podendo conter textos de direitos autorais, mapa do site, contato, logos e outras informações. O elemento ARTICLE define uma área da página para composição de bloco, como um formulário, post de fórum ou blog, comentários e outros. Já o SECTION é utilizado para englobar uma seção, contendo, ou não, o FOOTER, conteúdo ou até mesmo o HEADER. Por fim, ASIDE é utilizado bloco de conteúdo à parte do principal, mas relativo aos conteúdos ao seu redor, como por exemplo, um bloco de navegação ao lado do conteúdo principal. Fonte: W3Schools A figura apresentada exibi a estrutura bás abaixo do cabeçalho do site (header), uma área de conteúdo formada por seção (section) e artigo (article) e uma coluna lateral à direita (aside), com elementos relativos ou navegação secundária. Abaixo de todo o conteúdo, posiciona-se o rodapé (footer). 1.1.3 Cabeçalhos e Títulos Conforme já apontado, o elemento semântico para definição de cabeçalhos e títulos nos sites possui variações de tamanho de fonte e importância dentro do site, que obedecem uma hierarquia de compos representa o cabeçalho principal e em versões anteriores do HTML era definido que poderia haver apenas um por página, sendo reservado normalmente para dor LI) em lista não ordenada (marcador UL) para facilitar a navegação entre elementos e estilização. A tag FOOTER define o rodapé do elemento, podendo conter textos de direitos autorais, mapa do site, contato, logos e outras informações. E define uma área da página para composição de bloco, como um formulário, post de fórum ou blog, comentários e outros. Já o SECTION é utilizado para englobar uma seção, contendo, ou não, o FOOTER, conteúdo ou até mesmo o HEADER. Por fim, ASIDE é utilizado para definir um bloco de conteúdo à parte do principal, mas relativo aos conteúdos ao seu redor, como por exemplo, um bloco de navegação ao lado do conteúdo Fonte: W3Schools - HTML5 Semantic Elements A figura apresentada exibi a estrutura básica com navegação horizontal (nav) abaixo do cabeçalho do site (header), uma área de conteúdo formada por seção (section) e artigo (article) e uma coluna lateral à direita (aside), com elementos relativos ou navegação secundária. Abaixo de todo o conteúdo, se o rodapé (footer). 1.1.3 Cabeçalhos e Títulos Conforme já apontado, o elemento semântico para definição de cabeçalhos e títulos nos sites possui variações de tamanho de fonte e importância dentro do site, que obedecem uma hierarquia de composição de elementos. O h1 representa o cabeçalho principal e em versões anteriores do HTML era definido que poderia haver apenas um por página, sendo reservado normalmente para dor LI) em lista não ordenada (marcador UL) para facilitar a A tag FOOTER define o rodapé do elemento, podendo conter textos de direitos E define uma área da página para composição de bloco, como um formulário, post de fórum ou blog, comentários e outros. Já o SECTION é utilizado para englobar uma seção, contendo, ou não, o FOOTER, para definir um bloco de conteúdo à parte do principal, mas relativo aos conteúdos ao seu redor, como por exemplo, um bloco de navegação ao lado do conteúdo ica com navegação horizontal (nav) abaixo do cabeçalho do site (header), uma área de conteúdo formada por seção (section) e artigo (article) e uma coluna lateral à direita (aside), com elementos relativos ou navegação secundária. Abaixo de todo o conteúdo, Conforme já apontado, o elemento semântico para definição de cabeçalhos e títulos nos sites possui variações de tamanho de fonte e importância dentro do ição de elementos. O h1 representa o cabeçalho principal e em versões anteriores do HTML era definido que poderia haver apenas um por página, sendo reservado normalmente para o título do site, porém na última versão é aceito que esse elemento seja repetido para título de seções importantes. Dessa forma, os blocos e seções devem considerar a descida na hierarquia de elementos para objetos dentro ou abaixo em sua estrutura. Como por exemplo, uma seção de notícias que possui título da seção e lista de títulos das notícias seria definida como título da seção em segundo peso, h2, e cada uma das notícias da lista em terceiro peso, h3, demonstrando em seu código a hierarquia a que pertencem, o que facilita a navegação em programas leitores de tela. Um dos principais atributos para os cabeçalhos é TITLE, que oferece uma caixa de texto com seu conteúdo quando o usuário posiciona a seta do mouse sobre o elemento e é lido como descrição em leitores de tela. Seu uso pode ser feito como no exemplo a seguir: ‘<h2 title=”Lista de notícias sobre seção Nome”>Notícias</h2>’. 1.1.4 Parágrafos Um dos mais utilizados marcadores em páginas web é o de parágrafo, utilizando a letra P. Apesar de ser possível ter o texto renderizado apenas o inserindo diretamente na página HTML é esta tag a que irá separar esse conteúdo como um bloco de texto isolado e permitir seu posicionamento e estilização via CSS. Há diversos atributos que podem ser inseridos para ajustes de fonte diretamente no marcador, porém é indicado que sejam utilizados apenas quando necessários, para que sejam feitos via CSS com maior flexibilidade e reuso. O uso do elemento pode ser feito como: ‘<p> Texto do parágrafo que irá aparecer na página </p>’. 1.1.5 Listas Há dois tipos de listas: as ordenadas, OL (ordered list, em inglês); e as não ordenadas, UL (unordered list, em inglês). A primeira pode ser considerada como uma sequência e a segunda como um grupo de elementos. Apesar de poder ser alterado via estilização, a tag OL exibirá para cada item o posicionamento do elemento, sendo o padrão via números. As listas são blocos que serão iniciadas por OL ou UL e para cada item listado deve ser utilizado o marcador LI. Desta forma uma lista ordenada com trêselementos pode ser escrita como: <ol type=”1”> <li> primeiro </li> <li> segundo </li> <li> terceiro </li> </ol> A lista acima define uma lista de três itens que serão exibidos 1. Primeiro, 2. Segundo e 3. Terceiro, um abaixo do outro caso não exista estilo que define diferente. O atributo TYPE é utilizado para alterar o elemento ordenador da lista, sendo o padrão numérico como acima exemplificado. Outros tipos são A, a I e i, sendo que os dois primeiros utilizam caracteres do alfabeto para ordenar e os outros dois utilizam numerais romanos. A caixa da letra do tipo aponta se deve ser utilizado caixa alta ou baixa para esse numerador. Assim, para três itens, o tipo A irá listar, A, B, C e sua sequência, enquanto que o tipo i irá listar, i, ii, iii. Listas não ordenadas são também utilizadas para a criação de menus de navegação, por seu agrupamento e facilidade para estilização. 1.1.6 Links Um dos principais fatores de sucesso para as páginas de internet foi sua capacidade de conexão de elementos e outras páginas e mídias, com os hiperlinks, hoje chamados apenas de links. O marcador utilizado para iniciar um link é A, e o conteúdo entre os marcadores será exibido na página além de, por padrão, informar ao navegador para alterar a seta do mouse quando sobre esse elemento. O elemento de link precisa ter um atributo que indique para onde encaminhará ao ser clicado, sendo este o HREF. Outros atributos importantes para esse marcador é o TARGET, que indicam o alvo de abertura com diversas opções, sendo as duas principais: se o item deve ser carregado na própria página com valor _self, ou se deve ser carregado em nova janela ou aba do navegador. Dessa forma, um link com texto ‘ir ao google’ que direcione para o buscador Google com abertura em nova aba do navegador pode ser escrito da seguinte forma: ‘<a href=”http://www.google.com” target=”_blank”>ir ao google</a>’. É uma boa prática que páginas externas sejam abertas em novas abas ou janelas para que o usuário possa continuar navegando no site sem ser obrigado a voltar à página anterior. Esse item pode ser tratado com aviso no link indicando a saída do site atual. 1.1.7 URL absolutas e relativas O exemplo de link de ‘http://www.google.com’, indica a url do buscador google, que é chamada de url absoluta. Segundo W3Schools, um endereço de internet é composto de protocolo de acesso, por exemplo ‘HTTP’, nome do hospedeiro (host, que comumente chama-se www), ‘www’, e domínio, ‘google.com’. Também poderíamos passar caminhos, ‘/images’, parâmetros, ‘search?q=’, ou subdomínio (utilizado no lugar o www antes do domínio), ‘images.google.com’. Ao utilizarmos o endereço completo estamos garantindo o protocolo, host, domínio além da página; porém não é necessário informar todos esses itens, principalmente, quando consideramos navegação interna no mesmo site ou com sites que respondem para mais de um endereço (sendo espelhamos ou com domínios diferentes). Sendo assim, também podemos referenciar os endereços de forma relativa, e podemos escrevê-la em relação a três itens diferentes: relativa à posição atual, relativa à raiz do domínio e relativa ao protocolo. A url relativa à posição atual pode ser utilizada com o uso diretamente do nome da página como ‘menu.html’ ou ‘./menu.html’, a url será requisitada no mesmo domínio e diretório que a página com o objeto de link. É possível ainda definir se deseja retornar ou avançar em caminhos, com uso de ‘../menu.html’ para retornar um diretório e com uso de ‘/nome-do-diretório/menu.html’ ou até mesmo uma junção deles como ‘../../imagens/menu.html’ para retornar dois caminhos ou diretórios, e acessar menu.html em imagens. De forma contrária, a url relativa à raiz do domínio utiliza de ‘/’ no início de seu endereço, o que irá se referir ao primeiro nível do domínio, independentemente de onde estiver a página atual, assim o link ‘/menu.html’ sempre será encaminhado para o ‘menu.html’ no primeiro nível do domínio, também chamado de raiz. Por fim, a url relativa ao protocolo possuirá todos os demais itens da url absoluta, porém iniciará com ‘//’ ou invés de ‘http://’, ‘https://’ ou outro protocolo utilizado. Esse uso é feito para manter o mesmo protocolo da página atual para acessar o link, ou seja, uma página que utilize protocolo HTTPS e que possua um link para ‘//www.google.com’ irá encaminhar mantendo o protocolo para ‘https://www.google.com’. Essas relações de referências de endereços são utilizadas não apenas para links, mas também para endereços de imagens e outras mídias, assim como para arquivos externos de css e javascript. 1.1.8 Imagens Apesar do início das páginas de internet consistir apenas de texto, rapidamente houve a inserção de imagens, mesmo que outras mídias só tenham recentemente recebido tags específicas, a IMG foi introduzida em primeiras versões do HTML, e essa tag possui autoclausura, não existindo um marcador de fechamento. Assim como o link, é necessário informar um atributo que indique o caminho da imagem a ser exibida, e que será absoluto ou relativo, de forma que as imagens de outros domínios possam serem exibidas, assim como arquivos que estejam no mesmo nível da página. O atributo que indica os caminhos das imagens é o SRC. Um atributo muito importante para a acessibilidade é o ALT, que indica o texto alternativo para ser exibido quando as imagens não forem carregadas, e como a descrição do imagético para leitores de tela. Apesar de não ser obrigatório seu uso, é altamente recomendado e um item de validação checado com alta importância. Dessa forma, para exibirmos uma imagem do domínio Lorem Pixel (site que exibe imagens aleatórias para exemplos) podemos utilizar o elemento a seguir: ‘<img src=”http://lorempixel.com/400/200/” alt=”Imagem aleatória de Lorem Pixel” />’. Conforme informado anteriormente, o fechamento da tag ocorre no próprio elemento de abertura através de ‘/>’. Diversos outros atributos podem, ou não, ser adicionados aos elementos de imagens, principalmente os de tamanho, com WIDTH (largura) e HEIGHT (altura), porém estes são indicados para quando o tamanho da imagem é estrutural à página e não é possível utilizar estilização via CSS externa, como no caso de e-mails. 1.1.9 Tabelas O uso de tabelas é recomendado apenas para exibir conteúdo tabular, e não para a construção da estrutura do site, algo que ocorreu no início do desenvolvimento de páginas e ainda é o padrão para e-mails. Tabelas possuem seus próprios marcadores, iniciando pela criação da tabela com TABLE e com adição, entre suas tags de abertura e fechamento, dos demais elementos da tabela. Apesar de existirem diversos marcadores de tabela iremos apresentar apenas os dois principais: TR e TD. A tag TR significa table row, ou seja, para cada linha de tabela, deve-se abrir e fechar o marcador; enquanto que TD, table data, ou os dados da tabela, existem um para cada célula e são contidos em suas respectivas linhas. O padrão a ser obedecido é que existirão, obrigatoriamente, o mesmo número de células por linha, dessa forma, ao criar a primeira linha com duas células, a segunda linha deverá ter duas células para o fechamento correto. Para efetuar a mesclagem de células, fazendo com uma célula ocupe o espaço de duas ou mais, existe a propriedade colspan, que inserida dentro da tag TD indica quantas colunas essa célula deverá representar. 1.1.10 Formulários Outra estrutura dos primórdios do HTML são os formulários, assim como tabelas, há uma tag que abre e fecha englobando os demais elementos, neste caso, utilizamos FORM. Dentro dos formulários há diversas opções a serem utilizadas, porém as principais são INPUT, com dados de entrada e LABEL, que irá nomear o campo de entrada. Enquanto que a tag LABEL define um texto e possui atributoFOR que indica para qual elemento ela se refere, a tag INPUT possui diversos tipos em seu atributo TYPE. O tipo principal é o TEXT, que permite que sejam inseridos dados alfanuméricos, mas de suma importância é o tipo SUBMIT, obrigatório para que os dados possam ser enviados, o texto do botão é inserido no atributo VALUE. Novos tipos foram adicionados como PASSWORD para senhas (com exibição de asterisco para não mostrar a senha digitada na tela), o EMAIL que irá efetuar validação no envio (se existe ‘@’ e ‘.’ no campo digitado), além de NUMBER e TEL que quando acessados de dispositivos móveis abrem o teclado numérico para facilitar o preenchimento. No elemento FORM há dois atributos importantes para o envio, a tag ACTION que define a ação do formulário, normalmente indicando um link de uma página que irá tratar os resultados do formulário. O endereço inserido pode ser relativo ou absoluto. O atributo METHOD indica como os dados serão enviados, com duas opções GET e POST (W3C). Enquanto GET envia todos os dados do formulário de forma visível como parâmetros na URL, o formato POST não exibe os dados e envio de forma invisível ao usuário. Para dados de campo de busca e outros que podem ser salvos para novo acesso posterior, é indicado o uso de GET, porém para dados sensíveis como senhas e cartões é imprescindível o uso de POST para não expor os usuários. Para exemplificar, segue abaixo o código de formulário (FORM) que envia via método (METHOD) POST com ACTION a página ‘form.php’. Ele contém três campos de entrada (INPUT) e um botão de envio (INPUT de tipo SUBMIT). <form action="/form.php" method="post"> <label for="nome">Nome</label> <input type="text" name="nome"> <label for="email">Email</label> <input type="email" name="email"> <label for="tel">Telefone</label> <input type="tel" name="tel"> <input type="submit" value="Enviar"> </form> 1.1.11 Principais funcionalidades novas no HTML5 Além desses atributos de tipos de inputs, foram adicionados diversos outros no HTML5, incluindo tags de formulários, de estrutura (algumas já citadas como NAV e FOOTER) e de funcionalidades de mídia. Dentre as principais temos: EMBED, AUDIO e VIDEO. Enquanto o primeiro é uma tag que serve para incorporar na página aplicações não HTML, como objetos em flash, as outras duas servem para trazer tocadores de áudio e vídeo nativos ao navegador sem necessidade de aplicações externas. Para o uso dos tocadores basta adicionar a fonte de mídia, com a tag SOURCE que indicará o caminho em seu atributo SRC e tipo em TYPE. Para a exibição de controles de volume, tempo e outros basta inserir a propriedade CONTROLS em AUDIO ou VIDEO. É necessário apontar que como não há uma padronização de formato de mídia para áudio e vídeo entre os navegadores é indicado referenciar diferentes formatos para que ocorra funcionamento correto nos principais navegadores. Indicamos pelo menos o uso dos formatos ‘mp3’ e ‘ogg’ para áudio e ‘mp4’ e ‘ogg’ para vídeo. Esta documentação cobre apenas uma parte das estruturas, marcadores e atributos do HTML5, mas o suficiente para que seja possível criar um documento estruturado para receber estilos e códigos, além da base para compreender tutoriais mais profundos e avançados. 2. CSS O HTML, por mais completo que seja com suas estilizações e funcionalidades próprias não consegue implementar aplicações web modernas sozinho, sendo necessário complemento de estilização do CSS e funcionalidades do JavaScript, conforme apontado por SERRA (2011). Essa separação de funções é fundamental para melhor organização, divisão de tarefas e reaproveitamento de partes de código. O CSS3 é a terceira versão do Cascading Style Sheets ou folha de estilos em cascata, nome de uma linguagem utilizada para formatação de estilo de documentos HTML. A estilização funciona através de um seletor e as propriedades que serão alteradas. Os seletores são os próprios marcadores HTML, seus atributos, elementos genéricos como asterisco ‘*’, ou nome de classes de identidade dos elementos definidos no HTML. Dessa forma, para definir o tamanho de parágrafos em 20 pixels basta utilizar o código: ‘p { font-size: 20px; }’. O seletor ‘p’ irá abranger todos os parágrafos do documento e a propriedade ‘font-size’ define o tamanho de fonte. Note que ao final de cada propriedade utilizamos um ponto e vírgula ‘;’ para as separar. As classes são definidas através da propriedade CLASS no elemento HTML e seus valores podem ser compartilhados por vários elementos na mesma página. Ao contrário, as identidades, definidas por ID, são únicas por página. Em CSS, os seletores são formados por ponto, ‘.’, antecedendo o nome da classe sem espaços e ‘#’, antecedendo o nome da identidade. Assim o objeto com classe ‘texto’ e identidade ‘único’ pode ser referenciado via CSS por ‘. Texto’ para estilos gerais e ‘#unico’ para estilos que irão afetar apenas esse objeto na página. 2.1. Aplicando CSS ao HTML Há três formas diferentes de aplicar o código CSS ao HTML, sendo elas: diretamente no elemento; embutido no documento HTML; ou em arquivo externo. Os estilos inline são os adicionados diretamente dos elementos através do atributo style, nosso exemplo seria aplicado somente ao parágrafo em específico da seguinte forma ‘<p style="font-size: 20px">texto</p>’. Já os estilos embedados serão aplicados junto com o seletor para todos os elementos aplicáveis através da tag STYLE, preferencialmente inserida dentro do HEAD. O mesmo exemplo seria aplicado da seguinte forma ‘<style> p {font- size: 20px;} </style>’. Por fim, o método preferencial é o uso de estilo através do arquivo externo, de forma que facilita a gestão e compartilhamento de estilo entre várias páginas. Para tal é necessário criar um arquivo específico com extensão CSS onde serão inseridos todos os estilos e a referência a este arquivo no documento HTML, através do marcador LINK com atributos HREF e REL apontando o caminho do arquivo e o tipo. Dessa forma, o mesmo exemplo teria o código p {font-size: 20px;} dentro do arquivo ‘estilo.css’ e o vínculo dentro de HEAD da seguinte forma ‘<link rel="stylesheet" href="estilo.css">’. Para facilitar a compreensão dos códigos haverá a utilização de comentários que serão ignorados pelos navegadores. Para inserir comentários basta inserir comentário entre “/*” “*/”, da seguinte forma>: “ /* comentário em css */ “. 2.2. Box Model Os elementos HTML podem ser classificados em bloco e em linha, onde os elementos em linha são adicionados lado a lado com quebra para a linha de baixo quando acaba o espaço horizontal, e em bloco quando são adicionados um sobre o outro. Os elementos de bloco também possuem propriedades do chamado Box Model, ou modelo de caixa. Essas propriedades são bordas (BORDER), margens (MARGIN), espaçamento (PADDING) e definição de altura (HEIGHT) e largura (WIDTH). Fonte: Autoria Própria - Box Model Essas propriedades seguem a ordem da imagem acima, no qual o conteúdo pode ter largura e altura definidos. A essas medidas serão adicionados os espaçamentos do padding, posterior a ele teremos o tamanho da borda e por último as margens. Todas as propriedades poderão ser adicionadas aos quatro lados ou ao topo (- top), direita (-right), abaixo (-bottom) ou esquerda (-left), por exemplo, ‘border- right’, ‘padding-top’ ou ‘margin-bottom’. Essa ordem também é seguida para definir os itens um a um na mesma propriedade geral, por exemplo: ‘padding: 10px 15px 10px 15px;’. Temos 10px acima e abaixo e 15px nas laterais, devido às repetições podemos emitir as 3 e 4 posições, de forma a escrever apenas ‘padding: 10px 15px;’. Apesar dos elementos de linha, como SPAN e A, não poderem alterar as propriedades de box model por padrão, é possível alterar para visualização de caixacom a propriedade DISPLAY, que além de poder esconder o objeto com valor ‘NONE’, pode alterar para ‘BLOCK’ (bloco), ‘INLINE’ (linha) e ‘INLINE- BLOCK’ (posicionamento como linha, lado a lado, mas com capacidade de definir elementos do box model). Esses itens de espaçamento e margem podem ser definidos em pixels ou em porcentagem e auxiliam no posicionamento de elementos flutuantes. Os objetos podem flutuar através da propriedade FLOAT, com valores RIGHT (direita) e LEFT (esquerda), sendo que objetos serão alinhados ao lado de objetos flutuantes, a menos que exista definição do contrário com a propriedade CLEAR, que também pode definir RIGHT, LEFT ou BOTH (ambos os lados). 2.3. Cores As cores em CSS podem ser definidas por nomes (em inglês), como red, blue e green para vermelho azul e verde, mas o uso principal é com o uso do padrão hexadecimal antecedido de ‘#’. Esse padrão consiste de três blocos de 2 caracteres para cada cor, cada um com valores de 0 a F, com base em padrão RGB (red, green, blue) com valores de 0 a 255 para cada cor e a combinação dos valores dessas três cores forma a cor final. Desta forma, a cor #FF0000 é equivalente a red, pois possui o máximo de vermelho e o mínimo para verde e azul. Outro padrão utilizado é o RGBA, que possui os três valores de cores escritos de 0 a 255 e um canal alpha, ou seja, de transparência, de 0 a 1. O mesmo exemplo vermelho, mas com 50% de transferência seria escrito como rgba (255, 0, 0, 0.5). 2.4. Unidades de medida Os valores utilizados nestes exemplos foram escritos em pixels com px, porém esse valor é fixo sem variações para tamanhos de tela ou resoluções diferentes, o que pode atrapalhar a leitura e impedir o layout do site de se adequar. Há indicação da criação de fontes em formato relativo ao objeto pai através do uso de EM, valor decimal onde 1 representa 100%, assim a fonte 1,25em é 25% maior do que fonte de seu objeto pai. Com isso é possível ajustar todas as fontes do site para melhor leitura alterando apenas a fonte da área de conteúdo ou de todo documento HTML. Para larguras e posicionamentos flutuantes, a definição mais recomendada é a de uso de porcentagem, escrita de 0 a 100 com o símbolo ‘%”. Assim, um objeto com 50% de largura e margens direita e esquerda em 25% ficará centralizado mesmo que seu objeto ou a tela sejam reajustados. 2.5. Backgrounds Apesar do uso de fundos já serem antigos no CSS com cores sólidas ou até mesmo imagens e seu dimensionamento e posicionamento, segundo Guerrero e Macedo (2013), o CSS3 trouxe o uso de gradientes com a propriedade linear- gradient; porém, assim como outras propriedades ainda não padronizadas entre todos os navegadores, é necessário o uso de múltiplas propriedades para que diversos navegadores possam renderizar de forma similar (MAZZA, 2014). Há hoje bibliotecas que auxiliam nessa escrita, além de plugins para editores de estilo e sites que geram online essas variações com base nos estilos informados. 2.6. Media Queries As media queries são uma recomendação W3C, desde 2012, e sua compatibilidade com navegadores aumentou consideravelmente nos últimos anos, tornando-se um padrão para todos os frameworks e sistemas modernos. Há diversos parâmetros utilizados, porém os principais são ‘media’ com definição de meio, sendo ‘screen’ para telas e ‘print’ para impressão e a condição de tamanho de tela com min-width e max-width. Com o passar dos anos tornou-se comum o uso de ‘mobile first’, um padrão de desenvolvimento que prioriza o desenvolvimento inicial para telas pequenas com as condições de largura de media queries para ajustes nos maiores tamanhos até, por fim, ajuste para monitores grandes e televisões. Devido à variedade de resoluções e tamanhos de tela de smartphones, tablets, computadores e televisões, não há um padrão único de variações de media queries, mas um framework muito utilizado na internet chamado Bootstrap, criado inicialmente pela equipe do Twitter, realiza ajustes para as larguras de 380, 480, 760, 992 e 1200 pixels, ou seja, o site é desenvolvido para telas até 380, e depois ajustado a cada uma dessas quebras de tamanho. Com isso, as exceções só são consideradas para dispositivos com telas maiores. Além de media queries e fundos, o CSS3 trouxe também novos suportes e efeitos como transformações, transições e animações, algumas com maior abstração, permitindo a definição de um título para o conjunto de transformações e chamada no objeto a esse nome, porém tratam-se de conhecimentos mais avançados que serão buscados após compreensão dos elementos básicos citados nessa documentação. 3. JavaScript O JavaScript é uma linguagem de programação criada originalmente em 1995, por Brendan Eich, e tornou-se padrão ECMA em 1997, sendo ECMAScript seu nome oficial. Em 2016, foi liberada a sua sétima versão, conhecida como ECMAScript 7, ou ESCMAscript 2016, porém ainda não há suporte completo na maioria dos navegadores. É importante apontar que JavaScript é completamente diferente de Java, sendo este nome apenas uma jogada de marketing para aproveitar o sucesso dessa outra linguagem (BALDUINO, 2014). O JavaScript é uma linguagem orientada a objetos multiplataformas, pois além de poder ser utilizada em aplicações web pelo usuário em seu navegador, também pode ser utilizada em servidores, comunicando-se com bancos de dados e arquivos de sistemas diretamente. Como todas as linguagens de programação de alto nível, o script segue a sintaxe básica constituindo um programa. Um programa de computador segue um algoritmo, ou seja, uma lista de instruções a serem executadas pelo computador. Na sintaxe mais básica podemos apontar que suas sentenças são separadas por ponto e vírgula ';' e consistem, ou não, de valores, operadores, expressões, palavras-chave e comentários. Esses valores podem ser constantes ou variáveis. Com o JavaScript é possível alterar conteúdos, atributos, estilos, além de esconder, exibir, e adicionar elementos à estrutura do HTML. 3.1. Aplicando JavaScript ao HTML A aplicação do JavaScript no HTML pode ser feita através da inserção da tag SCRIPT ou em arquivos externos com a chamada para o arquivo com ‘<script src="script.js"></script>’, substituindo ‘script.js’ pelo nome do arquivo. É altamente indicado manter o script separado da HTML, pois facilita a edição, leitura, além de possibilitar o cacheamento desses arquivos estáticos de forma mais agressiva do que para conteúdos dinâmicos, como o próprio documento html. Há diversas formas de exibição como retorno do JavaScript, ele pode alterar o conteúdo de um elemento HTML com ‘innerHTML’, pode escrever no documento HTML renderizado com ‘document.write()’, pode retornar caixas de alerta com ‘window. alert()’ ou ainda retornar no console de erros do navegador com ‘console.log()’, para auxiliar o desenvolvimento com a descoberta de erros. 3.2. DOM-Document Object Model O HTML DOM ou somente DOM (Document Object Model), é o modelo de objetos do documento que oferece propriedade e método para manipulação dos objetos pelo JavaScript. Nesse conceito, quando o documento HTML é carregado, tudo se torna um objeto, seja o documento, elementos, atributos ou textos. O objeto do documento em si é o pai de todos os demais elementos, e através dele é possível realizar a manipulação dos objetos. Ele está contigo dentro do objeto 'window', então é possível acessá-lo com 'window.document'. Importante ressaltar que, para alteração elementos do HTML é ideal aguardar que estes já tenham sido carregados, portanto, existem diversos eventos que permitem disparar os comandos apenas após carregado, como o ‘windows.onload’. 3.3 Sintaxe de Programação Como toda linguagem de programação, o JavaScript possui uma sintaxe própria. Os tipos deitens mais básicos são numéricos (Number) e textuais (String), e as funções dos operadores serão diferentes para cada um deles por sua natureza. A declaração de variáveis é feita com uma chamada própria declarando ‘var nomeVariavel;’, ainda é possível atribuir um valor a esse item com o sinal de igual seguido de um valor válido, como, por exemplo: ‘var numero = 10;’. Os títulos das variáveis são sensíveis a caixa alta e baixa, dessa forma ‘nomeVariavel’ é diferente de ‘nomevariavel’. O valor da variável pode ser diretamente um objeto, sendo um dos principais métodos o getElementById("nomeDaIdentidade"), no qual será retornado o elemento cujo id é "nomeDaIdentidade". A partir dessa variável, é possível chamar os métodos desse objeto sem ser necessário o capturar novamente a cada manipulação. 3.4. Operadores É possível utilizar operadores aritméticos sobre as variáveis, de forma que se utiliza os sinais ‘+’, ‘-’, ‘*’ e ‘/’ para efetuar adição, subtração, multiplicação e divisão entre dois itens. Os operadores ‘++’ e ‘--’ servem para incrementar e decrementar a variável e não é necessário um outro objeto. Dessa forma, utiliza-se ‘var x = 2; var y = x +2;’ e o valor de y será 4, para ‘var x =2; x++;’ o valor de x será igual a 3. Também existem operadores relativos, que utilizam os sinais ‘=’, ‘+=’, ‘-=’, ‘*=’ e ‘/=’, representando copiar o valor, adicionar o valor ao valor atual, diminuir o valor do valor atual, multiplicar pelo valor e dividir o valor atual pelo elemento seguinte. Esses operadores evitam a repetição da variação. Assim o que seria representado por ‘x = x + y’, será escrito como ‘x+=y’. As variáveis de texto, strings, também possuem operadores, utilizando ‘=’ para substituir o valor atual ou ‘+=’ para concatenar o valor da string ao final da variável atual. 3.5. Controle de fluxo Todo algoritmo possui um fluxo de sequência, possuindo uma estrutura de controle sequencial, no qual todas as linhas de códigos são lidas e executadas em sequência, em uma estrutura de controle condicional, com blocos de código sendo executados apenas caso uma ou mais condições sejam atendidas, e estruturas de controle de repetição, onde um bloco de código será repetido uma quantidade definida de vezes ou até que um condicional seja atendido. Para o controle sequencial não é necessário inserir nenhum tipo de código ou bloco, sendo o padrão. Porém existem elementos específicos para os outros dois. Para iniciar um bloco de controle condicional, o JavaScript oferece as declarações IF (se, em português, cria a condição), ELSE IF (caso contrário então, caso o condicional anterior não for atendido, verifica essa condição) e ELSE (caso contrário, executa se todas as condições anteriores não forem atendidas). var x = 2; if (x > 3) { bloco de código 1 } else if (x == 2) { bloco de código 2 } else { bloco de código 3 } No bloco de código acima, temos a definição da variável ‘x’ com o valor numérico dois. Há um primeiro condicional que retorna falso, pois x não é maior do que três. Sendo falso o primeiro condicional, o segundo será verificado, e este retorna verdadeiro, pois a variável é igual a dois (note que o símbolo comparativo é ‘==’). Como o segundo condicional é verdadeiro não há entrada no bloco do ‘ELSE’, dessa forma, apenas o bloco de código 2 será executado. Para estrutura de controle de repetição o JavaScript oferece diversas opções, como o ‘for in’, o ‘do while’ ou o ‘for’ simples, que será explicado a seguir. Para criar um laço de repetição com FOR são necessários três parâmetros, a variável e seu valor, a condição que a variável seja testada, e o passo de atualização realizado a cada ciclo do laço. Assim podemos declarar a variável como ‘i = 0’, colocar como condição ‘i < 5’ e definir o passo como ‘i++’ o que irá incrementar a variável em 1 a cada ciclo, conforme visto abaixo. for (var i = 0; i < 5; i++) { console.log(i); } O código acima irá realizar o laço de repetição cinco vezes, pois inicia em 0 e irá aumentar em 1 a cada passo até se tornar 5, e retornar falso para a condição. No bloco de código é definido que o valor da variável deve ser entregue no console do navegador, então teremos como resultado os valores 0, 1, 2, 3 e 4. 4. jQuery O jQuery é uma biblioteca JavaScript criada para simplificar a criação de scripts de manipulação de DOM, executados no navegador dos usuários. Também tem como objetivo auxiliar na compatibilidade entre navegadores diferentes, integração com CSS3 e reaproveitamento de código através do uso de plugins específicos, além do uso de plugins de terceiros compartilhados (BALDUINO, 2014). O uso dessa biblioteca exige que o arquivo com seu código seja vinculado à página com uso da tag SCRIPT dentro do HEAD. Isso pode ser feito através de link externo, preferencialmente com uso de CDN de versão atualizada, que pode ser encontrada no próprio site do jQuery (https://jquery.com) ou com link relativo, caso baixe a biblioteca e faça upload em seu próprio servidor. 4.1. Função $ O elemento '$' é o método de chamada para criação de objeto jQuery, e a sintaxe básica é '$("seletor"). método()', no qual o seletor pode ser chamado como seletores de CSS, por exemplo, para buscar elemento com ID específico, basta utilizar no CSS, é possível que ocorra seleção para diversos elementos do DOM (GUERRERO; MACEDO, 2013). 4.2. Seletores Existem muitos seletores que podem ser utilizados com jQuery, mas os principais são por identidade “#id”, por classe “.classe”, o próprio marcador “p” e por seletor genérico para todos os elementos “*”, com a soma de seletores, apenas os separando por vírgula. Listas completas de seletores serão encontradas em páginas de documentação, e podem ser muito úteis, pois há seletores extremamente específicos como ‘:odd’, ‘:even’, ‘:last’ e ‘:first’ que seguidos de um seletor de marcador, capturam todos os elementos pares, ímpares, o último e o primeiro, respectivamente. Dessa forma, ‘$(“p:last”)’ irá selecionar o último elemento de parágrafo. 4.3. Manipulação, Efeitos e Animações A biblioteca oferece diversas manipulações de elementos DOM como métodos prontos disponíveis a serem chamados para qualquer objeto selecionado. Dois exemplos são o de esconder e exibir, com ‘hide()’ e ‘show()’. Assim como a simplificação de captura de clique com ‘click’, de forma que basta iniciar este método e indicar uma função a ser executada após o clique, conforme o código abaixo. $("#botao").click(function() { $(".texto").hide(); }); O bloco de código acima descreve uma função jQuery($), que seleciona o objeto de identidade ‘botao’ e irá adicionar um evento que acompanhará caso este seja clicado. Ao ser clicado, será iniciada a função que seleciona o objeto de classe ‘texto’ e requisita que este seja escondido (hide). Efeitos e animações também serão, ou não, atingidos com um simples método, através de ‘fade’, ‘slide’, ‘animate’ e outros. O método animate, por exemplo, irá apenas requisitar informações sobre a animação, como, por exemplo, que o objeto que será movido para baixo em 20 pixels, como no código a seguir ‘$(".texto").animate({bottom: '20px'});’ 4.4. Plugins e Bibliotecas Mesmo que a biblioteca jQuery ofereça diversas funcionalidades por conta, ela também é base para a criação de plugins de funcionalidades específicas. Uma lista completa pode ser obtida no repositório de plugins do próprio jQuery pelo site (https://plugins.jquery.com). Algumas funcionalidades serão em formulários, outros, para facilitar a comunicação com outros serviços e APIs, através de Ajax e serão escolhidos de acordo com a necessidade de cada projeto. Para carrosséis de imagens e texto, indicamos o plugin Slick. O uso de plugins segue documentação própria, sendonecessário versão de jQuery compatível com o plugin e requisição de javascript do plugin após a biblioteca, e inserção de chamada de inicialização própria. Considerações finais Conforme observado através da leitura dessa documentação, é visto que as ferramentas disponíveis ao desenvolvedor de Front-End são muitas, e seus conceitos são de grande complexidade. Embora HTML e CSS não sejam linguagens de programação, possuem sintaxe e regras próprias que devem ser obedecidas para uma correta estruturação e estilização da página, principalmente se considerarmos que as páginas podem se adequar para dispositivos móveis. O HTML5 trouxe novos marcadores como section, nav, header e footer, e novas funcionalidades como tocadores de áudio e vídeo embutidos na própria página sem necessidade de plugins externos (FLASH); enquanto que CSS3 trouxe novos seletores, animações, gradientes e efeitos. Porém, mesmo que já lançados a alguns anos, ainda não existe compatibilidade completa nos principais navegadores, e muitas propriedades precisam ser inseridas para a mesma funcionalidade, para maior garantia de funcionamento. O JavaScript e o jQuery teve seu uso aumentado nos últimos anos, e sua linguagem foi melhorada continuamente com foco, não apenas em aplicações web, mas também na compilação para aplicações nativas e integrações com sistemas. Dessa forma, essa documentação não cobriu os temas em profundidade, mas espera ter entregue todos os conceitos básicos dessas ferramentas de forma que seja possível maior compreensão e aprofundamento nos assuntos de interesse sem grande dificuldade. Referências BALDUINO, Plínio. Dominando JavaScript com jQuery. Editora Casa do Código, 2014. GUERRERO, José Antonio Camacho;MACEDO, Alessandra Alaniz. Explorando HTML5, CSS3 e JQueryMobile no Controle e Monitoramento de Casas Inteligentes - Capítulo 2, ReasearchGate. Novembro de 2013. Disponível em: <https://www.researchgate.net/publication/282085536_Explorando_HTML5_CS S3_and_JQuery_mobile_for_intelligent_home_control.> Acesso em: 10 maio 2017. MAZZA, Lucas. HTML5 e CSS3 Domine a web do futuro. Editora Casa do Código, 2014. SERRA, Ricardo Jorge Maia e Serra. Interfaces tácteis baseadas em HTML5/CSS3/JavaScript - Dissertação de Mestrado e Integrado em Engenharia Informática e Computação da Faculdade de Engenharia da Universidade do Porto, 2011. Disponível em: <https://repositorio- aberto.up.pt/bitstream/10216/63293/1/000149242.pdf.> Acesso em: 12 maio 2017. W3C. W3C - World Wide Web Consortium. Disponível em: <https://www.w3.org/.> Acesso em 7 maio 2017. W3SCHOOLS. W3Schools Online Web Tutorials. Tutoriais e Guia de Referências de HTML, CSS, JavaScript, XML. Disponível em: <https://www.w3schools.com/.> Acesso em: 7 maio 2017.
Compartilhar