UNITAT 5 SVG/DOM/EVENTS

L’element SVG permet crear un canvas on cada un dels elements és identificable i té els seus propis atributs. Aquest fet permet que es pugui controlar tota la imatge de la pantalla com a objectes independents.

El control d’esdeveniments és clau per generar una aplicació, permetrà la correcta execució del codi i la comunicació amb l’usuari.

La integració al DOM (document object model) ens permet tenir accessibles tots els elements de l’aplicació.


En aquesta unitat ens centrarem en:

  • Conèixer i implementar els tipus de formes al SVG.
  • Controlar els atributs dels elements de l’SVG.
  • Integrar elements al DOM de forma dinàmica.
  • Afegir controls d’esdeveniment amb addEventListener.

SVG:
ELEMENTS SVG (Scalable Vector Graphics).

Els elements SVG funcionen de la mateixa forma que un canvas, la diferència és que cada element svg és independent. Podeu veure la teoria explicada en aquest link. teoria i pràctica de l’svg.

Primer mostram a crear els objectes, després com es pot accedir a ells i després mostram com es poden manipular.

Crear SVG i afegir un objecte.

Un element SVG es crea sobre una pàgina html amb l’instrucció de marca:

<svg width=x height=y><element1><element2>...<elementN></svg>

Per exemple un rectagle a la posició (10,30) amb amplada 180 i alçada 140 usaria la marca.

...<rect x=10 y=30 width=180 height=140 stroke="green" stroke-width=2 fill="lime"/>...

El següent codi és un exemple de la implementació d’un rectangle sobre un svg:

See the Pen svg-0 by PereAntoni (@pereantoni) on CodePen.

Cada element que es dibuixa sobre l’element svg és independent dels altres elements i pot ser identificat i classificat. Així es poden manipular les seves propietats, ho podem fer desde javascript o CSS.

Amb el Javascript es pot manipular el contingut d’un SVG, s’han d’integrar els elements dins el DOM.

Tipus d’elements dins SVG.

Pots mirar tots els tipus d’elements al següent codi.

See the Pen svg-1 by Pere Antoni Melisucre (@pere-antoni-melisucre) on CodePen.

Dins un nou document “svg.html” has de fer tots els exercicis de svg.

Exercici 1

Amb les formes disponibles a SVG dibuixa un paissatge tipus infantil (casa, muntanya, camí, sol, …).

DOM:
INTEGRAR DINÀMICAMENT ELEMENTS AL DOM

Un dels objectius bàsics d’aquestes unitats és la d’aprendre a crear HTML que creixin de manera dinàmica i, a demès, es puguin controlar cada un dels objectes que formen l’estructura.

Per aconseguir aquests objectius hem de treballar amb l’inserció dinàmica al Document de Model d’Objectes (DOM). Són instruccions que des de Javascript ens permeten generar elements HTML identificats i classificats en el moment de la seva creació.


Per integrar un nou element ho feim seguint les passes:

  • Saber a quin identificador hem de penjar la nova creació. (També es podria possar directament al l’arrel del document però no és el nostre cas). Per exemple a:

    <div id="svg54583"></div>
  • Per crear el nou element ho feim amb l’instrucció createElementNS() que ens crea un SVG amb interacció. La pregunta és, quina diferència hi ha entre createElement i createElementNS? aquí la resposta, la conclusió és que si volem manipular atributs dinàmicament hem de usar createElementNS. Documentació de createElementNS.

    var svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  • Per afegir un element seguim les passes: crear element, definir atributs i afegir a l’element svg.

    var cir1 = document.createElementNS("http://www.w3.org/2000/svg", "circle");
    cir1.setAttribute("id","node"+i);
    cir1.setAttribute("cx", Math.floor(Math.random() * 700));
    cir1.setAttribute("cy", Math.floor(Math.random() * 350));
    cir1.setAttribute("r", "30");
    cir1.setAttribute("fill", "blue");
    svg1.appendChild(cir1);
  • Afegir control d’esdeveniments de control:

    document.getElementById("node"+i).addEventListener("click",function(){simple2(this)});

Observa la instrucció que s’usa per afegir un esdeveniment de control:

  • agafam (node + i) l’element per id
  • addEventListener(“click”,…), és com afegir un onclick dins el tag HTML.
  • function(){simple2(this)}—->declaram la funció que volem que s’executi.

Donar this per paràmetre serveix per enviar el propi element que el crida. Així una mateixa funció pot ser executada per varis elements “iguals”.

explicació a w3schools

Un exemple de integració dinàmica “cada vegada que pitjem sobre un element ens crea una bolla”, els programa utilitza les següents funcions:

  • main(): És la funció principal, la crida l’esdeveniment (event) onload del body. Crida dues funcions:
    • creaEscenari(): És la funció encarregada de muntar tot l’escenari. Usa les intruccions d’integració amb javascript.
    • afegirNode(): És una funció encarregada de crear un node a una posició no aleatòria de l’element svg. L’element l’identifica com a “patata”. També li agefeix un esdeveniment amb la crida a la funció simple2().
  • creaNodeAleatori(): (cridada per un esdeveniment)
    • Genera un node amb id node+i (on ‘i’ es va sumant a cada creació de node) a una posició aletòria.
    • Afegeix un control d’esdeveniment que crida la funció simple2(this).
  • simple2():
    • mira dins la informació de paràmetre (li passam amb this) les dades id i posició.
    • posa la informació sobre l’element identificat com a “info”

Observa l’implementació i execució al codi:

See the Pen SVG-Integrar Elements a DOM by Pere Antoni Melisucre (@pere-antoni-melisucre) on CodePen.

Exercici 2

Per fer aquest exercici has de fer un fork del codi anterior on hi has d’afagir els següents punts:

  1. Fes que quan s’executi l’aplicació es generin dos nodes aleatoris.
  2. Afegir informació que ha de sortir per pantalla, per exemple sobre un nou <p>.
    De cada vegada que es crei una nova bolla.
  3. Fes una funcio colorAleatori() que retorni un string de color aleatori. https://www.w3schools.com/css/css_colors.asp
  4. Si feim dos clicks sobre un element ha de desaparèixer.
  5. S’ha de controlar que sols es pitji una vegada sobre el botó “Crea Node cada tres segons”. https://www.w3schools.com/js/js_timing.asp
  6. Crea un input https://www.w3schools.com/tags/tag_input.asp que ens permeti triar el radi de creació dels següents elements.
  7. Crea un input type color que ens permeti triar el color dels següents elements.

Exercici 3

Dibuixa i fes el plantejament dels següents punts:

  1. Crear i mostrar un llistat de elements que aparèixen i què desaparèixen. Actualitzada. Explica com ho faràs i implementa desprès.
  2. Calcula la distància entre dos punts. click i click. Ha de sortir com a info.
  3. Fes una lí­nia entre dos elements. dobleclick i dobleclick (explica)

EVENTS:
MANIPULAR DINÀMICAMENT ELS ATRIBUTS D’ELEMENTS INTEGRATS AL DOM

Els elements que s’insereixen dins un SVG poden controlar esdeveniments. En aquest cas mostram un exemple amb l’esdeveniment click sobre l’element, per implementar afegim dos conceptes al codi:

  • Afegim control esdeveniment i enviam this com a paràmetre, és el propi element que crida l’acció de l’esdeveniment. Oberva la següent línia. Crida a una funció de manera semblant a com ho hem fet durant el curs. Fixa’t amb que estam enviant el propi objecte THIS!! mitjançant paràmetre.
<circle id="external-2" 
onclick="baixa(this)"
cx=10 cy=50 r=10 
stroke="green" stroke-width=1 fill="yellow">;

Implementam la funció requerida per l’acció. Per SVG hem d’usar l’instrucció .setAttributeNS

function baixa(t){
var svg = document.getElementById($(t).attr("id"));
svg.setAttributeNS(null, "cy", parseInt($(t).attr("cy"))+1);
}

El següent exemple implementa un programa que detecta cada vegada que feim click sobre un dels objectes i els canvia de posició.

See the Pen SVG- Moviment, atributs dels objectes svg by Pere Antoni Melisucre (@pere-antoni-melisucre) on CodePen.

Exercici 4

Reimplementa el codi anterior, fes que cada vegada que es faci click sobre un element canvii la seva mida a +5px. I quan es faci doble click (cerca als esdeveniments) canvii -5px.

Exercici 5

Fes un diagrama de selecció d’un cercle. Ha de tenir la forma de selecció del gif insertat a l’unitat actual. Dibuixa sobre paper per calcular els 9 punts i relaciona els punts del diagrama respecte als del cercle.

element CANVAS

Objectiu.

L’objectiu d’aquesta unitat és la d’aprendre a generar una imatge en moviment usant les tecnologies HTML i Javascript. Per assolir aquest objectiu hem de conèixer:

  • L’element Canvas per representar dibuixos.
  • Implementació d’esdeveniments i funcions, per controlar quan i com dibuixam.
  • Conèixer l’esdeveniment window.onload() que permet esperar a una càrrega completa de la pàgina.

El Canvas

El Canvas és un element d’Html que permet representar gràfics, aquest element també permet dibuixar mitjançant Javascript. De l’element canvas hem d’aprendre:

  1. Declarar un Canvas a l’html.
  2. Agafar el seu contexte per poder dibuixar.
  3. Dibuixar sobre ell:
    1. Punts.
    2. Línies.
    3. Formes.
    4. Texte.
    5. Imatges.
  4. Borrar tot el canvas.

Declarar un Canvas a l’HTML.

El Canvas és un element HTML que s’empra per dibuixar-hi gràfics. Per declarar aquest element ho feim mitjançant la marca <canvas>, com un altre element tendrà propietats tals com les mides, la posició i els costats.Fixa’t que declararem el canvas sobre HTML i desprès hi treballarem desde javascript. Per això és molt important identificar el canvas de treball.

És molt important que tengui un identificador que servirà per  realitzar operacions de contexte sobre el canvas.

See the Pen CANVAS by PereAntoni (@pereantoni) on CodePen.

Agafar el Contexte de un canvas i pintar sobre ell.

See the Pen CANVAS-1 by PereAntoni (@pereantoni) on CodePen.

  • línia 1: declaració d’un canvas amb id=”MyCanvas”. El text “Your browser does not support the canvas element.” el mostrarà quan el navegador no pugui declarar elements canvas.
  • línia 5: inici de l’script.
  • línia 6: La variable canvas que agafa l’element amb id=”MyCanvas”. Per tant agafarà del DOM l’element canvas.
  • línia 7: La variable ctx agafa el contexte del canvas, aquest contexte ens serveix per treballar damunt el canvas.
  • línia 8: La propietat del contexte canvas, fillStyle és una propietat que controla l’estil que es pntarà sobre el canvas. Mira el link per saber més.
  • línia 8:  ctx.fillRect(0,0,150,75); Pintam una forma de rectangle amb el mètode fillRect, desde la posició x=0,y=0 i 150 d’ample i 75 de alt.

Aquest tutorial del canvas et pot ajudar a entendre i ampliar coneixements.

Exercicis sobre el canvas.

Per començar farem un document nou al nostre servidor i l’anomenarem “canvas.html” en ell hi realitzarem tots els exercicis d’aquesta secció.

Tots els exercicis d’aquesta unitat han d’estar sobre un mateix pen.

És molt important que cada exercici tengui el seu propi canvas, per fer això cada un d’ells tendrà un id diferent.

Exercici 1. Pintam sobre el canvas.

El primer exercici que s’ha de realitzar és la de dibuixar sobre un canvas. A la codificació anterior augmentarem l’amplada del canvas a 400px i afegirem quadrats de color blau, verd i negre que han de començar al punt inferior-dreta del quadrat anterior i han de midar la meitat. S’han de dibuixar els següents quadrats seguint el patró següent:

Exercici 2. Pintam sobre el canvas amb funció.

A n’aquest segon exercici has de repetir l’exercici anterior, peró has d’afegir un botó que executi l’acció.  

Per fer-ho has de crear una funció canvas2(){codi} que executi l’acció de pintar sobre el canvas.

Recorda que has de crear un nou canvas i que ha de tenir un identificador id=”canvas2″.

Coordenades, línies i angles

Si coneixem els eixos de coordenades i les funcions matemàtiques ens aproximarem al coneixements sobre les coordenades del canvas. 

Dibuixar una línia.

Per dibuixar una línia al canvas podem emprar els mètodes:

  • moveTo(x,y): ens situa sobre un punt inicial.
  • lineTo(x,y): ens defineix un el punt final d’una línia.
  • stroke(): s’empra per dibuixar el patró.

See the Pen CANVAS LINIA by PereAntoni (@pereantoni) on CodePen.

Exercici 3. Pintam línies sobre el canvas 1.

En aquest exercici s’ha de crear un altre canvas de 300×300 i una figura com la següent, no podeu aixecar el boli del canvas. 

Exercici 4. Pintam línies sobre el canvas.

En aquest cas has de dibuixar una casa o sobre obert. Sense aixecar de damunt el canvas el boli i sense repetir cap línia. Quan acabis aquest exercici has de passar el teu codi com a comentari, pensa a donar el teu nom. 

Text sobre el Canvas.

El canvas també ens permet escriure text sobre ell. Per fer-ho els mètodes més importants són:

  • font – Defineix les propietats del text
  • fillText(text,x,y) – Omple el text sobre el canvas
  • strokeText(text,x,y) – Dibuixa el text sobre el canvas

Consulta la diferència entre fillText i strokeText. El següent codi ens crea un efecte de sombra amb els dos mètodes, simplement canviant la posició de l’eix x.

See the Pen CANVAS TEXT by PereAntoni (@pereantoni) on CodePen.

Exercici 5. Text sobre el canvas.

En aquest exercici has de esciure el teu nom tres vegades sobre un canvas. Cada una de les vegades ha de tenir un format diferent. 

Imatges sobre el canvas.

El canvas també ens permet dibuixar imatges, dels tipus png, gif, jpg, … sobre ell. Per fer-ho primer s’ha de crear una variable imatge Img on hi posarem la seva adreça (url). El llenguatge html va llegint el codi de manera seqüencial, però no espera a la càrrega completa dels recursos sencers. La càrrega sencera de la pàgina depèn de paràmetres com el pesos de la imatges, audios, videos, velocitat de transmisió, càrrega de memòria del client, etc. Com que nosaltres volem emprar recursos de imatge per mostrar la pàgina haurem d’esperar a la seva càrrega completa mitjançant:

See the Pen CANVAS TEXT by PereAntoni (@pereantoni) on CodePen.

Amb l’ús de window.onload() ens asseguram que tots els recursos ja estaran carregats. Mira l’exemple. Fixa’t que la funció de dibuixar la imatge espera a carregar la pàgina, mitjançant window.onload():

See the Pen CANVAS TEXT by PereAntoni (@pereantoni) on CodePen.

Exercici 6. Mapa de bits sobre un Canvas.

Per carregar les imatges d’aquest exercici i per els posteriors, les imatges han d’arribar fins a 100 amb el seu id corresponent.

See the Pen 100 imatges sense onload by PereAntoni (@pereantoni) on CodePen.

Has de crear un nou canvas de “719px x 451px” amb el id de “exercici6”. Posa les instruccions necessaries per tal que hi pinti, quan estigui carregada tota la pàgina (window.onload()) damunt la imatge de la direcció: “http://aula.gimnesia.net/fotos/43.jpg”.

Exercici 7. Mapa de bits aleatori sobre un Canvas.

Has de crear un nou canvas de “719px x 451px” amb el id de “exercici7”. Posa les instruccions necessaries per tal que hi pinti, quan es pitji un botó “exercici7” una imatge de la carpeta “http://aula.gimnesia.net/fotos/” + aleatori + “.jpg”. L’aleatori del 1 fins al 100. Informació del mètode random

Exercici 8. Mapa de bits aleatoris sobre un Canvas.

Has de crear un nou canvas de “719px x 451px” amb el id de “exercici8”. Posa les instruccions necessaries per tal que hi pinti, quan es pitji un botó “exercici8” quatre imatges aleatòries de la carpeta “http://aula.gimnesia.net/fotos/” + aleatori + “.jpg”. L’aleatori del 1 fins al 100. pd: les imatges han d’ocupar quatre quadrats al canvas.Pots trobar tota les referències posibles al canvas explicades aquí.
Més endavant treballarem amb canvas superposats i ens ajudarà a controlar vàries capes alhora. exercicis sobre canvasexemples d’ús de Canvas

3.1 ARQUITECTURA WEB

L’arquitectura web bàsica segueix un model client-servidor tradicional, on els clients accedeixen als recursos del servidor Web mitjançant un programari específic anomenat navegador web.

Els llenguatges i les tecnologies web són diferents segons al costat on ens trobam.

  • Llenguatges i tecnologies al costat del client: Elements incorporats amb el codi HTML, que s’han d’interpretar al navegador web.
  • Llenguatges i tecnologies al costat del servidor: Elements que s’han d’interpretar al servidor web. Creen elements del servidor web que es lliuren al client.

 El client: un navegador 

El client, mitjançat un programa especial anomenat navegador, realitza peticions al servidor i presenta les pàgines web. Aquest navegador interpreta el codi HTML, CSS, etc… i executen el Javascript. Els navegadors més empleats avui en dia són:

  • Internet Explorer. De Microsoft. Integrat a Windows.
  • Mozilla Firefox. De la liberalització del Netscape Navigator. 
  • Google Chrome. Codi obert. Multiplataforma.
  • Safari. De Apple. Per Mac OS X i Windows.
  • Opera. Multiplataforma.
  • Per smartphones i tablets: versions específiques per Android, Apple iOS, Blackberry, Windows phone.

 El Servidor Web (O servidor HTTP)

És un sistema informàtic (hardware o software) que processa peticions a través del protocol HTTP (o HTTPS). Pot retornar un resultat (un recurs) per a aquesta sol·licitud.

Els documents que sol tenir un servidor web generalment són HTML+CSS+JS, però també conté d’altres com imatges, vídeos o documents (JPG, PNG, PDF,…)

IMPORTANT

Un servidor web és una peça de programari que respon a les peticions dels navegadors i lliura la pàgina per al navegador a través d’Internet. 

Quan es crida a una pàgina web per l’adreça –l’URL (uniform resource locator), per exemple, https://iedib.net/avirtual/course/index.php –, la comunicació entre el navegador i el servidor és possible gràcies a tres protocols:

  • TCP (Transmission Control Protocol, protocol de control de transmissió): és el responsable de fer que el missatge arribi a la destinació sense errors.
  • IP (Internet Protocol): és el responsable de fer que el missatge trobi el camí fins al servidor.
  • HTTP (Hypertext Transfer Protocol, protocol de transferència d’hipertext): és el protocol que ha indicat l’usuari a l’hora de demanar el recurs al servidor. La primera part d’un recurs URL correspon al protocol que utilitzaran client i servidor per intercanviar dades.

Protocols

El navegador utilitza el protocol HTTP sobre TCP/IP per demanar recursos (URL) als servidors web.

Les pàgines Web poden ser estàtiques o dinàmiques. A continuació s’explicarà en què consisteix cadascun d’aquests esquemes.

 Arquitectura de Web estàtica 

A les pàgines web estàtiques, bàsicament, els clients recuperen la informació que demanen al servidor web, així, podran visualitzar diferents tipus d’arxius HTML, CSS o javascritpt. El navegador pocesa i mostra aquests arxius al client.

Arquitectra d'una Web estàtica
Figura: Arquitectura d’una Web estàtica. Elaboració pròpia.

 Arquitectura de Web dinàmica 

Les pàgines web dinàmiques són més complexes, el servidor web no només és un contenidor d’arxius, sinó que, a més, pot disposar d’un sistema gestor de bases de dades i és capaç de compilar i executar un llenguatge de programació com JAVA, PHP o python, entre d’altres.

Les pàgines web dinàmiques construeixen arxius HTML a partir de la petició del client, paràmetres que el client demana i informació que té a la base de dades. Per poder construir aquest arxiu, que es mostrarà al navegador del client, cal utilitzar un llenguatge de programació. Els llenguatges més emprats a la web són PHP, JAVA i python.

Arquitectra d'una Web dinàmica
Figura: Arquitectura d’una Web dinàmica. Elaboració pròpia.

2.3 Pràctica guiada HTML+CSS+Bootstrap

En aquesta pràctica guiada implementarem una estructura HTML i li aplicarem estils amb el framework bootstrap.

Seguim el disseny de la interfície cream l’estructura. Desprès aplicam les classes bootstrap per aconsguir la interfície dessitjada.

1. Disseny de la Interfície

La capça que volem aconseguir és la següent:

Divisions de la finestra

Com sempre començam amb la implementació de l’estructura i desprès aplicarem les classes.

2. Implementació de l’estructura

Mira el video per veure les divisions i la creació de l’estructura (al principi l’audio no se sent gaire bé) :

3. Estils amb Framework bootstrap

Una vegada tenim les parts dividides i implementades podem passar a estilitzar la pàgina. En aquest cas ho feim amb bootstrap.

Mira el video explicatiu per veure les pases:

Anàlisi Algoritme. “Quatre nombres aleatoris diferents.”

Volem crear un algoritme que ens retorni dins una array quatre aleatoris diferents.

Coses que es pensen alhora de crear un algoritme.

  1. Quin nom li posam a l’algoritme?
  2. Com ens retorna la informació?
  3. Li hem de pasar paràmetres?

Desprès d’haver pensat i reflexionat les passes prèvies pensam una possible solució i implementam.

Quin nom li posam?

El nom de l’algoritme és, a vegades, com la selecció del nom d’un fill, d’un ca, …, bé, o no és tan complicat. Normalment posam l’acció i com retorna el resultat, podria quedar com retornaAletoris, llistaAleatoris,…

Ens quedam amb llistaAleatoris.

Com retorna la informació

En aquest cas està clar que ha de retornar una llista de nombres aleatoris, dins una array que compleixi els requissits, per tant tendrem un codi implementat semblant a n’aquest:

let nombres[]; //cream una array buida
nombres = llistaAleatoris(); //dins nobres hi hem de tenir quatre nombres aleatoris.

Però si volguessim saber alguna cosa més d’aquesta array, la posició del nombre més alt, quin és l’ordre com han entrat, etc,… O sigui de pensar un sistema per cada cas. Que satisfagui

Li hem de pasar paràmetres?

Una vegada tenim pensat el problema i abans d’implementar és l’hora de pensar amb els paràmetres que volem donar a la funció.

Els paràmetres són com a interruptors especials que podran canviar el comportament de la funció. .

Per exemple una llanterna elèctrica pot tenir botons per canviar els colors, serien un símil amb els paràmetres.

See the Pen exemple parametre llanterna by PereAntoni (@pereantoni) on CodePen.

Si s’ens presenta el dubte de crear una funció que pugui retornar x nombres en lloc de retornar-ne 4 estarem pensant en un algoritme reutilitzable.

La millor opció és crear algoritmes somples que es puguin moldejar per altres programes o per augmentar la potència del programa que estam creant.

Per tant agafam l’opció de passar un paràmetre que demani quants de nombres volem generar dins la llista.

també podem posar el nombre més alt que es pot agafar.

Algoritme

  1. Cream una llista buida
  2. Cream un nombre aleatori.

4.2 Framework Bootstrap

Introducció

El Frameworks ofereixen un entorn de treball que facilita la generació de programes.

Un framework sobre CSS ens ofereix coleccions de classes estàndarts. Aquestes permeten impementar d’una maenra més àgil les idees bàsiques de la interfície de l’aplicació web.

Un framework permet afegir CSS sobre ell, podem afegir estils sobre l’interfície. (sobre les classes, identificadors i elements).

Els frameworks tenen pàgines de manual que especifiquen cada comportament i s’exposen exemples.

Un bon framework facilita la feina, s’ha de llegir un el manual i classificar les divissions i els elements seguint els seus criteris.

Usar un Framework

Per usar un framework hem d’enllaçar el codi dins el head del codi l’html.

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">

També es pot guardar dins un arxiu en local o dins un servidor propi.

Bootstrap

Podem veure què ens ofereix pegant una ullada a la seva pàgina d’exemples.

Una de les característiques més importants és que aporta una construcció d’interfície que és responsive.

Per construir amb bootstrap o qualsevol framework seguim les mateixes pases que s’han explicat a la pràctica guiada d’estructura html i CSS.

Pas per pas es va contruint la pàgina.

  1. Divisió principal
    1. Divisió de títol i menú.
    2. Divisió de contingut. Té dues columnes class=”row”:
      1. Llistat de links als exercicis.
      2. Continguts. Cada contingut és un div d’exercici (titol,paràgraf,imatge o embed).

L’implementació:

See the Pen pagina bootstrap by PereAntoni (@pereantoni) on CodePen.

2.1 Pràctica guiada HTML + CSS

Per definir una estructura HTML s’ha de tenir clar quin tipus de pàgina volem obtenir. Desprès hi aplicam el CSS per definir el seu estil.

Alhora de crear una pàgina web es pot seguir un patró fent un recull de pàgines semblants per tals que ens serveixin de guia.

En principi la pàgina ens queda com una idea que s’ha de desenvolupar. El procediment bàsic per desenvolupar i impementar la idea és:

  1. Dibuixar per saber quina distribució de continguts hi volem tenir.
  2. Crear l’estructura bàsica HTML.
  3. Classificar i identificar els elements que formen l’estructura.
  4. Estilar la pàgina. Quan ja tenim creada la estructura, o part d’ella, podem procedir amb els estils CSS.

Pràctica guiada

Aquesta pràctica guiada ens servirà per entendre els conceptes clau. Posam un exemple de pàgina web i la construïm pas a pas:

1. Dibuixar la distribució

Dibuixam una distribució d’exemple per la pàgina on han de quedar clares les divisions d’espais.

Aquest és l’exemple que ens servirà de guia.

Exemple de distribució de pàgina web. Si volem veure patrons existents podem anar aquí.

El dibuix ens serveix per mostrar la idea de com volem tenir la pàgina. El següent punt és implementar l’estructura HTML.

2. Crear l’estructura HTML

De la pàgina guia cream el seu codi amb elements HTML.

Web page showing <title>, <p>, <h1>, <ol>, and other basic HTML elements
Elements estructura i visualització de la pàgina HTML. Imatge de la pàgina
  1. Definim les divisions amb un element <div> … </div>
    <div>títol pàgina</div>
    <div>enllaços a seccions</div>
    <div>contingut1</div>
    <div>contingut2</div>

    <div>contingutX</div>
  2. Elements de cada divisió:
    • Títol pàgina:
      • Té un títol que el posam dins un element <h1>.
      • Té un subtítol que el posam dins un element <h2>.

        <div>
        <h1>Títol de la pàgina</h1>
        <h2>Subtítol de la pàgina</h2>
        </div>
    • Seccions: És una llista d’enllaços als continguts.
      • Té una llista <ul> o <ol>
      • Té elements de llista <li> que són enllaços <a href=”enllaç”>

        <div>
        <ul>
        <li><a href=”contingut”>contingut1</a></li>
        <li><a href=”contingut”>contingut2</a></li>

        <li><a href=”contingut”>contingutX</a></li>
    • Fitxa de contingut: Cada fitxa de contingut segueix un patró on cada fitxa té els elements:
      • Títol de contingut que el posam dins un element <h2>
      • Contingut de text que el posam dins un paràgraf <p>
      • Imatge de contingut que el posam dins un element <img>

        <div>
        <h2>Titol de contingut</h2>
        <p><paràgraf de contingut</p>
        <img src=”http://aula.gimnesia.net/fotos/3.jpg“>
        </div>

Exercicis:

  1. Implementació sobre un nou pen de l’estructura anterior. Amb tres enllaços a la llista i tres continguts. En principi no posam la direcció d’enllaç.
  2. Canvia el títol i el subtítol de la pàgina. Posa un títol i de subtítol el teu nom.
  3. Afegeix un element div per tal que sigui el peu de pàgina. Ha de tenir un paràgraf i dos enllaços.
  4. Canvia el número (de 1 fins a 98) de l’enllaç de les fotografies per tal que cada una de les imatges sigui diferent. No te preocupis si la fotografia és massa grossa o massa petita. L’estil es treballa amb el CSS.
  5. Analitza i comenta al paràgraf el contingut d’href.

3. Identificar i Classificar elements

Aquest és un punt clau per entendre una pàgina HTML és la de classificar i identificar els elements.
Aquesta tasca és pot concretar damunt el dibuix de la pàgina i ens servirà per poder treballar sobre ella d’una manera controlada.

Idenficar:

És posar un nom a un element mitjançant l’atribut id.

  1. A una pàgina hi pot haver tants d’identificadors com es vulguin.
  2. Un identificador identifica a un sol element.
  3. No es pot repetir el nom d’identificador dins una mateixa pàgina.

<p id=”paragrafPrincipal”>Aquest és un paragraf identificat com a paragrafPrincipal, l’identificador pertany a un sol element. Com ja hem vist l’identificador ens serveix per “identificar” un element desde Javascript i podem interactuar (veure i modificar) els seus valors.</p>

See the Pen identificador by PereAntoni (@pereantoni) on CodePen.

Classificar:

Alguns elements de l’estructura poden de la mateixa classe. Per exemple el conjunt de continguts de la pàgina que estam treballant, un conjunt de botons a un programa, …

Ens per formar grups d’elements de la mateixa categoria, classe.

Un element pot pertanyer a zero, una o vàries classes.

See the Pen Classes by PereAntoni (@pereantoni) on CodePen.

4. Aplicar estils amb CSS

Quan tenim els elements identificats i classificats els hi podem donar estil amb CSS, són fulles d’estil en cascada.

Per entendre els estils css mirau el manual de w3schools:

  1. Introducció.
  2. Sintaxi.
  3. Selectors
  4. Com posar CSS.

On s’aplica l’estil:

  1. Arxiu extern: desde un arxiu .css on s’especifiquen els estils CSS. Aquesta modalitat és la més adequada alhora de fer una pàgina web coherent.
  2. Dins l’arxiu html: a la capçalera de l’arxiu html entre

    <style>
    .estilSobreUnaClasse{color:blue;}
    #estilSobreUnIdentificador{color:red;}
    p {color:black}
    </style>
    <p>Seré un paràgraf de color negre perqué som un paràgraf.</p>
    <p class=”estilSobreUnaClasse”>Seré un paràgraf de color vermell perque som de la classe estilSobreUnaClasse</p>
    <p id=”estilSobreUnIdentificador”>Seré un paràgraf de color blau perque estic identificat com estilSobreUnIdentificador</p>
  3. Inline: directament sobre els atributs dels elements. És la forma menys apropiada per aplicar estils.
    <p style=”color: red”>Seré un paràgraf de color vermell perqué m’ho posa dins la marca.</p>

See the Pen Aplicar CSS by PereAntoni (@pereantoni) on CodePen.

Exercicis:

Treballa sobre el mateix pen dels exercicis anteriors dels exercicis anteriors

  1. Identifica el div de títol, com a “titol”. Al CSS canvia les propietats per tal de tenir un capçalera com la del disseny.
    Recorda que has de posar #titol {propietats…}
    Segueix el tutorial de w3schools i canvia:
    1. Colors
    2. Fons
    3. Costats
    4. Marges
    5. Padding
    6. Model de capça
  2. Identifica el div de seccions com a “seccions”. Fes el mateix que a l’exercici anterior, afegim que aquest element ha d’estar al costat esquerra. Mira la propietat de float i fes que sigui de 200px i estigui a l’esquerra.
  3. Classifica cada element del llistat com a “titolSeccio”. Canvia de font https://www.w3schools.com/css/css_text.asp

https://www.optimizesmart.com/introduction-to-dom-nodes-css-selectors-for-google-tag-manager/

2.1. Editor de Codi

Per donar una forma correcta a l’entrada empram l’estructura HTML, l’HTML no és un llenguatge de programació, és un llenguatge de marques. Amb ell podem marcar les parts de la nostra pàgina, les podem identificar i classificar.

Què és HTML?

  1. HTML és un Hyper Text Markup Language (llenguatge de marques)
  2. HTML és l’estàndart per escriure pàgines HTML.
  3. HTML descriu l’estructura d’una pàgina web
  4. HTML són una sèrie d’elements
  5. HTML diu al navegador com s’ha de mostrar el contingut
  6. HTML són elements de peces de contingut tal com “això és una capçalera”, “això és un paràgraf”, “això és un enllaç”, etc.

Per exemple, el text anterior a html seria:

See the Pen exemple HTML basic by PereAntoni (@pereantoni) on CodePen.

Els editors de codi ens permeten implementar un “programa” que podrà ser executat, visualizat mitjançant:

  • Un Sistema Operatiu. Quan és una aplicació compilada.
  • Un Debugger. Quan és un codi i vol ser testejat.
  • Un Navegador. Codi HTML, Javascript, CSS i altres variants.

Per exemple, editar amb html, javascript i CSS es pot emprar:

  1. Editors de text simple notepad, gedit, …
  2. Editors dedicats a implementar codi, podeu llegir aquesta entrada per veure quins tipus d’editors existeixen
  3. Editors sandbox online, com pot ser el codepen.io, w3schools, etc…

Pràctica:

Cream una pàgina dins el nostre ordinador.

L’objectiu és crear una pàgina HMTL al nostre ordinador i visualitzar·la amb un navegador.

  1. Instal·lar aplicació: Per fer aquest exercici ens instal·larem l’editor de codi Visual Studio Code de la pàgina https://code.visualstudio.com/

2. Configuram carpeta de Projecte: Una vegada instal·lada l’aplicació configuram la carpeta de projectes, és on es guardaran els arxius. Pitjant sobre add workSpace Folder.

3. Cream la pàgina index.html: Després cream un arxiu i li posam de nom index i el guardam dins el nostre workspace.

Dins index.html hi escrivim (copiam i aferram) :

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
</body>
</html>

4. Obrim index.html amb el navegador. Per obrir el document que hem creat hem d’anar a la carpeta workSpace i fer dos clicks sobre l’arxiu “index.html” que hem creat. Ens toca sortir com la següent imatge.

5. Mostram el codi i la pàgina a la vegada. Ara hem d’aconseguir tenir les dues finestres (editor de codi i navegador) alhora sobre el monitor, tal com mostra la següent imatge: