Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 2 SUMÁRIO 1 INTRODUÇÃO ..................................................................................... 7 2 EVOLUÇÃO HISTÓRICA DO HTML ................................................... 8 2.1 História do HTML .......................................................................... 8 2.2 Diferenças entre as versões HTML ............................................. 13 2.2.1 HTML versus HTML5 ................................................................... 13 2.2.2 HTML versus XHTML ................................................................... 14 2.2.3 HTML5 versus XHTML ................................................................. 16 2.3 Mudanças do HTML5 .................................................................. 17 2.3.1 Semântica .................................................................................... 18 2.3.2 Áudio e vídeo ............................................................................... 21 2.3.3 Gráficos e efeitos em 3D .............................................................. 23 2.3.4 Atributos HTML ............................................................................ 23 2.3.5 Geolocalização ............................................................................. 24 2.3.6 Armazenamento de dados ........................................................... 24 2.3.7 APIs para comunicação ............................................................... 25 2.3.8 Integração .................................................................................... 25 3 FOLHA DE ESTILO EM CASCATAS (CSS) ...................................... 27 3.1 Conceito de CSS ......................................................................... 27 3.1.1 Funcionamento e vantagens do CSS ........................................... 28 3.1.2 Regra de estilização ..................................................................... 29 3.2 Leiautes em HTML com CSS ...................................................... 30 3.2.1 Importação de folhas de estilo ..................................................... 31 3.2.2 Tipografia ..................................................................................... 34 3 3.2.3 Background .................................................................................. 35 3.2.4 Dimensão de elementos .............................................................. 36 3.2.5 Posicionamento ............................................................................ 39 4 TRABALHANDO COM LINKS E FORMULÁRIOS ............................. 41 4.1 Desenvolvimento de páginas HTML com links e âncoras ........... 41 4.1.1 Links relativos .............................................................................. 41 4.1.2 Links absolutos ............................................................................ 42 4.1.3 Links para e-mails ........................................................................ 43 4.1.4 Links em imagens ........................................................................ 43 4.1.5 Atributo target ............................................................................... 43 4.2 Desenvolvimento de páginas HTML com formulários ................. 44 4.2.1 Tag <form> ................................................................................... 45 4.2.2 Diferentes componentes de um formulário................................... 46 4.2.2.1 Tag input ................................................................................... 46 4.2.2.2 Tipo text, email e password ....................................................... 47 4.2.2.3 Tipo checkbox e radio ............................................................... 49 4.2.2.4 Tipos hidden e file ..................................................................... 50 4.2.2.5 Tipos button e submit ................................................................ 51 4.2.2.6 Tag <select> ............................................................................. 52 4.2.2.7 Tag <textarea> .......................................................................... 53 5 TRABALHANDO COM LISTAS E TABELAS ..................................... 54 5.1 Listas HTML ................................................................................ 54 5.1.1 Lista ordenada em HTML ............................................................. 55 5.1.2 Lista não ordenada em HTML ...................................................... 58 5.1.3 Lista de descrição HTML ............................................................. 60 4 5.2 Tabelas em HTML ....................................................................... 60 5.3 Páginas Web com listas e tabelas .............................................. 67 6 MANIPULANDO BROWSER OBJECT MODEL, COOKIES E TEMPORIZADORES EM JAVASCRIPT ............................................................... 70 6.1 Browser object model .................................................................. 70 6.2 Objetos do BOM .......................................................................... 72 6.2.1 Objeto document .......................................................................... 75 6.2.2 Objeto frames ............................................................................... 75 6.2.3 Objeto history ............................................................................... 76 6.2.4 Objeto screen ............................................................................... 76 6.2.5 Objeto navigator ........................................................................... 76 6.2.6 Objeto location ............................................................................. 77 6.3 Cookies e temporizadores em JavaScript ................................... 78 7 COMPONENTES DO REACT ........................................................... 82 7.1 Renderização de componentes ................................................... 84 7.2 Props ........................................................................................... 85 7.2.1 Props entre componentes ............................................................ 87 7.3 Criação de página com componentes do React .......................... 88 8 Objetos nativos do JavaScript ........................................................... 94 8.1 Objetos nativos ........................................................................... 94 8.2 Tipos de objetos nativos ............................................................. 96 8.2.1 Objeto global ................................................................................ 97 8.2.2 Objetos fundamentais .................................................................. 98 8.2.3 Objetos de números e datas ...................................................... 100 8.2.4 Objetos de processamento de texto ........................................... 100 5 8.2.5 Objetos de coleção .................................................................... 100 8.2.6 Objetos de dados estruturados .................................................. 101 8.2.7 Objetos de controle de abstrações ............................................. 101 8.2.8 Objetos de reflexão .................................................................... 101 8.3 Aplicação de objetos nativos em códigos JavaScript ................ 102 8.3.1 Math ........................................................................................... 102 8.3.2 Date ........................................................................................... 104 8.3.2.1 RegExp ................................................................................... 106 9 DOM: DOCUMENT OBJECT MODEL ............................................. 109 9.1 Definição ...................................................................................110 9.2 Estrutura da árvore DOM .......................................................... 112 9.2.1 Acessando o DOM ..................................................................... 113 9.2.2 Propriedades fundamentais e tipos de dados ............................ 116 9.3 Interfaces do DOM: HTML, CSS e Core ................................... 117 10 INTRODUÇÃO AO REDUX .......................................................... 119 10.1 Conceitos básicos Do redux ..................................................... 119 10.1.1 Estados de um componente ..................................................... 120 10.1.2 Arquitetura Flux ........................................................................ 122 10.2 Principais características do Redux .......................................... 124 10.2.1 Action ....................................................................................... 124 10.2.2 Store ........................................................................................ 125 10.2.3 Reducer.................................................................................... 126 10.2.4 Conexão entre componente e Redux ....................................... 127 10.3 Aplicação do Redux com o React ............................................. 129 10.3.1 Exemplo de aplicação .............................................................. 130 6 11 HERANÇA .................................................................................... 134 11.1 Object.prototype........................................................................ 134 11.2 Métodos associados ao protótipo de objeto .............................. 138 11.2.1 Método hasOwnProperty.......................................................... 138 11.2.2 Método isPrototypeOf .............................................................. 139 11.2.3 Método propertyIsEnumerable ................................................. 140 11.2.4 Método toString e toLocaleString ............................................. 141 11.2.5 Método valueOf ........................................................................ 141 11.3 Aplicações com herança ........................................................... 142 12 CONHECENDO O REACT ........................................................... 145 12.1 Função JSX .............................................................................. 147 12.2 Página HTML usando React e JSX .......................................... 150 12.3 Configurando o ambiente .......................................................... 153 13 EVENTOS NO REACT ................................................................. 154 13.1 Eventos React e DOM .............................................................. 154 13.1.1 Eventos DOM ........................................................................... 155 13.1.2 Arquitetura de eventos DOM .................................................... 157 13.1.3 Eventos React .......................................................................... 158 13.2 Passagem de parâmetros para manipuladores de eventos ...... 160 13.3 Exemplos de aplicações ........................................................... 164 14 REFERÊNCIAS BIBLIOGRÁFICAS ............................................. 167 7 1 INTRODUÇÃO Prezado aluno! O Grupo Educacional FAVENI, esclarece que o material virtual é semelhante ao da sala de aula presencial. Em uma sala de aula, é raro – quase improvável - um aluno se levantar, interromper a exposição, dirigir-se ao professor e fazer uma pergunta, para que seja esclarecida uma dúvida sobre o tema tratado. O comum é que esse aluno faça a pergunta em voz alta para todos ouvirem e todos ouvirão a resposta. No espaço virtual, é a mesma coisa. Não hesite em perguntar, as perguntas poderão ser direcionadas ao protocolo de atendimento que serão respondidas em tempo hábil. Os cursos à distância exigem do aluno tempo e organização. No caso da nossa disciplina é preciso ter um horário destinado à leitura do texto base e à execução das avaliações propostas. A vantagem é que poderá reservar o dia da semana e a hora que lhe convier para isso. A organização é o quesito indispensável, porque há uma sequência a ser seguida e prazos definidos para as atividades. Bons estudos! 8 2 EVOLUÇÃO HISTÓRICA DO HTML HTML, ou Hyper-Text Markup Language, é o que cria a estrutura básica da World Wide Web. HTML consiste em marcadores codificados chamados tags, que cercam e diferenciam trechos de texto, indicando a função e a finalidade do que está marcado. Algumas tags especificam como as informações são exibidas no documento, enquanto outras criam links entre documentos e, ainda, outras, conteúdo na Internet. HTML5 é a última revisão do padrão HTML desenvolvida pelo World Wide Web Consortium. 2.1 História do HTML Em 1980, nasceram os princípios fundamentais do HTML a partir de um primitivo modelo de hipertexto conhecido como Enquire, escrito em linguagem Pascal, no CERN (Conseil Européen pour la Recherche Nucléaire — Organização Europeia para a Pesquisa Nuclear), por meio das pesquisas de Tim Berners-Lee, que, na época, trabalhava na divisão de computação da instituição (Figura 1). Com o auxílio de Robert Cailliau, em 1990, Tim Berners-Lee construiu o primeiro navegador/editor, chamado de WorldWideWeb, e criou o protocolo HTTP (HyperText Transference Protocol — Protocolo de Transferência de Hipertexto) para distribuir conteúdo na rede. O HTTP era alimentado com uma nova linguagem de marcação, o HTML — baseado no SGML (Standard Generalized Markup Language), uma linguagem amplamente aceita para a estruturação de documentos e da qual o HTML herdou as tags de título, cabeçalho e parágrafo. A grande novidade foi (a) marcação a com o elemento href, que permitia a ligação (link) entre vários documentos (SAGA, 2020) 9 Figura 01 - Esta máquina NeXT foi usada por Tim Berners-Lee, em 1990, para executar o primeiro servidor Web. Fonte: History... ([2018], documento on-line). O programador Marc Andreessen, que logo fundaria Netscape, inicia o projeto de seu próprio navegador: o Mosaic. Em dezembro de 1992, Andreessen, participando de uma lista de discussão mundial (WWW-talk) para difundir as propostas de Lee sobre o HTML, propôs a implementação de uma tag para imagens: a tag img (FLATSCHART, 2011). Um documento chamado “Hypertext Markup Language” foi publicado em 1993 pela IETF (Internet Engineering Task Force). Nesse mesmo ano, o navegador Mosaic foi lançado, permitindo a exibição de imagens, listas e formulários (FLATSCHART, 2011). Em 1994, realizou-se, em Genebra, a primeira conferência mundial sobre Web, a World Wide Web Conference, da qual surgiu a especificação HTML 2.0. Marc Andreessen e Jim Clark fundaram a Netscape Communications, apontando para o nascimento do primeiro navegador de alcance global. No final de 1994, foi criado o W3C (World Wide Web Consortium — Consórcio World Wide Web) para coordenar o desenvolvimento de padrões abertos para a Web (FLATSCHART, 2011). 10 Com a criação do W3C, o desenvolvimento do HTML mudou de local novamente. Uma primeira tentativa abortada de estender o HTML em 1995, conhecida como HTML 3.0, abriu caminho para uma abordagem mais pragmática, conhecida como HTML 3.2, que foi concluída em 1997. O HTML 4.01 se seguiu no final de 1999 (RAGGETT, 1997; RAGGETT; LE HORS; JACOBS, 1999). No ano seguinte, a associação ao W3C decidiu parar de desenvolver HTML e, em vez disso, começou a trabalhar em um equivalente baseado em XML, chamado XHTML. Esse esforço começou com uma reformulação do HTML 4.01 em XML, conhecido como XHTML 1.0, que não adicionou novos recursos – exceto a nova serialização –, e foi concluído em 2000(PEMBERTON et al., 2000). Após o XHTML 1.0, o foco do W3C passou a facilitar para outros grupos de trabalho estenderem o XHTML, sob a bandeira da Modularização XHTML. Paralelamente, o W3C também trabalhou em uma nova linguagem que não era compatível com as linguagens HTML e XHTML anteriores, denominada XHTML 2.0 (BIRBECK et al., 2010). Na época em que a evolução do HTML foi interrompida, em 1998, partes da API para HTML desenvolvidas pelos fornecedores de navegadores foram especificadas e publicadas sob o nome DOM Nível 1 (em 1998) e DOM Nível 2 Principal e DOM Nível 2 HTML (a partir de 2000 e culminando em 2003). Esses esforços acabaram com algumas especificações do Nível 3 do DOM publicadas em 2004, mas o grupo de trabalho foi fechado antes que todos os rascunhos do Nível 3 fossem concluídos (WOOD et al., 1998; LE HORS et al., 2000; LE HORS et al., 2004). Em 2003, a publicação do XForms, uma tecnologia que foi posicionada como a próxima geração de formulários da Web, despertou um interesse renovado na evolução do próprio HTML, em vez de encontrar substitutos para ele. Esse interesse nasceu da constatação de que a implantação do XML como tecnologia da Web limitava-se a tecnologias totalmente novas (como RSS e Atom posterior), em vez de substituir as tecnologias implantadas existentes (como HTML) (DUBINKO et al., 2000). 11 Uma prova de conceito para mostrar que era possível estender os formulários do HTML 4.01 para fornecer muitos dos recursos introduzidos pelo XForms 1.0, sem exigir que os navegadores implementassem mecanismos de renderização incompatíveis com as páginas da Web em HTML existentes, foi o primeiro resultado disso. O interesse foi renovado. Nessa fase inicial, enquanto o rascunho já estava disponível ao público, e eram solicitadas sugestões de todas as fontes, a especificação estava sob os direitos autorais da Opera Software (HICKSON, 2005). A ideia de que a evolução do HTML deveria ser reaberta foi testada em um workshop do W3C, em 2004, onde foram apresentados alguns dos princípios subjacentes ao trabalho em HTML, bem como a proposta preliminar, cobrindo apenas recursos relacionados a formulários. A proposta foi rejeitada com o argumento de que ela conflitava com a direção escolhida anteriormente para a evolução da Web. A equipe e os membros do W3C votaram para continuar desenvolvendo substituições baseadas em XML (JACOBS; WALSH, 2004). Pouco tempo depois, Apple, Mozilla e Opera anunciaram conjuntamente sua intenção de continuar trabalhando no esforço sob o guarda-chuva de um novo local chamado WHATWG (Web Hypertext Application Technology Working Group — Grupo de Trabalho de Tecnologia de Aplicações de Hipertexto para Web). Uma lista de discussão pública foi criada, e o rascunho foi movido para o site WHATWG. Os direitos autorais foram posteriormente alterados para pertencerem em conjunto aos três fornecedores e permitirem a reutilização da especificação (WEB HYPERTEXT APPLICATION TECHNOLOGY WORKING GROUP, 2019). O WHATWG foi baseado em vários princípios fundamentais, em particular que as tecnologias precisam ser compatíveis com versões anteriores, que especificações e implementações precisam corresponder, mesmo que isso signifique alterar a especificação em vez das implementações, e que as especificações precisam ser detalhadas o suficiente para que as implementações possam alcançar interoperabilidade completa sem engenharia reversa (WEB HYPERTEXT APPLICATION TECHNOLOGY WORKING GROUP, 2019). 12 O último requisito, em particular, exigia que o escopo da especificação HTML incluísse o que havia sido especificado anteriormente em três documentos separados: HTML 4.01, XHTML 1.1 e HTML nível 2 do DOM. Também significava incluir significativamente mais detalhes do que anteriormente havia sido considerado a norma (WEB HYPERTEXT APPLICATION TECHNOLOGY WORKING GROUP, 2019). Em 2006, o W3C manifestou interesse em participar do desenvolvimento do HTML 5.0 e, em 2007, formou um grupo de trabalho encarregado de trabalhar com o WHATWG no desenvolvimento da especificação HTML. Apple, Mozilla e Opera permitiram ao W3C publicar a especificação sob os direitos autorais do W3C, mantendo uma versão com uma licença menos restritiva no site WHATWG (WEB HYPERTEXT APPLICATION TECHNOLOGY WORKING GROUP, 2019). Por vários anos, os dois grupos trabalharam juntos sob o mesmo editor: Ian Hickson. Em 2011, os grupos chegaram à conclusão de que tinham objetivos diferentes: o W3C queria traçar uma linha para os recursos de uma Recomendação HTML 5.0, enquanto o WHATWG desejava continuar trabalhando em um padrão para HTML, mantendo continuamente a especificação e adição de novos recursos. Em meados de 2012, uma nova equipe de edição foi introduzida ao W3C para cuidar da criação de uma Recomendação HTML 5.0 e preparar um Rascunho de Trabalho para a próxima versão HTML (HICKSON et al., 2014). Em 28 de outubro de 2014, o W3C publicou o HTML5 como uma recomendação. O HTML passou a ser um ambiente para a execução de aplicativos complexos, em vez de uma linguagem de marcação simples como costumava ser. Os desenvolvedores começaram a aproveitar esses recursos em vez de plug-ins, como o Adobe Flash ou o Silverlight, da Microsoft, menos conhecido, o que levou ao abandono gradual do suporte a plug-ins pelos fabricantes de navegadores (HICKSON et al., 2014). Novas versões do HTML passaram a ser recomendadas pelo W3C. Em 1 de novembro de 2016, o W3C publicou o HTML 5.1, como uma recomendação (FAULKNER et al., 2016a). Em 18 de agosto de 2016, o W3C publicou o Primeiro Projeto Público de Trabalho do HTML 5.2 (FAULKNER et al., 2016b). Em 14 de 13 dezembro de 2017, o W3C publicou o HTML 5.2, como uma recomendação (FAULKNER et al., 2017). No mesmo dia, 14 de dezembro de 2017, o W3C também publicou o Primeiro Rascunho Público de Trabalho do HTML 5.3 (AAS et al., 2017). 2.2 Diferenças entre as versões HTML As versões do HTML representam aprimoramentos padronizados na linguagem fundamental da World Wide Web. À medida que as novas tecnologias são desenvolvidas, assim como métodos mais eficientes para alcançar os resultados desejados das páginas da Web, desenvolvedores e administradores adotam padrões de linguagem aceitos e os designam usando números para trazer ordem e uniformidade à Web (SAGA, 2020) Os termos HTML, XHTML e HTML5 são frequentemente usados em web design. A maioria das pessoas iniciantes em web design geralmente acha esses termos confusos e não sabe qual linguagem dessas três aprender. A confusão é compreensível, porque todas elas são linguagens de marcação e essencialmente servem ao mesmo objetivo (SAGA, 2020) 2.2.1 HTML versus HTML5 O HTML5 foi desenvolvido por um grupo conhecido como WHATWG, com o objetivo de aprimorar as versões HTML anteriores e resolver alguns problemas de compatibilidade entre navegadores. Usaremos 'HTML' para se referir às versões anteriores ao HTML5 (WEB HYPERTEXT APPLICATION TECHNOLOGY WORKING GROUP, 2019). As principais diferenças entre HTML e HTML5 são as seguintes: O HTML5 oferece melhor suporte para várias formas de mídia, como áudio e vídeo, fornecendo tags para elas. O HTML não contém essas tags e conta com plug-ins de terceiros. 14 O HTML não permite que o JavaScript seja executado no navegador. O HTML5 resolveu esse problema introduzindo a API JS Web Worker. Agora, devido ao suporte nativo ao JavaScript, as páginas da Web podem ser mais bem-projetadas, usando scripts de front-end para aprimorar a experiência do usuário. O HTML5 inclui novos atributos de entrada, como e-mail, URLs, data e hora, pesquisa, etc. O HTML5 é independente do dispositivo e tem melhor compatibilidade com o navegador do que as versões HTML anteriores. O HTML5 apresenta melhores regras de análise (a análise é o processamentode texto) e maior flexibilidade dessa análise do que o HTML. O HTML5 também facilita a localização do local sem plug-ins de terceiros. O HTML5 também contém suporte nativo para gráficos vetoriais, portanto não há necessidade de software de terceiros, como o Adobe Flash. Em resumo, o HTML5 é apenas uma versão melhor do HTML, com recursos e funcionalidades adicionais (SAGA, 2020) 2.2.2 HTML versus XHTML XHTML é uma família de tipos e módulos de documentos atuais e futuros, que reproduzem e estendem o HTML 4. Os tipos de documento da família XHTML são baseados em XML. XHTML 1.0 é o primeiro tipo de documento na família XHTML, uma reformulação dos três tipos de documentos HTML 4, como aplicativos do XML 1.0. Ele deve ser usado como uma linguagem para conteúdo compatível 15 com XML e, se algumas diretrizes simples forem seguidas, operar em agentes de usuário compatíveis com HTML 4 (PEMBERTON et al., 2000). XHTML foi desenvolvido como uma extensão para HTML. Não há muitas diferenças entre HTML4 e XHTML, sendo este último basicamente uma versão mais rígida do primeiro. As principais diferenças entre HTML e XHTML são as seguintes: O HTML4 permite que alguns elementos omitam a tag final. As tags finais são adicionadas ao fechar uma parte do texto, como um parágrafo. Eles geralmente são simbolizados com uma barra invertida (por exemplo, a tag de abertura de um parágrafo é <p>, enquanto a tag final é </p>). XHTML requer que todos os elementos incluam a tag final. O HTML4 permite a sobreposição de certos elementos. XHTML não permite que nenhum elemento se sobreponha. Os valores dos atributos (como tamanho da fonte) devem ser citados em XHTML, mesmo que sejam numéricos. O HTML não inclui valores entre aspas para atributos Os atributos não podem ser minimizados em HTML. Há uma pequena diferença na maneira como os elementos vazios são manipulados. Embora as diferenças acima sejam as mais importantes, também existem outras muito sutis, mas são realmente raras. Você sempre pode verificar a documentação do XHTML para obter mais informações. O argumento é que o XHTML foi projetado para resolver alguns problemas em HTML, incorporando alguns recursos do XML (SAGA, 2020) 16 2.2.3 HTML5 versus XHTML Como XHTML e HTML são praticamente os mesmos, as diferenças entre XHTML e HTML5 são as mesmas que as existentes entre HTML4 e HTML5. No entanto, a seguir, estão algumas das diferenças mais sutis entre HTML5 e XHTML (PIETERS, 2014): Enquanto XHTML faz distinção entre maiúsculas e minúsculas, o HTML5 não (HTML também não faz distinção entre maiúsculas e minúsculas). O HTML5 tem um tipo de documento muito mais simples que o XHTML e o HTML (o DOCTYPE diz ao navegador como interpretar os dados). O HTML5 é compatível com todos os navegadores, enquanto o XHTML não. O HTML5 é mais brando, seguindo os passos do HTML4, do que o XHTML. O HTML5 é mais adequado para dispositivos móveis, como tablets e telefones, enquanto o XHTML é mais adequado para telas de computador. Como conclusão, todas as três são linguagens de marcação com apenas alguns recursos presentes em cada um que não estão presentes nos outros. Embora o XHTML tenha sido projetado para ser uma versão melhor do HTML4, incorporando alguns recursos do XML, o HTML5 acabou sendo muito melhor do que os dois e é, de longe, a linguagem de marcação mais usada atualmente devido à adição de muitos recursos importantes. O principal argumento é que todos eles são apenas versões diferentes do padrão HTML das linguagens de marcação, mas com estilos e recursos sintáticos diferentes. Se você é iniciante em web design, HTML4 e XHTML não são recomendados, e faria sentido aprender primeiro o 17 HTML5 por causa de sua compatibilidade aprimorada e seu uso generalizado (SAGA, 2020) 2.3 Mudanças do HTML5 O W3C projetou o padrão HTML5 com vários objetivos: substituir plug-ins de multimídia proprietários por padrões abertos, permitindo que os aplicativos da Web comportem-se mais como aplicativos nativos, adicionando recursos para serviços baseados em localização e fazendo alterações na sintaxe que separa o conteúdo da apresentação (SAGA, 2020) O HTML5 foi feito para ser simples, implicando em uma sintaxe extremamente mais simples e limpa. A simples declaração do tipo de documento (DOCTYPE) foi apenas mais uma das facilidades incluídas na nova versão. Agora, você precisa inserir apenas um < ! DOCTYPE html > no início do seu documento, e tudo estará pronto. Além disso, a sintaxe da HTML5 é compatível também com a HTML4 e XHTML1. A linguagem apresenta, também, um elemento novo, o <canvas>, responsável por substituir muitas das implementações antes feitas em Flash. Isso faz muitos desenvolvedores considerarem que esse já se encontra obsoleto e futuramente morto (SAGA, 2020) A extensão de tags a um tool de novos e interessantes recursos fez uma grande diferença na linguagem. Tags como: <header> e <footer>, que estendem a funcionalidade de tabelas agora para a página como um todo <section>, <article> e <nav> que permitem marcar áreas específicas dos layouts, <vídeo> e <áudio>, para uma inclusão melhorada de conteúdos multimídia nas páginas, e <menu> e <figure>, para bem arranjar textos, imagens e menus, trazem todo um conjunto de implementações e funcionalidades bem-pertinentes para a Web de hoje (SAGA, 2020) Além disso tudo, a remoção de outros recursos, como as tags <center>, <big>, <font>, etc., fazem com que a responsabilidade do CSS aliada à nova linguagem só aumente, otimizando o desenvolvimento front-end (SILVA, 2011). 18 Como em todas as atualizações anteriores do padrão HTML, os navegadores HTML5 são compatíveis com versões anteriores. As páginas mais antigas continuam sendo exibidas em novos navegadores, e não será necessário reescrever nenhum documento existente. O novo padrão é vasto. Por essa razão, o W3C dividiu essas novidades em oito áreas tecnológicas. Isso ajuda na homologação do padrão e suporte dos fabricantes, que estão sendo feitos em porções (SAGA, 2020) 2.3.1 Semântica Trata-se de um grande desafio para os mecanismos de busca da atualidade classificar a importância e relevância das informações contidas nas páginas. Com esse intuito, novas tags foram criadas, dando maior importância semântica aos textos. Essas tags se comportam como a tradicional tag <div>, que leva este nome por dividir o texto em blocos, até então anônimos. Agora, os mesmos podem ser classificados, seguindo as principais possibilidades (Figura 2): <section> — apresenta a sessão, o tema da qual os artigos têm em comum; <nav> — trata-se dos elementos para a navegação do visitante, basicamente o menu; <article> — contém o texto do artigo, o conteúdo propriamente dito; <aside> — informações relacionadas às do artigo, mas que precisam ser separadas do contexto, como notas de rodapé; <header> — contém o cabeçalho; <footer> — contém o rodapé do artigo; <time> — armazena a data e hora daquela informação; <mark> — serve para marcar parte do texto, colocando-o em destaque ou para uma referência. 19 Figura 02 - Exemplo de disposição das tags Fonte: Poyatos (2014, documento on-line). Quando tratamos do uso de formulário, a tag <input> já é amplamente atualizada para caixas de texto, botões de seleção e de acionamento. Entretanto, quando fosse necessário validar uma informação em uma caixa de texto, longos trechos de codificação JavaScript faziam-se necessários. Destacam-se, portanto, alguns tipos novos e interessantes para a tag <input>. Vários foram criados e já possuem validação nativa por parte do navegador Web (Figura 3). 20 Figura 3 - Exemplo de codificação JavaScript Fonte: Poyatos (2014, documentoon-line). O exemplo utiliza os tipos email, number e date, embora existam outros. Repare, também, nos novos atributos placeholder e required.O placeholder é responsável por exibir mensagens, como marca d'água na caixa de texto que se encontra vazia. Já o required (linha 11) quer dizer obrigatório, ou seja, exige o preenchimento da caixa de texto, impedindo o formulário de ser submetido enquanto a condição não for satisfeita. O exemplo faz uso, também, dos novos atributos min e max (linha 13),úteis para se estabelecer intervalos de números para o tipo number (Figura 4). 21 Figura 04 - Exemplo anterior em execução. Novos tipos de caixa de texto validados nativamente. Fonte: Poyatos (2014, documento on-line) 2.3.2 Áudio e vídeo O novo recurso mais comentado do HTML5 é o suporte nativo para reprodução de áudio e vídeo no navegador. Os navegadores atuais contam com plug-ins, como Adobe Flash, Apple QuickTime e Microsoft Silverlight, para reproduzir conteúdo multimídia. Para usuários de desktop, esses plug-ins funcionam bem e são relativamente transparentes de usar; para o crescente número 22 de usuários que deseja assistir a vídeos em seus iPhones, iPads ou Blackberries, não há plug-ins disponíveis. O HTML5 resolveu o problema do plug-in, exigindo suporte interno para vídeo em navegadores e permitindo que os designers insiram as tags <video> e <audio> em suas páginas. Essas tags contêm informações que o navegador pode usar para interpretar e renderizar o conteúdo multimídia (SILVA, 2011). Observe o exemplo a seguir, que demonstra o uso do elemento audio: <audio src="som.mp3"> </audio> Somente isso, simples e direto, sem necessidade de plug-ins, Flash, Quick Time, Windows Media Player e qualquer outro sistema a ser considerado quando se pretende incorporar som em uma página Web. Basta declarar o caminho para o arquivo de som no atributo src do elemento. O som é reproduzido com as funcionalidades nativas do navegador. O elemento audio admite os seguintes atributos: atributos globais, src, controls, crossorigin, preload, autoplay, mediagroup, loop e muted (HICKSON et al.; SILVA, 2011). O atributo src destina-se a indicar o caminho para o arquivo de som a ser incorporado na página. O atributo controls destina-se a fazer com que o navegador renderize os controles nativos para o usuário interagir com som. Esse atributo é de uso obrigatório, salvo nos casos em que pretendemos criar controles personalizados. O atributo crossorigin destina-se a indicar a origem do arquivo de som a ser incorporado na página. Os valores possíveis são Anonymus e use-credentials (SAGA, 2020) O atributo preload destina-se a indicar como o autor espera que seja o carregamento do som na página, tendo em vista otimizar a experiência do usuário. 23 2.3.3 Gráficos e efeitos em 3D O elemento canvas é outro novo recurso do HTML5. Os desenvolvedores podem combinar gráficos vetoriais, imagens, áudio e vídeo em um espaço predefinido na página. Esses elementos podem ser programados via JavaScript, e os usuários poderão interagir com eles via mouse e teclado. A renderização será realizada ao lado do cliente, garantindo um processamento mais suave e menos gargalos na rede. O elemento canvas pode conter coisas tão simples, quanto formas ou linhas geométricas, e coisas tão complexas, quanto jogos e modelos em camadas que podem ser manipulados pelo usuário (SILVA, 2011). É necessário que o desenvolvedor faça uma análise criteriosa para uso desse elemento. Não devemos usá-lo se houver um elemento mais apropriado. Por exemplo: para marcar o cabeçalho ou o topo de um site, ainda que ele tenha sido projetado com uso maciço de imagens, talvez seja mais apropriado o uso do elemento h1 devidamente estilizado, e não o canvas. 2.3.4 Atributos HTML Novos atributos foram introduzidos pela HTML5, vários existentes foram redefinidos e muitos elementos tiveram a lista de atributos suportados ampliada. A HTML4.01 prevê 118 atributos, e a HTML5 expandiu essa lista. Existem atributos que são globais, ou seja, comuns a todos os elementos da HTML. Um deles é o accesskey, que se destina a definir uma tecla de atalho para ativar ou dar foco ao elemento quando o usuário navega com auxílio do teclado. O atributo class destina-se a definir uma classe para o elemento com a finalidade de servir de referência para estilização e scripts. Por fim, o atributo contenteditable foi inventado pela Microsoft e implementado em seus navegadores desde a versão 5, reconhecido e adotado pela HTML5. Admite os valores true, false e inherit, que definem se o conteúdo do elemento é editável ou não, ou se sua 24 condição de edição é herdada. A edição se faz no próprio agente de usuário que renderiza o conteúdo (SILVA, 2011). 2.3.5 Geolocalização Geolocalização é uma funcionalidade que, apesar de ter sido lançada no ano de 2008, ganhou destaque e começou a ser difundida na mesma época em que a HTML5 ganhou seu espaço e começou a ser estudada e aplicada pela comunidade de desenvolvimento Web. Talvez essa coincidência tenha sido a responsável pela ideia de que a geolocalização tenha sido criada pelo HTML5 (SILVA, 2011). Os recursos de geolocalização do HTML5 são de particular interesse de desenvolvedores e usuários de dispositivos móveis. A localização geográfica foi definida como "a arte de descobrir onde você está no mundo e (opcionalmente) compartilhar essas informações com as pessoas em quem você confia". Ao incluir ferramentas para localização geográfica no navegador, o HTML5 facilita a criação de aplicativos que sabem onde os usuários estão, o que está por perto e como eles podem chegar aonde querem ir. Os aplicativos podem incluir mapas e orientações, compras e entretenimento e ferramentas de redes sociais. Embora existam preocupações legítimas de privacidade com esses recursos, deve-se observar que a especificação de design atual exige que os usuários escolham explicitamente permitir que os aplicativos de localização geográfica saibam onde estão (SILVA, 2011). 2.3.6 Armazenamento de dados O HTML5 também tem suporte para bancos de dados SQL ao lado do cliente e cache offline. Isso é particularmente importante para usuários móveis, pois a maioria tem conectividade e largura de banda limitadas em seus dispositivos. Um exemplo desse conceito de “aplicativo em cache local” seria um conjunto de 25 calendários que permite que os usuários baixem seus dados atuais, façam ajustes em seus dispositivos móveis e, posteriormente, carreguem na próxima vez que houver uma conexão disponível. Os aplicativos podem armazenar gráficos e códigos no dispositivo local, garantindo tempos de carregamento rápidos e tráfego de rede mínimo (SILVA, 2011). 2.3.7 APIs para comunicação Outro novo recurso do padrão HTML5 é a capacidade de criar aplicativos da Web que se comportam mais como locais. Alguns recursos, como gerenciamento de arquivos de arrastar e soltar e armazenamento local, permitirão que os desenvolvedores criem aplicativos baseados na Web, que se integram perfeitamente ao computador do usuário. Com HTML5, os usuários podem fazer upload e download de arquivos simplesmente arrastando-os para a janela do navegador (SILVA, 2011). 2.3.8 Integração Um dos grandes problemas no envio de arquivos pela Web (upload) foi finalmente resolvido com o chamado xmlHttpRequest ao se enviar arquivos muito grandes, não se tinha uma ideia de progresso desse envio (VAN KESTEREN, 2012). O mérito é de um novo evento incluído na API, onprogress, especificamente no atributo upload. O mesmo recebe um objeto que possui o atributo lengthComputable, que traz informações de progresso que podem ser exibidas em uma barra de progresso (novidade também a tag <progress>, específica para esse fim)(SILVA, 2011). A integração homem-máquina também recebeu novidades. O recurso de drag 'n’ drop (arrastar-e-soltar), tão utilizado em interfaces gráficas dos sistemas operacionais, agora pode ser utilizado em páginas e aplicações Web. Um elemento 26 pode ser considerado dragable (“arrastável”), podendo, até mesmo, transportar informações contidas nele para outros elementos (que chamaremos aqui de “alvo”). Muitos são os recursos trazidos pela tecnologia HTML5 e pela nova geração de navegadores Web. Portanto, muitas são as oportunidades de seu uso, que podem ir desde experiências mais ricas de navegação e interatividade em um website até avançadíssimos jogos eletrônicos baseados em Web. Animações e streaming de áudio e vídeo, antes possíveis apenas pelo plug-in proprietário Adobe Flash, agora são realidade de forma nativa. Tratando em particular dos jogos eletrônicos, WebSockets ou SSE trazem uma troca de informações ágil, essencial para partidas com múltiplos jogadores. Animações realizadas usando Canvas, webGL ou recursos do CSS3, acompanhados por uma envolvente trilha sonora reproduzida pelo novo suporte de streaming de áudio, utilizando-se dos eventos de toque em tela, acelerômetro e recurso de drag 'n’ drop, farão os jogos eletrônicos baseados em Web alcançarem patamares possíveis outrora apenas por jogos instaláveis em sistemas operacionais (SAGA, 2020) Fallbacks e condicionais, verificando a existência da API (como em muitos exemplos citados neste capítulo), farão com que até mesmo visitantes oriundos de navegadores mais antigos possam acessar sua página ou aplicação, embora não tenham a mesma experiência. Frameworks como o Modernizr (SILVA, 2011) auxiliam nos fallbacks e podem providenciar polyfills, que são a possibilidade de preencher a falta de suporte a alguns recursos da HTML5 por outros mais antigos ou plug-ins (SAGA, 2020) Os novos recursos podem ser muito úteis em layout responsivo – trata-se de criar versões do website planejadas para vários tamanhos de tela e processadores, ou seja, em um único código, criar páginas que se adaptem às telas que vão desde pequenos smartphones até televisores de muitas polegadas. 27 3 FOLHA DE ESTILO EM CASCATAS (CSS) 3.1 Conceito de CSS Arquivos CSS permitem uma melhor organização do código fonte de páginas da internet, armazenando a maior parte de códigos referentes à aparência da página. CSS — do inglês, cascading style sheet, ou, na tradução, “folha de estilo em cascatas” — é um formato de arquivos que permite o armazenamento de estilos para documentos Web. Arquivos CSS foram projetados para trabalhar em conjunto com os HTML (Figura 5), separando o armazenamento do conteúdo de páginas HTML dos códigos relacionados à aparência e ao estilo, como tamanho de textos, espaçamentos, fontes e cores de elementos. Tal separação tem por objetivo facilitar a edição e manutenção de Websites com uma grande quantidade de páginas em que o leiaute é mantido. Figura 05 - Trabalho do CSS em conjunto com o HTML. Fonte: Jossnat/Shutterstock.com. 28 3.1.1 Funcionamento e vantagens do CSS Para que você possa compreender como CSS funciona, é necessário, primeiramente, entender como um navegador lê uma página HTML. Segundo How CSS... (2019), o carregamento de uma página ocorre em seis etapas: (i) o navegador (browser) carrega o documento HTML de um servidor na Internet ou de um arquivo local; (ii) a seguir, converte o documento HTML em um modelo de objeto de documento (DOM); (iii) são carregados recursos vinculados, como imagens, vídeos incorporados e folhas de estilo CSS; (iv) é feita a análise do arquivo CSS, levando-se em consideração os seletores e as regras de estilo que devem ser aplicadas a eles, como elementos, classes, IDs e assim por diante; (v) a árvore de renderização DOM é construída usando a estrutura do HTML e os estilos obtidos no arquivo CSS; e (vi) a página completa é, por fim, exibida na tela. A Figura 2, a seguir, mostra um esquema desse processo. Figura 06 - Diagrama que ilustra como um navegador lê uma página HTML com arquivos CSS vinculados. Fonte: How CSS... (2019, documento on-line, tradução nossa). Na prática, um navegador carrega os dados e a estrutura da página no arquivo HTML. Depois, analisa arquivos CSS vinculados, buscando formatações e estilos que devem ser aplicados para visualização final do site na tela do 29 computador. Por fim, ele junta todas as informações disponíveis em um documento armazenado na memória do computador (DOM) e exibe a página formatada. 3.1.2 Regra de estilização A linguagem CSS permite a manipulação de estilos de arquivos por meio da chamada regra de estilização (SILVA, 2015). Nessa regra, uma formatação de estilos é composta por um seletor seguido por uma ou mais declarações separadas por ponto e vírgula. Declarações CSS, por sua vez, são compostas por uma determinada propriedade e um valor que pode ser aplicado a ela, conforme esquema da Figura 07. Figura 07 - Representação de uma declaração CSS: colore textos presentes em tags <p> na cor azul. A indentação do bloco é opcional, i.e. todo o comando pode ser escrito em uma única linha: p { color: blue }. Fonte: How CSS... (2019, documento on-line, tradução nossa). Seletores indicam elementos em que as regras CSS serão aplicadas na marcação HTML. Um exemplo simples de aplicação da linguagem CSS seria a 30 alteração de textos de uma página (armazenados na tag <p>) para a cor azul. No exemplo anterior, a propriedade color (cor) foi aplicada a todos os textos presentes em tags <p>, recebendo o valor blue (azul). 3.2 Leiautes em HTML com CSS Há três formas de se realizar declarações CSS (MARIANO; MELO- MINARDI, 2017), apresentadas no Quadro 1, a seguir. Fonte: Adaptado de Mariano e Melo-Minardi (2017). 31 Um navegador define o estilo aplicado de acordo com a ordem de prioridade em que a declaração foi aplicada (efeito cascata). Por exemplo, declarações inline têm prioridade sobre as incorporadas, que têm prioridade sobre as importadas. Declarações dos tipos inline e incorporadas são realizadas diretamente no arquivo HTML e, por isso, devem ser evitadas (SAGA, 2020) Se nenhuma declaração for aplicada a um determinado elemento, o navegador carrega sua folha de estilos-padrão. Por exemplo, se apenas um texto for inserido na tag <body>, o navegador define por padrão que a cor do texto deve ser preta (color: black) e fundo deve ser branco (background- -color: white). 3.2.1 Importação de folhas de estilo Agora, você verá, na prática, como criar sua primeira folha de estilos e vinculá-la a um arquivo HTML. Primeiro, crie o arquivo HTML com o seguinte conteúdo (nomeie o arquivo como “index.html”): <!DOCTYPE html> <html> <head> <title>Minha primeira página HTML + CSS</title> <!-- importando arquivos CSS --> <link rel="stylesheet" href="estilo.css"> </head> <body> <p>Meu texto</p> <p class="azul">Estilo múltiplo</p> <p id="vermelho">Estilo único</p> <p class="azul">Estilo múltiplo</p> </body> 32 </html> Observe que, na linha 7, é realizada uma referenciação a um arquivo denominado “estilo.css”. Este, ainda não criado, armazenará todas as declarações do tipo CSS. Para que o navegador compreenda que a tag <link> é interligada a um arquivo de folhas de estilo, é necessário adicionar o atributo rel que deve receber o valor stylesheet, além de um atributo href com o nome do arquivo CSS (desde que os arquivos HTML e CSS estejam na mesma pasta – caso contrário, é necessário indicar o endereço completo). Crie, agora, o arquivo CSS com o seguinte conteúdo: * { margin: 0; padding: 0; }body { background-color: black; } p { color: green; } .azul { color: cyan; /* azul ciano */ } #vermelho { color: red; 33 } Esses códigos utilizam diversos seletores. O primeiro é o seletor universal (*), que é usado para aplicar estilos a elementos de qualquer tipo. Nesse caso, você usou o seletor universal para remover margens inseridas por padrão em certos tipos de navegadores. O próximo seletor foi usado na tag body, que armazena todo o corpo da página, ou seja, o conjunto de códigos que gera elementos visuais. Na tag body, foi inserida a propriedade background-color, que altera a cor do plano de fundo para preto. A seguir, a propriedade color com diferentes valores é aplicada a três seletores: tag <p>, classe “azul” e id “vermelho”. Ao executar o arquivo HTML em um navegador, a seguinte página da Figura 8 será carregada. Figura 8 - Observe que a cor de fundo do <body> foi alterada para preto. A cor verde é aplicada apenas ao primeiro parágrafo. Nos itens seguintes, são aplicados os atributos class (usado mais de uma vez) e id (usado apenas uma vez).As propriedades aplicadas por último sobrepõem-se às aplicadas primeiro (efeito cascata). Fonte: Mariano e Melo-Minardi (2017). 34 3.2.2 Tipografia As propriedades tipográficas permitem a formatação dos textos em uma determinada página. Em geral, elas iniciam pelos prefixos “font-” ou “text-”, como a propriedade font-size, que define o tamanho da fonte a ser utilizada, ou a propriedade text-align, que define o alinhamento do texto (alinhado à direita, à esquerda ou centralizado). No Quadro 2, a seguir, você pode ver algumas das propriedades mais utilizadas para formatação de textos. 35 Fonte: Mariano e Melo-Minardi (2017). 3.2.3 Background O advento da popularização de Internet banda larga, aliado ao uso de folhas de estilo, permitiu uma evolução no uso de backgrounds, também conhecidos como planos de fundo (ADAMS et al., 2009). A propriedade background permite diversas configurações de planos de fundo, como definição de cor ou, até mesmo, inserção e posicionamento de imagens. No Quadro 3, a seguir, você pode ver algumas das propriedades para definição de backgrounds. 36 Fonte: Mariano e Melo-Minardi (2017). 3.2.4 Dimensão de elementos CSS fornece uma série de propriedades para definição de margens e espaçamentos, como bordas (border), margens internas (padding), margens externas (margin), além das propriedades de altura (height) e largura (width) (Figura 09). Tais propriedades podem ser aplicadas a diversos tipos de tags, como divisórias (<div>), imagens (<img>), dentre outras. 37 Figura 09 - Margens e bordas. Fonte: Mariano e Melo-Minardi (2017). A linguagem CSS permite uma grande gama de unidades de medida para expressar comprimento, como ponto (pt), paica (pc), centímetro (cm), milímetro (mm) e polegada (in). Além disso, há unidades que dependem do tamanho da fonte, como as de medida em e ex. Entretanto, CSS possui uma unidade de medida própria, o px, que se deriva do pixel, que a menor unidade de medida de uma imagem digital. As unidades baseadas em pixels são bastante utilizadas, por exemplo, na resolução de monitores, como o HD (1280 x 720 pixels), Full HD ou FHD (1920 x 1080 pixels), 4K ou Ultra HD (3840 x 2160 pixels) e 8K (7680 x 4320 pixels). Quanto maior a resolução, maior a quantidade de pixels que a tela terá e, consequentemente, melhor qualidade de imagem (SAGA, 2020) Tamanhos também podem ser representados em porcentagens (%), o que tem uma grande utilidade para as chamadas páginas que se adequam ao design responsivo (aquelas que se ajustam ao tamanho da tela de quem acessa o site). No Quadro 4, a seguir, você verá algumas propriedades para definições de tamanhos e espaçamentos. 38 39 Fonte: Mariano & de Melo-Minardi (2017). 3.2.5 Posicionamento CSS permite a definição de posicionamento de um elemento pela propriedade position, que pode receber três possíveis valores: fixed, relative e absolute (Figura 10). O valor relative posiciona elementos com base em seu canto superior esquerdo. Sendo assim, elementos relative são inseridos abaixo de outros 40 elementos relative. Por padrão, novos elementos declarados recebem essa configuração. Figura 10 - Quadrados vermelho e azul (Div 1 e Div 2) declarados usando a propriedade position com valores relative e absolute. Observe que absolute força o quadrado azul a sobrepor o quadrado vermelho. Fonte: Mariano e Melo-Minardi (2017). A posição de elementos do tipo fixed e absolute pode ser definida com base em quatro propriedades: (i) top: distância do elemento até o topo da página; (ii) right: distância do elemento até a margem direita; (iii) bottom: distância do elemento até a parte inferior da página; e (iv) left: distância do elemento até a margem esquerda. 41 4 TRABALHANDO COM LINKS E FORMULÁRIOS 4.1 Desenvolvimento de páginas HTML com links e âncoras HTML permite que páginas sejam interligadas por meio dos chamados links (SILVA, 2015). A tag âncora <a> é a responsável por isso, recebendo, no atributo href, o endereço para o qual o link deve apontar, conforme exemplo a seguir: <a href="#">Eu sou um link</a> Por padrão, a maior parte dos navegadores exibe links de texto sublinhados e na cor azul, exceto quando uma configuração diferente nas folhas de estilo CSS especifique outra configuração para a apresentação visual de um link. 4.1.1 Links relativos Links relativos apontam para arquivos locais, ou seja, um arquivo presente no mesmo dispositivo do arquivo HTML em questão. Nos exemplos a seguir, você verá a criação de duas páginas HTML: página 1 e página 2. Ambas apresentam apenas um título indicando seu nome e um link para a página oposta. Exemplo : <h1>Eu sou a página 1</h1> <a href="pagina2.html">Link para a página 2</a> 42 O link da página 1 recebe como atributo o valor “pagina2.html”. Observe que o valor deve ser exatamente igual ao nome do arquivo, incluindo a extensão .html. Nesse caso, o arquivo da página 2 deve estar no mesmo diretório do arquivo da página 1. Observe, agora, a criação do arquivo “pagina2.html”. <h1>Eu sou a página 2</h1> <a href="pagina1.html">Link para a página 1</a> A página 2 apresenta um link que aponta para a página 1. Ao executar as páginas no navegador, é possível alternar de uma para outra, clicando nos links criados. 4.1.2 Links absolutos Links absolutos apontam para endereços externos. O valor de href deve conter um protocolo de acesso, como http ou https seguido por duas barras, e o endereço para o qual o link deve apontar. <a href="https://www.google.com.br">Google</a> 43 4.1.3 Links para e-mails Links também podem apontar para endereços de e-mail. Para isso, utilize a palavra mailto seguida de dois-pontos e um endereço de e-mail. Nesse caso, o navegador chamará o programa-padrão de envio de e-mails do computador, informando que a mensagem deve ser enviada ao e-mail indicado. <a href="mailto:pessoa@sagah.com.br">Contato por e-mail</a> 4.1.4 Links em imagens Links podem ser combinados com imagens. Nesse caso, o código HTML da imagem deve ser inserido dentro da tag âncora <a> no lugar do texto. <a href="#"> <img src="..."> </a> 4.1.5 Atributo target O atributo target indica o contexto de navegação que determinado link deve carregar (nova aba, nova janela ou frame). No Quadro 5, a seguir, estão os valores que podem ser atribuídos ao target. 44 Quadro 05 - Valores que podem ser atribuídos ao target Fonte: Mariano & de Melo-Minardi (2017). 4.2 Desenvolvimento de páginas HTML com formulários Nos primeiros anosda Internet, as páginas Web eram estáticas, permitindo ao usuário apenas a leitura de informações. Com a evolução da tecnologias e linguagens de desenvolvimento Web, foi possível que usuários não apenas lessem, mas, também, enviassem informações. Um exemplo, disso são os chamados formulários (Figura 11). Formulários permitem que usuários interajam com sistemas Web (MARIANO; MELO-MINARDI, 2017), estabelecendo conexão entre cliente e servidor, por meio do envio de informações a serem processadas por linguagens de programação back-end. Figura 11 - Criando formulários HTML. Fonte: photovibes/Shutterstock.com. 45 Formulários têm muitas utilidades, como em páginas de contato, que permitem que o usuário do site envie informações para o criador (Figura 12). Figura 12 - Exemplo de formulário para envio de e-mail. Fonte: Mariano e Melo-Minardi (2017). 4.2.1 Tag <form> Formulários podem ser criados com a tag <form>, que recebe diversos atributos (<FORM>..., 2019), dentre eles: name — nome que identifica o formulário; action — endereço para onde o formulário deve ser enviado; method — post ou get ( quadro abaixo ); enctype — valor usado como identificador de duas partes para formatos transmitidos na Internet (usado para o método post). Pode receber os valores: application/x-www-form-urlencoded (valor padrão), multipart/form-data (para envio de arquivos) e multipart/form-data (para HTML5). 46 No exemplo a seguir, você verá como um formulário é criado. O atributo action recebe a página para a qual o formulário será enviado (aqui denominada como “processa_formulario.php”). O método utilizado foi o post, e o nome do formulário é “meu_formulario”. <form action="processa _ formulario.php" method="post" name="meu _ formulario"> [...] </form> Quadro 06 - Métodos POST e GET Fonte: Mariano e Melo-Minardi (2017). 4.2.2 Diferentes componentes de um formulário Formulários são componentes HTML que recebem informações. A principal tag utilizada por um formulário é a tag <input>, que contém diversos tipos. Além disso, formulários também podem receber campos como <button> ou, até mesmo, <label> para identificar rótulos. 4.2.2.1 Tag input A tag <input> permite a inserção de dados em formulários e pode receber como atributos: 47 name — nome do formulário que será usado para processamento em linguagens back-end; value — atributo que recebe o valor-padrão a ser exibido no formulário; placeholder — texto que aparece dentro de caixas de texto; type — identificação do tipo de campo; O Quadro 07, a seguir, mostra os tipos de input de formulários. Fonte: Mariano e Melo-Minardi (2017). 4.2.2.2 Tipo text, email e password Os campos text, email e password são bastante parecidos (Figura 3). A principal diferença é que email verifica se o valor digitado corresponde a um e-mail (busca pelo símbolo de @), e o password criptografa os valores digitados (oculta caracteres). <form action="#" method="post" name="formulario"> <h1>Text</h1> <p> <input type="text" name="texto" placeholder="Digite um 48 nome"> </p> <h1>Email</h1> <p> <input type="email" name="email" placeholder="Digite um e-mail"> </p> <h1>Senha</h1> <p> <input type="password" name="senha" placeholder="Digite a senha"> </p> </form> O atributo placeholder exibe uma mensagem que desaparece quando se clica no campo. Figura 13 - Text, email e password. Fonte: Mariano e Melo-Minardi (2017). 49 4.2.2.3 Tipo checkbox e radio Os campos checkbox e radio são dois tipos de campos de marcação (Figura abaixo). A principal diferença entre eles é que grupos de campos checkbox podem ser marcados múltiplas vezes, enquanto os de radio só permitem a escolha de um. <form action="#" method="post" name="formulario"> <h1>Checkbox</h1> <p> <input type="checkbox" name="nome _ unico1" value="1" /> <label>1</label> </p> <p> <input type="checkbox" name="nome _ unico1" value="2" /> <label>2</label> </p> <h1>Radio</h1> <p> <input type="radio" name="nome _ unico2" value="1" /> <label>1</label> </p> <p> <input type="radio" name="nome _ unico2" value="2" /> <label>2</label> </p> </form> Para que sejam identificados como um grupo, devem receber o mesmo valor no campo name. 50 Figura 14 - checkbox e radio. Fonte: Mariano e Melo-Minardi (2017). 4.2.2.4 Tipos hidden e file Campos do tipo hidden ocultam informações (Figura 5). Podem ser utilizados para armazenar códigos de identificação ou qualquer outra informação que não deve ser exibida para o usuário. O tipo file permite o envio de arquivos. <form action="#" method="post" name="formulario"> <h1>Arquivo</h1> <p> <input type="file" name="arquivo"> <input type="hidden" value="codigo _ secreto _ 123"> </p> </form> 51 Figura 15 - Envio de arquivos. Fonte: Mariano e Melo-Minardi (2017). 4.2.2.5 Tipos button e submit Botões button e submit permitem a execução de ações (Figura abaixo). Entretanto, o botão do tipo submit é especial, pois é por meio dele que o formulário é enviado. <form action="#" method="post" name="formulario"> <h1>Botões</h1> <p> <input type="button" value="Botão comum"> <input type="submit" value="Enviar"> </p> </form> O atributo value é quem define o valor do texto que será exibido no botão. Ao clicar em enviar, a página é redirecionada para onde o atributo action do <form> indicar. 52 Figura 16 - Botões. Fonte: Mariano e Melo-Minardi (2017). 4.2.2.6 Tag <select> As tags <select> (Figura 7) permitem que o usuário selecione entre uma série de opções determinadas pelas tags <option>. <form action="#" method="post" name="formulario"> <h1>Select</h1> <p> <select name="selecione"> <option value="1">1</option> <option value="2">2</option> </select> </p> </form> Observe que a tag <option> recebe o atributo value que define o valor a ser enviado, seguido por um valor que será mostrado para o usuário. 53 Figura 17 - Select. Fonte: Mariano e Melo-Minardi (2017). 4.2.2.7 Tag <textarea> Tags do tipo <textarea> (Figura 18) são parecidas com <input> do tipo text, servindo para receber valores em texto. A principal diferença é que <textarea> permite que o valor da caixa seja alterado. <form action="#" method="post" name="formulario"> <h1>Textarea</h1> <p> <textarea cols="50" rows="10"></textarea> </p> </form> O tamanho de áreas de texto pode ser alterado por meio dos atributos cols (número de colunas) e rows (número de linhas). 54 Figura 18 - Textarea. Fonte: Mariano e Melo-Minardi (2017). 5 TRABALHANDO COM LISTAS E TABELAS É comum criarmos conteúdo da Web procurando maneiras de organizar as informações para as tornar mais legíveis. Uma forma de organizar o texto é por meio de listas e tabelas. Existem dois tipos de listas: ordenada (numerada, com letras, etc.) e não ordenada (com marcadores). Tabelas podem ser utilizadas tanto para organizar informações como a própria estrutura da página Web. 5.1 Listas HTML As listas HTML são usadas para especificar listas de informações, podendo conter um ou mais elementos dessa lista. Existem três tipos diferentes de listas em HTML (RAGGETT; LE HORS, JACOBS, 1999a, documento on-line): ordenada ou numerada (ol); não ordenada ou com marcadores (ul); de descrição ou de definições (dl). 55 5.1.1 Lista ordenada em HTML Lista ordenada em HTML, ou lista numerada, exibe elementos em formato numerado e utiliza a tag HTML <ol> é. Podemos usar a lista de pedidos para representar itens no formato de pedido numérico ou alfabético – ou em qualquer formato em que um pedido seja enfatizado. Pode haverdiferentes tipos de lista numerada (RAGGETT; LE HORS, JACOBS, 1999a, documento on-line): número indo-arábico (1, 2, 3); número romano maiúsculo (I II III); número romano minúsculo (i ii iii); alfabeto maiúsculo (ABC); alfabeto minúsculo (abc). Para representar diferentes listas ordenadas, existem cinco tipos de atributos na tag <ol>, conforme Quadro 8, a seguir. Quadro 8 - Tipos de listas ordenadas Fonte: Adaptado de Raggett, Le Hors e Jacobs (1999a, documento on-line). No Quadro 9, vemos um exemplo da lista ordenada em HTML que exibe quatro tópicos. Aqui não estamos definindo type="1" porque é o tipo-padrão. 56 Quadro 9 - Lista ordenada com tópicos padrão (números indo-arábicos) Fonte: Adaptado de Raggett, Le Hors e Jacobs (1999a, documento on-line). Agora, no Quadro 3, é exibido um exemplo da lista em número romano em maiúsculas, usando o tipo “I”. Quadro 10 - Lista ordenada com tópicos tipo “I” (números romanos maiúsculos) Fonte: Adaptado de Raggett, Le Hors e Jacobs (1999a, documento on-line). O atributo start é usado com a tag <ol> para especificar onde iniciar os itens da lista, conforme os tipos apresentados no Quadro 11, a seguir. 57 Quadro 11 - Tipos do atributo start Fonte: Adaptado de Raggett, Le Hors e Jacobs (1999a, documento on-line). Veja o exemplo do Quadro 5, a seguir. Quadro 12 - Veja o exemplo do Quadro 5, a seguir. Fonte: Adaptado de Raggett, Le Hors e Jacobs (1999a, documento on-line). O atributo reversed é um booleano da tag HTML <ol> e uma novidade da versão HTML5. Se você usar o atributo invertido com tag, numerará a lista em ordem decrescente (7, 6, 5, 4, ..., 1), como mostra o Quadro 13. 58 Quadro 13 - Lista com atributo reversed Fonte: Adaptado de Smith (2012, documento on-line). 5.1.2 Lista não ordenada em HTML Lista não ordenada HTML, ou lista com marcadores, usa a tag HTML <ul> e exibe elementos no formato com marcadores. Podemos usar uma lista não ordenada em que não precisamos exibir itens em nenhuma ordem específica. Existem quatro tipos de lista com marcadores, como mostrado no Quadro 14 (RAGGETT; LE HORS, JACOBS, 1999, documento on-line): disco; círculo; quadrado; nenhum. Quadro 14 - Tipos de marcadores em listas não ordenadas (listas com marcadores). Fonte: Raggett, Le Hors e Jacobs (1999a, documento on-line). 59 A seguir, no Quadro 15, há um exemplo de lista não ordenada HTML da opção type="square". Quadro 15 - Exemplo de lista não ordenada com marcadores do tipo square Fonte: Raggett, Le Hors e Jacobs (1999a, documento on-line). O atributo type não é suportado no HTML5. Em vez do tipo, pode-se usar a propriedade CSS do tipo de estilo de lista. A seguir, no Quadro 16, é apresentado o exemplo para mostrar a propriedade CSS da tag ul. Quadro 16 - Exemplo de propriedade CSS do tipo de marcador para itens dentro da tag ul Fonte: Raggett, Le Hors e Jacobs (1999a, documento on-line). 60 5.1.3 Lista de descrição HTML Lista de descrição HTML, ou lista de definições, exibe elementos no formato de definição, como no dicionário. As tags <dl>, <dt> e <dd> são usadas para definir a lista de descrição (RAGGETT; LE HORS, JACOBS, 1999a, documento on-line): As três tags da lista de descrição HTML são as seguintes (Quadro 17): tag <dl> define a lista de descrição; tag <dt> define o termo de dados; tag <dd> define a definição de dados (descrição). Quadro 17 - Tags da lista de descrição HTML Fonte: Raggett, Le Hors e Jacobs (1999a, documento on-line). 5.2 Tabelas em HTML A tag da tabela HTML é usada para exibir dados em forma de tabela (linha×coluna), podendo haver muitas colunas seguidas (PRESCOTT, 2015). Podemos criar uma tabela para exibir dados em forma de tabela, usando o elemento <table>, com a ajuda dos <tr>, <td> e <th>. 61 Em cada tabela, a linha é definida pela tag <tr>, o cabeçalho por <th>, e os dados pelas tags <td>. Observe a descrição de cada um desses elementos no Quadro 18, a seguir. Quadro 18 - Descrição dos elementos de tabela HTML Fonte: Adaptado de Raggett, Le Hors e Jacobs (1999b, documento on-line). A seguir, veja um exemplo das tags da tabela HTML. Código: <table> <tr> <th>Nome</th> <th>Sobrenome</th> <th>Peso</th> </tr> <tr> <td>Sonoo</td> <td>Jaiswal</td> 62 <td>60</td> </tr> <tr> <td>James</td> <td>William</td> <td>80</td> </tr> <tr> <td>Swati</td> <td>Sironi</td> <td>82</td> </tr> <tr> <td>Chetna</td> <td>Singh</td> <td>72</td> </tr> </table> Saída: Na tabela HTML do exemplo anterior, existem cinco linhas e três colunas = 5 × 3 = 15 valores. Há duas maneiras de especificar borda para tabelas HTML: por atributo 63 de borda da tabela em HTML ou por propriedade border em CSS. Não é mais recomendada a utilização da maneira por atributo em HTML, e sim por propriedades CSS (PRESCOTT, 2015). Código: <style> table, th, td { border: 1px solid black; } </style> Você pode recolher todas as bordas em uma por meio da propriedade border-collapse. Código: <style> table, th, td { border: 2px solid black; border-collapse: collapse; } </style> Saída: 64 Você pode especificar o preenchimento para o cabeçalho e os dados da tabela de duas maneiras: pelo atributo cellpadding da tabela em HTML ou preenchendo a propriedade CSS. O atributo cellpadding da tag da tabela HTML está obsoleto desde a versão do HTML5. Nesse caso, é recomendável usar CSS. Então, veremos o código do CSS (PRESCOTT, 2015): Código: <style> table, th, td { border: 1px solid pink; border-collapse: collapse; } th, td { padding: 10px; } </style> Saída: Podemos especificar a largura da tabela HTML usando a propriedade CSS width, em pixels ou porcentagem. 65 Código: table{ width: 100%; } Se você deseja fazer uma célula abranger mais de uma coluna, é possível usar o atributo colspan. Ele dividirá uma célula/linha em várias colunas, e o número de colunas depende do valor do atributo colspan. Vamos ver o exemplo que abrange duas colunas. Código CSS: <style> table, th, td { border: 1px solid black; border-collapse: collapse; } th, td { padding: 5px; } </style> Código HTML: <table style=”width:100%”> <tr> <th>Nome</th> <th colspan=”2”>Telefone</th> </tr> <tr> 66 <td>João Silveira</td> <td>7503520801</td> <td>9555879135</td> </tr> </table> Saída: Se você deseja fazer uma célula abranger mais de uma linha, você pode usar o atributo rowspan. Ele dividirá uma célula em várias linhas. O número de linhas divididas dependerá dos valores das linhas. Vamos a um exemplo que abrange duas linhas. Código CSS: <style> table, th, td { border: 1px solid black; border-collapse: collapse; } th, td { padding: 10px; } </style> 67 Código HTML: <table> <tr> <th>Nome</th> <td>João Silveira</td> </tr> <tr> <th rowspan=”2”>Telefone</th> <td>7503520801</td> </tr> <tr> <td>9555879135</td> </tr> </table> Saída: 5.3 Páginas Web com listas e tabelas Criar leiautes é a coisa mais importante no desenvolvimento de um site, pois garante que o site tenha uma aparência bem-organizada e o conteúdo pareça de fácil entendimento. Existem várias técnicas e estruturas disponíveis para criar leiautes. O leiaute baseado em tabela HTML é uma das maneiras mais fáceis de criar um leiaute, pois a tabela usa apenas linhas e formato baseado em coluna (FLATSCHART, 2011). 68 Uma tabela contém um conjunto de colunas e linhas de dados reais, e cada linha consisteem uma ou mais células. Dentro das células da tabela, você pode adicionar outras tags HTML, além do texto normal, como imagem, links, lista, tabelas, etc. Também é possível criar tabelas aninhadas, as quais podem levar a leiautes de tabelas complexas (FLATSCHART, 2011). Diferentes tipos de leiaute de páginas Web podem ser criados com tabelas. O exemplo a seguir usa uma tabela com 3 linhas e 2 colunas — a primeira e a últimas linhas abrangem duas colunas com o uso do atributo colspan (Figura abaixo). <html> <body> <table width="500" border="0"> <tr> <td colspan="2" style="background-color:#ccc;"> <h1>Título Principal da Página</h1> </td> </tr> <tr valign="top"> <td style="background-color:#ddd;width:100px;text-align:top;"> <b>Menu</b><br /> HTML<br /> CSS<br /> JavaScript </td> <td style="background-color:#eee;height:200px;width:400px;t ext-align:top;"> O conteúdo vai aqui.</td> </tr> <tr> 69 <td colspan="2" style="background-color:#ccc;text-align:center;"> Direitos reservados</td> </tr> </table> </body> </html> Figura 19 - Leiaute básico de duas colunas, um cabeçalho e um rodapé. Fonte: Codex (2017, documento on-line). Outros leiautes de páginas Web podem ser criados com tabelas, como leiaute de duas colunas com um cabeçalho, leiaute de duas colunas com cabeçalho, barra de navegação e rodapé ou um leiaute de três colunas. Poderá ser escolhida a forma que melhor se adequar ao seu projeto de página. 70 6 MANIPULANDO BROWSER OBJECT MODEL, COOKIES E TEMPORIZADORES EM JAVASCRIPT O browser object model não trata de um elemento padronizado, mas de livre implementação de cada um. Mesmo assim, há um grande denominador comum entre o modelo de cada navegador, e muitas funções estão presentes nos principais interpretadores disponíveis no mercado. Os objetos podem incluir desde temporizadores até lista de quadros da página, ou, ainda, o histórico do navegador. Por ser do topo da hierarquia de objetos em um navegador, o browser object model tem acesso a características próprias do navegador e da máquina que o utiliza, ao contrário do objeto document, vinculado diretamente à página em si. 6.1 Browser object model O núcleo de uma implementação em JavaScript para navegadores observa o padrão ECMAScript, mas existem outras partes não incluídas nele e que são frequentes nesse tipo de sistema, como o browser object model (BOM) – ou modelo de objeto do navegador. Na verdade, o ECMAScript não restringe a implementação da linguagem que pode adicionar particularidades para além do núcleo padronizado (ECMA INTERNATIONAL, 2015). Os navegadores modernos mais se parecem com um sistema operacional básico do que com os primeiros navegadores unicamente destinados à exibição de um documento (FLANAGAN, 2013). Uma vez que o objeto é o tipo fundamental da linguagem JavaScript, é natural que os navegadores – que correspondem a uma parcela considerável dos ambientes hospedeiros – disponibilizem objetos, sejam controlados e se comuniquem por meio deles. O BOM é um objeto que abrange os elementos não pertencentes à página em si, como: janela, histórico, barra de endereço, barra de status e tantos outros. Assim como qualquer outro objeto, o BOM é um conjunto de chaves e valores que 71 representa as propriedades e os métodos do navegador. Já que o BOM não é padronizado pela linguagem, cada implementação pode desenvolver o seu próprio modelo de objeto. Devido a isso, deve-se ter bastante cuidado ao utilizar esse objeto, uma vez que o comportamento pode diferir de navegador para navegador. Na maioria dos navegadores, o BOM é acessível por meio de objeto denominado window, pelo qual grande parte das funcionalidades e propriedades é compartilhada, apesar de inexistir padronização (SAGA, 2020) O window pode ser referenciado pela palavra reservada this que, em outras implementações, costuma referir-se ao objeto global, como era o caso do interpretador Node.js. Dessa forma, todos elementos globais, sejam objetos, variáveis ou funções, são filhos do objeto global window e podem ser acessados diretamente pelo seu nome quando o contexto for o mesmo do global ou por meio da notação ponto em conjunto com o objeto window, como no seguinte exemplo (FLANAGAN, 2013). Exemplo : window.obj = { prop1: 1 } console.log(obj.prop1) // escreve 1 console.log(window.obj.prop1) // escreve 1 O objeto window assume todas as demais janelas abertas a partir dele como de mensagem – janelas de pop-up. Essas janelas adicionais estão associadas a window. Na verdade, são objetos membros dele e, como tal, fazem parte do BOM. O objeto modelo do navegador é o ponto de partida de um sistema Web para a linguagem JavaScript. Qualquer declaração de variável, objeto ou função será um elemento novo e inferior nessa hierarquia. Mesmo sem um padrão determinado, o BOM pode organizar os objetos filhos em seis categorias principais de objetos dependes, sem mencionar as propriedades e funções próprias desse. 72 6.2 Objetos do BOM Diretamente ligados ao objeto window, existem propriedades e métodos de manipulação da janela em si. O tamanho e a posição da janela e seu documento podem ser controlados por meio de funções de: redimensionamento absoluto (resizeTo) ou relativo (resizeBy), para modificar largura e altura da janela, movendo o ponto da extremidade inferior direita; mudanças de posição absoluta (moveTo) ou relativa (moveBy), a partir do ponto referente à extremidade superior esquerda da janela; rolagem de página absoluta (scrollTo) ou relativa (scrollBy), para alterar a posição em que uma página maior que a tela é exibida. Também é possível abrir ou fechar novas janelas utilizando: gerador de mensagens de alerta simples (alert), informando uma string a ser exibida em conjunto com um botão de finalização; mensagens de confirmação (confirm), contendo botão de confirmação, que retornará true, e de cancelamento, que retornará false; nova janela de diálogo para receber valores do usuário (prompt); abertura de novas janelas ou abas (open) a depender de como o interpretador implementou a função, normalmente informando características como página, dimensões, entre outros; fechamento da janela atual (close). 73 Outras funções comuns incluem, ainda, controle de foco, utilizando focus para direcioná-lo à janela, e blur, para tirá-lo da janela atual, além de interrupção de carregamento de página (stop). Obviamente, esses métodos e funções controlam uma série de propriedades, dentre as quais as mais frequentes estão no Quadro 19, a seguir. Quadro 19 - Propriedades do objeto window 74 Fonte: Adaptado de The Window... (2019). O objeto window é apenas o topo de uma hierarquia de outros objetos comuns nos navegadores. Deve-se frisar sempre que não há um padrão para essa implementação, mas existem muitos objetos em comum no BOM entre os navegadores. Os principais e mais comuns, podem ser vistos isoladamente na Figura 20, a seguir. Figura 20 - Principais objetos do BOM. Fonte: Lenz (2020) Cada um desses objetos apresentados expõe uma parte do navegador ou da página atual e apresenta suas próprias funções e propriedades. 75 6.2.1 Objeto document O objeto de maior importância no desenvolvimento Web, contém a página HTML carregada pela janela do navegador, sendo ela o foco principal não apenas do programador, mas do usuário. Assim como o BOM, o objeto document também é costumeiramente referenciado pelo seu acrônimo DOM (do inglês document object model). É por meio do DOM que se pode acessar e modificar o conteúdo da página que está sendo exibida pelo navegador (FLANAGAN, 2013). Como qualquer outro objeto, o DOM apresenta métodos e propriedades próprios. A sua estrutura
Compartilhar