Professional Documents
Culture Documents
Asidai 225x c02 Ud1
Asidai 225x c02 Ud1
ndex
Introducci .............................................................................................. Objectius .................................................................................................. 1. Introducci a la programaci web esttica ..................................... 1.1. Funcionament del servei web ................................................... 1.1.1. Classificacions de la programaci web .......................... 1.2. Llenguatges de marques ............................................................ 1.2.1. LHTML ............................................................................ 1.2.2. LXML .............................................................................. 1.2.3. La DTD ............................................................................. 1.2.4. LXHTML .......................................................................... 1.3. El CSS ......................................................................................... 1.4. Validaci ...................................................................................... 2. Els llenguatges de marques: (X)HTML .......................................... 2.1. Estructura d'un document (X)HTML ...................................... 2.1.1. La declaraci XML i la DTD ........................................... 2.1.2. L'element arrel <html> .................................................. 2.1.3. La capalera i el cos ......................................................... 2.1.4. Comentaris ....................................................................... 2.2. Marques del cos del document ................................................. 2.2.1. Tipus delements ............................................................. 2.2.2. Atributs genrics .............................................................. 2.3. Marques de text .......................................................................... 2.3.1. Pargrafs ........................................................................... 2.3.2. Els encapalaments ......................................................... 2.3.3. mfasi ............................................................................... 2.3.4. Citacions ........................................................................... 2.3.5. Salts de lnia ..................................................................... 2.3.6. Separadors ........................................................................ 2.3.7. Acrnims i abreviatures .................................................. 2.3.8. Text preformatat ............................................................. 2.3.9. Codi de programaci ....................................................... 2.3.10.Divisions sense atributs semntics ............................... 2.3.11.Marques antiquades .................................................... 2.4. Enllaos ....................................................................................... 2.4.1. Enllaos a pgines externes ........................................... 2.4.2. Enllaos a pgines locals ................................................ 2.4.3. ncores ............................................................................. 2.5. Imatges ........................................................................................
7 8 9 9 10 11 11 11 14 16 17 17 18 18 18 19 19 20 21 21 21 22 23 23 24 25 26 26 27 27 28 28 29 29 30 30 31 32
2.6. Llistes .......................................................................................... 2.6.1. Llistes ordenades ............................................................. 2.6.2. Llistes desordenades ....................................................... 2.6.3. Llistes de definici .......................................................... 2.6.4. Enniuament de llistes ..................................................... 2.7. Taules .......................................................................................... 2.7.1. Expansi de files i columnes .......................................... 2.8. Formularis ................................................................................... 2.8.1. Propietats d'un formulari ............................................... 2.8.2. Etiquetes dun formulari ................................................ 2.8.3. Atributs genrics dels controls dun formulari ............ 2.8.4. Camps de text .................................................................. 2.8.5. Camps de contrasenya .................................................... 2.8.6. Botons d'opci .................................................................. 2.8.7. Caselles de verificaci ..................................................... 2.8.8. Llistes de selecci ............................................................ 2.8.9. rees de text ..................................................................... 2.8.10.Botons ............................................................................... 2.8.11.Controls ocults ................................................................. 2.9. Marcs ........................................................................................... 2.9.1. Estructura dun web fet amb marcs .............................. 2.9.2. Enniuament de marcs ..................................................... 2.9.3. Modificaci de pgines daltres marcs .......................... 2.9.4. El problema dels marcs .................................................. 2.10.Mapes .......................................................................................... 2.10.1.Mapes gestionats des del client ..................................... 2.10.2.Mapes gestionats des del servidor ................................ 2.11.Objectes ...................................................................................... 2.11.1.Tipus MIME ..................................................................... 2.11.2.Connectors ....................................................................... 2.11.3.Exemples dincorporaci dobjectes genrics en una pgina web ........................................................... 3. Els fulls destils: CSS ........................................................................ 3.1. Ubicaci dels estils ..................................................................... 3.2. Sintaxi bsica de CSS ................................................................. 3.2.1. Les regles arrova .............................................................. 3.2.2. Comentaris ....................................................................... 3.3. Cascada i herncia ..................................................................... 3.3.1. Cascada ............................................................................. 3.3.2. Herncia ........................................................................... 3.4. Selectors ...................................................................................... 3.4.1. Selectors de tipus ............................................................ 3.4.2. Selectors de classes ......................................................... 3.4.3. Selectors d'identificador ................................................. 3.4.4. Selectors d'atribut ............................................................
33 33 33 34 35 35 37 39 41 42 43 43 43 43 44 44 46 47 48 48 49 51 51 52 53 53 55 55 57 58 59 61 62 63 64 65 65 65 66 66 67 67 68 69
3.4.5. Selector universal ............................................................ 3.4.6. Selectors de descendents ................................................ 3.4.7. Selectors de fills ............................................................... 3.4.8. Selectors de germans adjacents ..................................... 3.4.9. Agrupament de selectors ................................................ 3.5. Pseudoclasses i pseudoelements .............................................. 3.5.1. Pseudoclasses .................................................................. 3.5.2. Pseudoelements ............................................................... 3.6. Propietats bsiques de format .................................................. 3.6.1. Mesures i colors ............................................................... 3.6.2. Fonts ................................................................................. 3.6.3. Aspecte del text ................................................................ 3.6.4. Color i fons ....................................................................... 3.7. El model de caixa ....................................................................... 3.8. El format visual dels elements dun document ...................... 3.9. Exemples prctics amb CSS ...................................................... 3.9.1. Fer mens amb llistes ..................................................... 3.9.2. Maquetaci de webs sense s de taules ........................
70 70 71 72 72 73 73 75 76 76 76 78 78 79 82 84 84 86
Introducci
Un dels serveis ms utilitzats a Internet s el servei web. Aquest servei ens ofereix la possibilitat de navegar per multitud de pgines web, que estan formades per un conjunt de documents que poden tenir contingut textual, grfic, udio, animacions, etc. Les tecnologies per confeccionar pgines web on diverses, per en aquesta unitat didctica ens centrarem en la ms bsica: la programaci web esttica. s a dir, aprendrem les tecnologies bsiques per tal de confeccionar pgines web senzilles, sense gaire interacci amb l'usuari, per atractives i accessibles per a aquest. La unitat didctica Programaci web esttica pretn iniciar lalumne en el desenvolupament daplicacions web: saprn a dissenyar aplicacions web esttiques i se nestudia tant lestructura com lesttica. En el nucli dactivitat Introducci a la programaci web esttica es donen les nocions bsiques dall que es coneix com a programaci web. Sofereixen els conceptes genrics de com funcionen les aplicacions web i es fa una descripci genrica breu dels llenguatges de marques ms usats. En el nucli dactivitat Els llenguatges de marques: (X)HTML sanalitza amb profunditat la famlia de llenguatges (X)HTML. Aquests llenguatges sn els que ha dutilitzar el dissenyador de la pgina web per estructurar la informaci que finalment es visualitza en el navegador. Els llenguatges (X)HTML permeten inserir, en els continguts, marques que els navegadors saben interpretar. En el nucli dactivitat Els fulls destils: CSS es presenta el llenguatge CSS, que ens permet fer el disseny esttic de la interfcie web. Per aconseguir aquests objectius, heu de reproduir en el vostre ordinador tots els exemples que sincorporen en el text, per a la qual cosa, en la secci Recursos de contingut, trobareu tots els arxius necessaris, a ms de les activitats i els exercicis dautoavaluaci. Tamb s aconsellable, per descomptat, llegir els annexos.
Objectius
En acabar la unitat didctica, heu de ser capaos del segent: 1. Identificar quan una pgina web compleix els estndards vigents. 2. Elaborar pgines web esttiques a partir del llenguatge de marques (X)HTML i dels fulls destils CSS, amb lajut deines especfiques per crear pgines web.
La programaci web, lobjectiu de la qual s crear aplicacions web, engloba un ampli ventall de tecnologies que inclou ledici de lestructura de les pgines, el disseny daquestes pgines, la interacci amb lusuari... Tot i que podem tenir aplicacions web locals al nostre ordinador, lestructura daquest tipus daplicacions est pensada perqu sigui una aplicaci remota a la qual podem accedir grcies a un programa (el navegador web).
Quan sestableix una comunicaci entre el client (el navegador) i el servidor se segueixen els passos segents: 1) El client fa una petici en qu demana veure una pgina web. 2) El servidor processa la petici i envia al client els fitxers corresponents a aquesta petici. 3) El client rep la informaci, la interpreta i la mostra de manera adequada perqu lusuari pugui veure-la.
Navegadors En lactualitat disposem de diversos programes navegadors, com per exemple Firefox, Internet Explorer, Opera i Safari, entre daltres.
10
En la figura 1 podeu veure simbolitzat aquest procs. Ara b, sempre que dos ordinadors es comuniquen entre si han dusar un protocol de comunicacions per tal de poder entendres. Aquest protocol ha de ser conegut per les dues mquines.
Un protocol de comunicacions determina com dues mquines o ms es comuniquen entre elles i el format de la informaci que es transmeten.
Els protocols que es fan servir per demanar i rebre pgines web sn lHTTP (hypertext transfer protocol) i lHTTPS (secure hypertext transfer protocol), depenent de si enviem la informaci en clar o encriptada. Aix doncs, la funci principal dun servidor web s rebre peticions HTTP o HTTPS i servir les pgines web corresponents. Els fitxers que rep el client en la comunicaci sn de diversos tipus: fitxers HTML, fulls destils, imatges, fitxers amb codi JavaScript... Els navegadors, doncs, han de saber interpretar tots aquests tipus de fitxers.
AJAX La tecnologia AJAX (asynchronous JavaScript and XML) s una barreja intelligent de la programaci web en el client i de la programaci web en el servidor. Aquesta barreja proporciona pgines web fora espectaculars.
11
1.2.1. LHTML
El llenguatge de marques HTML (hyper text markup language) s el llenguatge de marques predominant de les aplicacions web actuals. Permet descriure tant lestructura com la presentaci dels documents que conformen laplicaci web.
El llenguatge HTML ens permet marcar la nostra informaci de manera que podem incorporar-hi encapalaments, pargrafs, llistes, enllaos, taules, formularis, imatges... El llenguatge de marques HTML t, per, dos grans desavantatges: 1) El fet que es disposi de marques que serveixen per a la presentaci del document fa que es barregi lestructura i la presentaci de la web. Aix resta modularitat a la nostra aplicaci. 2) No t normes molt estrictes de sintaxi. Per solucionar aquests dos problemes va sorgir el llenguatge de marques XHTML (extensible hyper text markup language), que no s altra cosa que aplicar les normes del metallenguatge XML (extensible markup language) al ja existent llenguatge HTML.
1.2.2. LXML
LXML (extensible markup language) s un metallenguatge de marques que ens serveix per estructurar la informaci semnticament, sense tenir en compte la seva aparena final.
12
LXML no ens defineix quines marques podem usar, sin com shan dusar. s a dir, ens diu quina sintaxi hem dusar, siguin quines siguin les marques que usem. Per exemple, si volem fer un smil amb les llenges usades normalment, podrem definir el metallenguatge de les llenges romniques donant com a norma que hem descriure desquerra a dreta, que les frases han de tenir subjecte i predicat, i que podem usar certs signes de puntuaci; no direm, per, quines sn les paraules que podem usar, aix ho definir cadascuna de les llenges. Un document XML est format per nodes. Aquests nodes poden ser de diferents tipus, tal com es pot veure en la taula 1, on es mostren alguns dels tipus de nodes ms importants.
Taula 1. Tipus de nodes XML Tipus delement Elements Atributs Nodes de text Entitats predefinides Comentaris Descripci Sn les marques que permeten identificar i diferenciar les diferents parts de les dades. Serveixen per donar informaci addicional a un element. Sn les dades del document. Serveixen per representar carcters especials. Serveixen per introduir comentaris per al programador Sintaxi
<element></element> <element /> <element atribut=valor></element> <element>text</element> &entitat; <!-- comentari -->
En la figura 2 es pot veure un exemple de document XML en qu es diferencien els diferents tipus de nodes. En la figura 3 veiem una representaci del mateix document en forma darbre. Els nodes dun document XML estan relacionats entre si. Podem establir diferents relacions: Element arrel: s lelement que engloba tots els altres. En lexemple de la figura 2 lelement arrel s <recepta>. Pares i fills: un element s fill dun altre quan est immediatament dins seu. En lexemple de la figura 2 lelement <nom> s fill de lelement <ingredient> i, per tant, lelement <ingredient> s el pare de lelement <nom>. Germans: dos elements sn germans quan tenen el mateix pare. En lexemple de la figura 2 els elements <titol>, <imatge>, <ingredients> i <preparacio> sn germans.
13
Daquesta manera podem entendre un document XML com una estructura en forma darbre, tal com es mostra en la figura 3.
Figura 3. Representaci dun document XML en forma darbre
Els documents XML han de complir les normes de sintaxi segents: Els elements shan de tancar (o amb la marca de tancament <marca></marca>, o tancant-se ella mateixa <marca />): s correcte: <titol>Truita a la francesa</titol> s incorrecte: <titol>Truita a la francesa
14
Els elements han destar correctament enniuats. s correcte: <ingredient><nom>Oli</nom></ingredient> s incorrecte: <ingredient><nom>Oli</ingredient></nom> Tots els documents tenen un element arrel. s correcte:
<?xml version="1.0" encoding="utf-8"?>
<recepta>
... </recepta>
s incorrecte:
<?xml version="1.0" encoding="utf-8"?> <recepta> ... </recepta> <observacions> ... </observacions>
Tots els atributs han danar entre cometes. s correcte: <nom quant="2">Ou</nom> s incorrecte: <nom quant=2>Ou</nom>
Diem que un document est ben format si respecta totes les regles de sintaxi de lXML.
1.2.3. La DTD
Mentre que l'XML ens defineix la sintaxi d'un document, la DTD (document type definition) ens defineix quins sn els elements i atributs permesos d'aquest document, lordre en qu poden anar aquests elements i quins nodes poden anar dins de quins altres. La DTD defineix els elements, atributs i entitats permesos en el document, i a ms indica com podem combinar aquests nodes.
XML Schema Tot i que ls de la DTD est molt ests, hi ha una altra manera de definir els nodes permesos i les seves caracterstiques. Lalternativa s usar XML Schema. Aquesta alternativa ens proporciona ms opcions i ms flexibilitat.
Si ho comparem amb les llenges parlades, en el cas de les llenges romniques, l'XML ens definiria que hem d'escriure d'esquerra a dreta. La DTD, en canvi, ens definiria quines paraules podem usar, s a dir, ens definiria el vocabulari. En la taula 2 sexposen algunes caracterstiques bsiques de la sintaxi duna DTD.
15
Taula 2. Sintaxi bsica duna DTD Sintaxi Descripci Defineix un element que no t contingut. En el document XML apareixer amb una marca que es tancar en ella mateixa (<nom-element />). <!ELEMENT nom-element (#PCDATA)> Defineix un element que cont text. Defineix un element que cont altres elements; aquests elements fills poden portar un modificador que ens indica els cops que poden aparixer: <!ELEMENT nom-element (elem1, elem2,...)> elem: apareix un cop elem*: apareix 0 cops o ms elem+: apareix 1 cop o ms elem?: apareix 0 cops o 1 Defineix un atribut especificant el nom de latribut (nom-atribut) i el nom de lelement al qual pertany latribut (nom-element). Els tipus-atribut ms usats sn els segents: CDATA: text <!ATTLIST nom-element nom-atribut tipus-atribut valor-per-defecte> (valor1|valor2|...): els valors de latribut noms poden ser alguns dels valors enumerats Els valor-per-defecte ms usats sn: valor: especifica el valor que t latribut per defecte #REQUIRED: especifica que latribut s obligatori #IMPLIED: especifica que latribut no s obligatori
Per exemple, per al document XML definit en la figura 2 crearem un document recepta.dtd en qu introduirem la DTD segent:
<!ELEMENT recepta ( titol, imatge, ingredients, preparacio ) > <!ELEMENT titol ( #PCDATA ) > <!ELEMENT imatge EMPTY > <!ATTLIST imatge ubicacio CDATA #REQUIRED > <!ELEMENT ingredient ( nom ) > <!ATTLIST ingredient quant CDATA #IMPLIED > <!ELEMENT ingredients ( ingredient+ ) > <!ELEMENT nom ( #PCDATA ) > <!ELEMENT preparacio ( #PCDATA ) >
Per com li podem dir a un document XML quina DTD ha d'usar? Podem trobar diversos casos, com figuren en la taula 3.
Taula 3. Com es pot enllaar el document XML amb la DTD que es vol usar On Sintaxi Exemple
<!DOCTYPE recepta [ <!ELEMENT recepta (titol,plat, ingredients,preparacio)> ... <!ELEMENT preparacio (#PCDATA)> ]> <recepta> ... </recepta>
16
On La DTD est definida en un fitxer extern. La DTD est definida en un fitxer extern pblic.
Sintaxi
Exemple
<!DOCTYPE recepta SYSTEM "dtds/recepta.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> ... </html>
Per exemple, si volgussim usar una DTD que est descrita en un fitxer de nom recepta.dtd, haurem d'incloure una lnia amb la definici de la DTD, desprs de la declaraci de la versi i codificaci del document:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE recepta SYSTEM "recepta.dtd"> ...
!!
Per veure la sintaxi dXML i DTD completa podeu consultar la secci Annexos del web daquest crdit.
Diem que un document valida si est ben format i respecta totes les regles que especifica la DTD que t associada.
1.2.4. LXHTML
Una de les definicions que podem trobar al W3C (World Wide Web Consortium) del llenguatge de marques XHTML s la segent: lXHTML (extensible hyper text markup language) s una versi ms estricta i neta dHTML, que neix precisament amb lobjectiu de reemplaar lHTML davant la seva limitaci ds amb les cada cop ms abundants eines basades en XML. XHTML estn HTML 4.0 combinant la sintaxi dHTML, dissenyat per mostrar dades, amb la dXML, dissenyat per descriure les dades.
W3C El W3C (World Wide Web Consortium) s lorganitzaci internacional ms important que sencarrega de desenvolupar i promocionar els estndards en el mn web.
Hem de tenir en compte que quan confeccionem un document XHTML, tot i que algunes de les marques permeses ens permeten definir l'aspecte del document, hem d'intentar seguir la filosofia XML, s a dir, definir noms la semntica del document, no l'aparena. Per exemple, si volem que el text Fauna i flora a la Garrotxa sigui un encapalament, usarem l'XHTML per fer-ho. Per dir que aquest text s un encapalament no vol dir, per exemple, que el text Fauna i flora de la Garrotxa ha d'aparixer en negreta i mida de lletra 20 (aix seria la seva aparena i per definir-la usarem CSS, cascade style sheets). Quan parlem de la famlia de llenguatges (X)HTML, ens estem referint a dues famlies de llenguatges: la famlia XHTML i la famlia HTML, que es distingeixen per complir o no les normes de sintaxi XML. Cadascuna
17
daquestes dues grans famlies tenen diversos llenguatges de marques definit cadascun dells per la seva DTD (strict, transitional o frameset). Aquests llenguatges sn els segents: HTML 4.01 Strict HTML 4.01 Transitional HTML 4.01 Frameset XHTML 1.0 Strict XHTML 1.0 Transitional XHTML 1.0 Frameset XHTML 1.1 DTD Si estem fent una web que mant lestructura separada del disseny podem usar les DTD Strict, ja que aquestes DTD no permeten usar gaireb cap marca o atribut que faci referncia a lesttica de la web. En canvi, si la nostra web usa marques o atributs que fan referncia a lesttica de la pgina, ens veiem forats a usar les DTD Transitional. Finalment, si la nostra web est feta amb marcs hem dusar les DTD Frameset.
1.3. El CSS
El CSS (cascading style sheets) s un mecanisme simple que descriu com es mostra un document en la pantalla o com simprimeix, o fins i tot, com es pronuncia la informaci present en el document a travs dun dispositiu de lectura. El CSS sutilitza per donar estil a documents (X)HTML separant el contingut de la presentaci. Els estils defineixen la forma de mostrar els elements HTML i XML.
Exemple daplicaci de CSS Si en un document (X)HTML hem definit que un text s un encapalament, en el document CSS associat podem definir que els tipus de lletra dels encapalaments s verdana de mida 20, que es visualitzen en negreta i que sn de color vermell. Si en el document (X)HTML hem definit que un text s un pargraf, en el document CSS associat podem definir que els pargrafs tindran fons gris i una vora.
1.4. Validaci
Quan escrivim un document amb llenguatge (X)HTML ens hem d'assegurar que hem complert els estndards. Per poder-ho fer W3C ens ofereix un servei de validaci de pgines, en el qual ens diuen si la nostra pgina compleix els estndards i, si no els compleix, quins errors hi hem coms. Tamb existeixen altres eines de validaci, com el programa Tidy, que ens permeten validar el nostre document sense necessitat d'estar en lnia.
Imatge de validaci Quan una web valida, acostuma a posar logos semblants als de la imatge per informar els seus visitants que compleix els estndards.
18
Per confeccionar una pgina web esttica s necessari saber com es pot estructurar tota la informaci que ha de contenir laplicaci. Hem de saber, doncs, quins elements podem usar en la famlia de llenguatges (X)HTML, quina sintaxi utilitzen i en quins casos shan dusar.
!!
Trobareu el codi de tots els exemples en la secci Recursos de contingut del web daquest crdit.
Si estigussim dissenyant un document HTML, aquesta lnia lhaurem dometre, ja que els documents HTML no sn documents XML. A tota pgina web s'hauria d'especificar la DTD per tal de saber amb quin llenguatge de la famlia (X)HTML estem treballant. Aquesta especificaci
19
ens permet validar la pgina. En l'actualitat, per, trobem moltes pgines web que no especifiquen quin DTD usen. Podem entendre que, o b no n'usen cap o b s'han oblidat d'especificar-la. En qualsevol dels dos casos, aquesta pgina incompleix els estndards proclamats pel W3C. Si usem la DTD XHTML Strict 1.0, la primera lnia del nostre fitxer .html s la segent:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd " >
!!
Per veure una llista de les DTD de la famlia (X)HTML podeu consultar en la web del crdit la secci Annexos del web daquest crdit.
La marca <meta> t diferents funcions, en aquest cas diem que el nostre document senviar com a text/html codificat amb UTF-8.
Perqu est perms enviar documents XHTML 1.0 com a text/html? L'XHTML s un format XML; aix vol dir que parlant de manera estricta s'hauria d'enviar amb un tipus de mitj relacionat amb lXML (application/xhtml+xml,application/xml, o text/xml). Malgrat tot, l'XHTML 1.0 es va dissenyar amb molta cura, de manera que si el document est fet amb cura hauria de funcionar tamb en agents d'usuari pensats per a l'HTML llegat. Si se segueixen algunes pautes senzilles es pot fer que molts documents XHTML 1.0 funcionin en navegadors antics. Malgrat tot, els navegadors antics noms interpreten el tipus de
!!
Per veure ms usos de la marca <meta>, podeu consultar en la web del crdit la secci Annexos del web daquest crdit.
20
mitj text/html, de manera que s'ha d'emprar aquest tipus de mitj si se'ls envia documents XHTML 1.0. S'ha de tenir present que enviar documents XHTML als navegadors com a text/ html vol dir que aquests navegadors veuran el document com a HTML i no com a XHTML. S. Pemberton (ed.). Preguntes ms freqents d'HTML i XHTML.
La marca <title> ens serveix per posar el ttol de la nostra web. El navegador mostra el contingut d'aquesta marca com a ttol de la finestra o de la pestanya on es mostra el document, com podem veure en la figura 4.
Figura 4. Visualitzaci del contingut de lelement <title>
Desprs de la capalera, tenim l'element <body>, que cont tot el contingut de la web.
<body> <!-- Contingut de la web --> </body>
La taula 4 ens mostra un resum de les marques que utilitzem per crear l'estructura mnima d'un document (X)HTML.
Taula 4. Elements de lestructura dun document (X)HTML Marques Descripci Element arrel de la pgina web. Capalera del document: espai destinat a contenir informaci sobre el mateix document. Ttol descriptiu de la pgina web: normalment apareix a la barra del navegador, tamb s el text que semmagatzema en els marcadors del navegador (llista de preferits). Metainformaci de la pgina: podem posar diverses marques <meta>, que serviran per donar informaci no visible del document. Cos de la web.
<html> </html> <head> </head> <title> </title> <meta /> <body> </body>
2.1.4. Comentaris
En un document (X)HTML podem posar anotacions que no es veuran reflectides quan es miri la web amb el navegador, per que sn tils per al desenvolupador web. La sintaxi dels comentaris amb (X)HTML s la segent:
<!-- comentari -->
21
22
Atributs de llenguatge: ens especifiquen diferents caracterstiques del llenguatge de l'element. lang: especifica el llenguatge de lelement. dir: especifica la direcci de lectura. Atributs devent: sn atributs que ens serveixen per associar una acci per fer quan es produeix alguna interacci de lusuari cap a lelement que t aquest atribut. Aquests atributs sn molt tils quan s'usa el llenguatge de programaci JavaScript: onclick: lacci es produeix quan fem un clic amb el ratol damunt de lelement. ondblclick: es fa doble clic amb el ratol. onmousedown: es prem el bot del ratol. onmouseup: es deixa de prmer el bot del ratol. onmouseover: estem amb el ratol fora dun element i el movem de manera que passem a estar damunt de lelement. onmousemove: es mou el ratol per damunt de lelement. onmouseout: quan estem amb el ratol damunt d'un element i el movem de manera que deixem destar al damunt. onkeypress: es prem una tecla i es deixa anar damunt de lelement. onkeydown: es prem una tecla damunt de lelement. onkeyup: es deixa anar una tecla damunt de lelement.
23
Marca <br /> <hr /> <em> </em> <strong> </strong> <blockquote></blockquote> <q> </q> <cite> </cite> <acronym> </acronym> <abbr> </abbr> <pre> </pre> <code> </code> <samp> </samp> <kbd> </kbd> <var> </var> <div> </div> <span> </span>
Tipus Bloc Bloc Lnia Lnia Bloc Lnia Lnia Lnia Lnia Bloc Lnia Lnia Lnia Lnia Bloc Lnia Salt de lnia Lnia separadora Text amb mfasi
Descripci
Text amb molt mfasi Citaci de tipus bloc Citaci de tipus lnia Font de la citaci Acrnim Abreviaci Text preformatat Codi de programaci Sortida dun programa Text per introduir per un usuari Variable o parmetre dun programa Marca de tipus bloc sense significat semntic Marca de tipus lnia sense significat semntic
2.3.1. Pargrafs
Entenem per pargraf un conjunt de frases que estan relacionades entre si. Els pargrafs sn elements de tipus bloc i la marca que s'usa s la marca <p>. Si, per exemple, tenim un pargraf que ens explica qu s el llenguatge XHTML, el marquem de la manera segent:
<p> L'XHTML (acrnim de eXtensible Hyper Text Markup Language) s el llenguatge de marques pensat per substituir l'HTML. L'XHTML t, bsicament, les mateixes funcionalitats que l'HTML noms que compleix les especificacions ms estrictes de l'XML. Per exemple totes les marques s'han de tancar apropiadament i han d'estar escrites en minscules. </p>
24
A continuaci veiem un fragment de document XHTML en qu ens expliquen diverses caracterstiques daquest metallenguatge. Fixem-nos en les marques dencapalament:
<h1>XML</h1> <p>XML, de langls eXtensible Markup Language (llenguatge de marques extensible), s un metallenguatge extensible, detiquetes,...</p> <h2>Histria</h2> <p>XML prov dun llenguatge inventat per IBM als anys setanta, anomenat GML (General Markup Language), i que va ser creat per la necessitat que tenia lempresa demmagatzemar grans quantitats dinformaci. Aquest llenguatge...</p> <h2>Parts dun document XML</h2> <h3>Prleg</h3> <p>Tot i no ser obligatori, els documents XML poden comenar amb unes lnies que descriuen la versi XML, el tipus de document...</p> <h3>Cos</h3> <p>A diferncia del prleg, el cos no s opcional en un document XML. Ha de contenir un nic element arrel... </p>
En la figura 5 podeu veure com visualitzaria un navegador aquesta pgina XHTML. Fixem-nos que, normalment, els navegadors posen un estil per defecte a cadascuna de les marques. Aix doncs, el text marcat amb <h1> s ms gran que el marcat amb <h2>, aquest s ms gran que el marcat amb <h3> i aix successivament.
Figura 5. Exemples de marques dencapalament
2.3.3. mfasi
Quan volem donar mfasi a una part de text perqu volem destacar-ne la importncia, tenim a la nostra disposici dues marques. La marca
25
<em> serveix per donar mfasi i la marca <strong> per donar molt mfasi. Imaginem que tenim un pargraf en el qual volem destacar algunes de les paraules que cont:
<p>L'XHTML t, bsicament, les <em>mateixes funcionalitats</em> que l'HTML noms que <strong>compleix les especificacions ms estrictes</strong> de l'XML.</p>
Per defecte, la majoria de navegadors mostren el text marcat amb <em> en lletra cursiva i el text marcat amb <strong> amb lletra negreta, com es veu en la figura 6.
Figura 6. Exemple de marques dmfasi
2.3.4. Citacions
Quan volem fer referncia a un text que no hem escrit nosaltres hem de fer servir les citacions. Tenim tres marques diferents per descriure-les: <blockquote>, <q> i <cite>. Si la citaci s tot un pargraf la marquem amb la marca <blockquote>. En canvi, si la citaci est enmig d'un element de bloc (per exemple, dins dun pargraf) usem la marca <q>, que s un element de lnia. Finalment, la marca <cite> ens serveix per marcar l'origen de la citaci (autor, ttol...). Posem un exemple ds daquestes marques: imaginem que estem fent una web on volem posar una citaci de lescriptor Manuel de Pedrolo:
<p> La frase <q>En cap moment no es pot dir <em>per sempre</em></q> de l'escriptor <cite>Manuel de Pedrolo</cite> apareix en el seu llibre <cite>Diari 1986</cite>. Aqu tenim la cita sencera: </p> <blockquote> <p> En cap moment no es pot dir <em>per sempre</em>. En canvi, sempre hi ha un moment en qu cal dir <em>mai ms</em>. Per: no s el mai ms un per sempre? Tanmateix, el per sempre se situa en el temps, mentre el mai ms s intemporal. </p> </blockquote>
26
Cal destacar que dins la marca <blockquote> no podem escriure text directament sin que hem dafegir una altra marca de bloc (<p>, <div>...). La figura 7 ens mostra el text anterior interpretat per un navegador.
Figura 7. Exemple de marques per a citacions
<p> Darrera aquesta porta visc, <br /> per no s <br /> si en puc dir vida. </p>
El navegador ens fa un salt de lnia cada cop que troba la marca <br /> tal com podem veure en la figura 8.
Figura 8. Exemple amb marca per al salts de lnia
2.3.6. Separadors
Si volem marcar una separaci podem usar la marca <hr />, que ens crea una barra horitzontal. Tot i aix, com que ens s molt fcil posar lnies separadores amb CSS, aquesta marca est caient en dess.
27
28
<p>En prmer el bot ens apareixer el text <samp>Introdueix el teu nom:</samp></p> <p>La lnia de codi <code>var <var>nom</var> = prompt("Introdueix el teu nom:","");</code> fa que l'aplicaci web ens demani el nostre nom i el desa a la variable <var>nom</var>.</p> <p>Recordeu que per tancar la finestra podem usar la combinaci de tecles <kbd>Alt</kbd> + <kbd>F4</kbd></p>
29
web i el peu de pgina. Per definir cadascuna daquestes capes, podem usar la marca <div>:
<div id="capcalera"> <!-- contingut de la capalera </div>
<div id="lateral"> <!-- contingut del men lateral (enllaos d'inters, informaci,...) --> </div> <div id="contingut"> <!-- contingut (el contingut de la pgina) --> </div> <div id="peu"> <!-- contingut del peu de pgina legals)--> </div>
2.4. Enllaos
L'xit de la WWW (World Wide Web) s el fet de poder navegar, s a dir, de poder saltar dun document a un altre a partir denllaos. El sistema que ens permet aquesta navegaci sanomena hipertext.
Lhipertext L'hipertext s un sistema dorganitzaci i presentaci de dades que permet a lusuari de moure's amb gran facilitat entre tems relacionats. Gran Diccionari de la llengua catalana, Gran Enciclopdia Catalana
La marca que t l(X)HTML per crear hiperenllaos s la marca <a>. Els elements <a> sn elements de lnia, ja que podem posar enllaos envoltats de text. Per indicar quin s el dest del nostre enlla usem latribut href. Tamb s convenient usar latribut genric de tipus core title per posar una breu descripci de lenlla.
Destins dels enllaos El dest d'un enlla no ha de ser sempre un altre document (X)HTML. Pot ser una imatge, un fitxer de so, un fitxer de vdeo...
30
La gran majoria de navegadors visualitzarien el codi anterior com es reflecteix en la figura 12. En la majoria de navegadors podem veure la URL dest a la barra destat del navegador, quan ens situem damunt de lenlla.
Figura 12. Exemple denlla a pgines locals
31
2.4.3. ncores
Alguns documents (X)HTML sn molt extensos i ens pot interessar navegar en la mateixa pgina. Per poder fer aix hem de posar unes marques que denotin els punts on volem anar (ncores) i crear enllaos cap a aquests punts. Els punts on volem anar sanomenen ncores i per tal de crear-les susa l'atribut id de lelement. Si, per exemple, volem fer una ncora a un element <h2> hem descriure el codi segent:
<h2 id="seccio1">Segona secci</h2>
ncores amb atribut name Les ncores tamb es poden fer usant la marca <a> amb latribut name: <a name="seccio1"/> Aquest mtode, per, est obsolet.
Un cop tenim feta l'ncora hi podem enllaar des de qualsevol punt del text fent un enlla a lncora. Els enllaos a ncores es caracteritzen perqu el dest es denota amb el valor de latribut id de lelement al qual volem enllaar precedit del carcter #. Si volem enllaar a lncora creada en lexemple anterior escriurem, doncs, el codi segent:
<a href="#seccio1" title="Secci 1">Anar a la secci 1</a>
Imaginem un text molt llarg amb diferents seccions. Per tenir una bona navegabilitat podem crear un petit ndex a linici del document que tingui enllaos cap a les diferents parts del document. A ms, tamb podem fer enllaos que ens condueixin a linici del document:
<h1 id="dalt">Seccions</h1> <div id="menu"> <a href="#seccio1" title="Secci 1">Anar a la secci 1</a> <a href="#seccio2" title="Secci 2">Anar a la secci 2</a> <a href="#seccio3" title="Secci 3">Anar a la secci 3</a> </div> <h2 id="seccio1">Secci 1</h2> <p>...</p> <p><a href=#dalt" title="A dalt">Anar a dalt</a></p> <h2 id="seccio2">Secci 2</h2> <p>...</p> <p><a href="#dalt" title="A dalt">Anar a dalt</a></p> <h2 id="seccio3">Secci 3</h2> <p>...</p> <p><a href="#dalt" title="A dalt">Anar a dalt</a></p>
Si el que volem s enllaar a una ncora des dun altre document podem fer el segent:
<a href="seccions.html#seccio1" title="Secci 1">Anar a la secci 1</a>
32
2.5. Imatges
Les imatges sn un recurs molt utilitzat en el desenvolupament web. A part de fer ms atractiva la nostra aplicaci, ens permeten donar informaci duna manera visual. Tot i aix, hem de vigilar, no fos cas que hi hagus un excs dimatges: hem danar amb cura tant amb el nombre dimatges, com amb la mida daquestes imatges. Lexcs d'imatges far que la pgina sigui massa carregada i desagradable estticament, i el pes daquestes imatges pot fer que la navegaci per la nostra aplicaci sigui massa lenta. La marca que ens serveix per inserir una imatge s la marca <img>. Es tracta dun element de lnia que no t marca de tancament: es tanca en ella mateixa. Latribut src ens servir per dir on est ubicada la imatge (podem posar una URL externa o el cam del fitxer, si disposem de la imatge localment). Tamb usarem latribut alt, que ens servir per posar un text alternatiu, en el cas que el navegador no pogus accedir a la nostra imatge. Si, per exemple, volem inserir una imatge que tenim al directori imatges que es diu logo.png i, si no es pot visualitzar aquesta imatge, volem que surti el text Logo de la web, hem descriure el codi segent:
<img src="imatges/logo.png" alt="Logo de la web" />
En el cas que vulguem que una imatge sigui un enlla haurem denniuar correctament les marques <a> i <img>. Per exemple, si volem incorporar el logotip del W3C per destacar que la nostra pgina compleix els estndards i, a ms, volem enllaar aquesta imatge cap al validador en lnia que ens ofereix el W3C (i aix mostrar que realment el nostre document s vlid), posarem el codi segent:
<div id="validacio"> <a href="http://validator.w3.org/check?uri=referer"> <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" /> </a> </div>
33
2.6. Llistes
Les llistes sn el recurs que ens serveix per fer una enumeraci. Hi ha tres tipus de llista: les llistes ordenades, les llistes desordenades i les llistes de definici.
En la figura 14 podem veure la visualitzaci de lexemple en un navegador, juntament amb una llista desordenada.
Figura 14. Exemple de llistes
34
Si, per exemple, volem llistar tots els ingredients necessaris per fer una truita a la francesa, ho codifiquem de la manera segent:
<h2>Ingredients</h2> <ul> <li>Ous</li> <li>Sal</li> <li>Oli</li> </ul>
En la figura 14 podem veure la visualitzaci daquesta llista no numerada, juntament amb la preparaci de la truita, que s una llista numerada.
<dl> <dt>HTML</dt> <dd>Llenguatge de marques dissenyat per estructurar textos i relacionar-los en forma dhipertext.</dd> <dt>XML</dt> <dd>Metallenguatge extensible, d'etiquetes. No s realment un llenguatge en particular, sin una manera de definir llenguatges per a diferents necessitats.</dd> <dt>XHTML</dt> <dd>Llenguatge de marques amb les mateixes funcionalitats que l'HTML i que compleix les especificacions de l'XML.</dd> </dl>
Figura 15. Llista de definici
35
2.7. Taules
Les taules sn un recurs que ens permet mostrar informaci tabulada en files i columnes. Molts llocs web usen les taules per maquetar la seva es-
36
tructura, s a dir, si, per exemple, la web t un men lateral i un cos, es codifica una taula de dues columnes i es posa el contingut de la web en les celles daquesta taula. Hem devitar aquesta prctica, ja que complica el codi innecessriament. Per maquetar fem s dels elements <div> conjuntament amb fulls d'estils CSS. Les marques bsiques per fer taules sn les que trobareu en la taula 6.
Taula 6. Marques per a taules Marca Descripci Atributs destacats summary: petit resum del propsit de la taula width: amplada de la taula border: indica la mida de la vora de la taula cellpadding: indica lespai entre les vores de la cella fins al contingut de la cella cellspacing: indica lespai entre celles
<table>
Taula
Ttol associat a la taula Fila Cella Cella capalera Ens permet agrupar les diferents files de la taula que formen la capalera daquesta taula. Ens permet agrupar les diferents files de la taula que formen el peu daquesta taula. Ens permet fer diferents agrupacions de files de la taula. align: alineaci horitzontal valign: alineaci vertical align: alineaci horitzontal valign: alineaci vertical rowspan: nombre de files dexpansi colspan: nombre de columnes dexpansi
Per realitzar una taula, hem de marcar-ne linici i el final amb la marca <table>. Dins daquest element hem de posar tants elements <tr> com files tingui la taula. Finalment, dins de cada element <tr> hem de posar tants elements <td> com columnes tingui la taula. Si les celles sn celles de capalera, s a dir, tenen certa rellevncia, enlloc de posar la marca <td> posem la marca <th>. A vegades, voldrem agrupar les files en grups, per denotar quines files formen la capalera de la taula, quines el peu i si hi diferents agrupacions en les files que conformen el cos de la taula. Per tal de fer aix, usem les marques <thead>, <tfoot> i <tbody>, respectivament. Imaginem que volem fer una taula de 7 files i 2 columnes. La primera fila s la capalera de la taula, les cinc segents conformen el cos de la taula i lltima s el peu. Tindrem el codi segent, el resultat del qual el podem veure en la figura 17:
<table border="1"> <thead> <tr> <th>Nom</th>
Grups de columnes Igual que podem fer agrupacions de files duna taula, tamb es poden agrupar les columnes duna taula usant les marques <colgroup> i <col>.
37
<th>Descripci</th> </tr> </thead> <tfoot> <tr> <th>Nmero de programadors</th> <th>5</th> </tr> </tfoot> <tbody> <tr> <td>Richard Stallman</td> <td>Emacs, gcc, gdb, fundador del projecte GNU,...</td> </tr> <tr> <td>Linus Torvalds</td> <td>Autor del nucli de Linux</td> </tr> <tr> <td>Donald Becker</td> <td>Drivers d'Ethernet per a Linux</td> </tr> <tr> <td>Tim Berners-Lee</td> <td>Inventor del World Wide Web</td> </tr> <tr> <td>Brian Behlendorf</td> <td>Apache</td> </tr> </tbody> </table>
Figura 17. Taula simple
Observem que, en el codi, la fila que fa de peu de pgina la podem escriure abans que les que fan de cos, ja que el navegador ja sap que s peu de taula, ats que est marcat amb la marca <tfoot>.
38
Latribut colspan serveix per fusionar dues celles o ms horitzontalment. Latribut es posa a la cella que ha docupar ms duna columna i se li dna com a valor el nombre de columnes que ha docupar. Latribut rowspan serveix per fusionar dues celles o ms verticalment. Latribut es posa a la cella que ha docupar ms d'una fila i se li dna com a valor el nombre de files que ha d'ocupar. Imaginem que volem posar lhorari escolar que es veu en la figura 18. Per aconseguir-ho hem descriure el codi segent:
<table summary="Horari" border="1"> <caption>Horari</caption> <thead> <tr> <th> </th> <th>Dilluns</th> <th>Dimarts</th> <th>Dimecres</th> <th>Dijous</th> <th>Divendres</th> </tr> </thead> <tbody> <tr> <td>16.00-16.55</td> <td rowspan="2">Bases de dades</td> <td rowspan="2">Xarxes</td> <td rowspan="2">Programaci Estructurada</td> <td>Xarxes</td> <td>Bases de dades</td> </tr> <tr> <td>16.55-17.50</td> <td rowspan="2">Sistemas Operatius</td> <td rowspan="2">Xarxes</td> </tr> <tr> <td>17.50-18.45</td> <td>Programaci Estructurada</td> <td>Programaci Estructurada</td> <td>Bases de dades</td> </tr> </tbody> <tbody> <tr> <td>18.45-19.15</td> <td colspan="5">Pati</td> </tr> </tbody> <tbody> <tr> <td>19.15-20.10</td> <td>Programaci Estructurada</td> <td>Programaci Estructurada</td> <td rowspan="2">FOL</td> <td rowspan="2">Programaci Estructurada</td> <td rowspan="2">RAT</td> </tr> <tr> <td>20.10-21.05</td> <td rowspan="2">Sistemas Operatius</td>
39
<td>Sistemas Operatius</td> </tr> <tr> <td>21.05-21.45</td> <td> </td> <td> </td> <td>Tutoria</td> <td> </td> </tr> </tbody> </table>
Figura 18. Taula amb expansions de files i columnes
2.8. Formularis
Els formularis web ens serveixen per interactuar amb lusuari i perqu aquest usuari ens pugui transmetre informaci. Aquesta informaci es pot processar de diferents maneres, segons les necessitats de laplicaci web. Tcnicament, un formulari no s altra cosa que un fragment de codi (X)HTML que cont uns elements caracterstics anomenats controls. Tenim diversos tipus de control: camps de text, camps de contrasenya, botons dopci (radio buttons), caselles de verificaci (checkbox), camps per introduir fitxers, llistes de selecci, rees de text i botons. En la figura 19 podeu veure un formulari amb tots aquests controls.
Figura 19. Controls dun formulari
40
Cadascun dels controls dun formulari ha de tenir latribut name, amb el qual sidentifica la dada que es vol enviar. Posem un exemple: tenim un camp de text lobjectiu del qual s que lusuari introdueixi el seu nom i suposem que lusuari introdueix Pau. Si el valor de latribut name del camp de text s nom (name=nom), la informaci que s'enviar s nom=Pau. Fixem-nos en el codi daquest formulari:
<h1>Contacta amb nosaltres</h1> <form action="processa.html" method="get"> <fieldset> <legend>Dades personals</legend> <div> <label for="nom">Escriu el teu nom: </label> <input type="text" name="nom" size="30" maxlength="100" id="nom"/> </div> <div> <label for="contrasenya">Escriu la teva contrasenya: </label> <input type="password" name="contrasenya" size="10" maxlength="15" id="contrasenya" /> </div> <div> Edat: <input <label <input <label <input <label </div>
type="radio" name="edat" id="edat_menor" value="menor" /> for="edat_menor">Menys de 18 anys </label> type="radio" name="edat" id="edat_major" value="major" checked="checked" /> for="edat_major">De 18 a 65 anys </label> type="radio" name="edat" id="edat_jubilat" value="jubilat" /> for="edat_jubilat">Ms de 65 anys</label>
<div> <label for="municipi">On vius? </label> <select name="municipi" id="municipi"> <option value="Abella de la Conca">Abella de la Conca</option> <option value="Abrera">Abrera</option> <option value="ger">ger</option> <option value="Agramunt">Agramunt</option> <option value="Aguilar de Segarra">Aguilar de Segarra</option> <option value="Agullana">Agullana</option> <option value="Aiguafreda">Aiguafreda</option> ... </select> </div> <div> <label for="foto">Envia'ns la teva foto: </label><input type="file" name="foto" id="foto" /> </div> </fieldset> <fieldset> <legend>Aficions</legend> <div> Escull les teves aficions: <input type="checkbox" name="llegir" id="llegir" value="si" /> <label for="llegir">Llegir</label> <input type="checkbox" name="cine" id="cine" value="si" /> <label for="cine">Anar al cine</label> <input type="checkbox" name="trekking" id="trekking" value="si" /> <label for="trekking">Trekking</label>
41
</div> </fieldset> <fieldset> <legend><label for="comentari">Comentaris</label></legend> <div> <textarea name="comentari" id="comentari" cols="30" rows="5">Escriu aqu els teus comentaris</textarea> </div> </fieldset> <div> <input type="reset" value="Esborrar formulari" /> <input type="submit" value="Enviar formulari" /> </div> </form>
42
Si lusuari entra de nom Anna i de contrasenya secreta, quan premi el bot per enviar el formulari anirem a parar a la URL segent: http://elquesigui.org/accio.php?nom=Anna&edat=secreta. Suposem que canviem el mtode denviar les dades per un mtode de tipus post:
<form action="processa.php" method="post"> ... </form>
La URL que veurem seria http://elquesigui.org/accio.php, per les dades shaurien enviat igualment en la capalera HTTP.
Capalera HTTP Per tal de veure les capaleres HTTP quan s'usa el mtode POST, podrem usar un analitzador de xarxes, com pot ser el programa Wireshark. Un exemple de capalera HTTP amb POST fent la captura amb aquest programa ens retornaria el segent: POST /processa.php HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.8.1.12) Gecko/20080129 Iceweasel/2.0.0.12 (Debian-2.0.0.12-1) Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/ png,*/*;q=0.5 Accept-Language: ca,es;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://localhost/formulari_complet.html Content-Type: application/x-www-form-urlencoded Content-Length: 28 nom=Anna&contrasenya=secreta
Atribut enctype: aquest atribut ens indica el tipus de contingut que enviem amb el formulari (quan el mtode s de tipus post). Per defecte, el valor s application/x-www-form-urlencoded. Si el formulari ens permet enviat un fitxer hem de canviar aquest valor per multipart/form-data.
43
Els camps de contrasenya sn els camps en qu lusuari pot introduir una contrasenya, ja que el text que sintrodueix queda camuflat amb asteriscos. Per crear un camp de text usem la marca <input type=password />, i els mateixos atributs que utilitzem per als camps de text. Un exemple de camp de contrasenya seria el segent:
No hem de pensar que la informaci que posem en els controls de tipus password est securitzada ja que si no s'usa el protocol https la informaci circula per la xarxa sense xifrar.
44
value: si est seleccionat, estableix quin valor es tramet. size: determina la mida del control en pxels. Habitualment, no noms posem un bot dopci sin que en posem diversos dassociats entre si. Per exemple, si demanem el sexe de la persona, tenim dos botons dopci, un per senyalar que ss dona i laltre per senyalar que ss home. Per tal que el formulari spiga que aquests botons dopci estan relacionats, donem el mateix valor a latribut name. Fixem-nos en lexemple segent, en qu apareixen tres botons dopci:
<input <label <input <label <input <label type="radio" name="edat" id="edat_menor" value="menor"/> for="edat_menor">Menys de 18 anys </label> type="radio" name="edat" id="edat_major" value="major" checked="checked"/> for="edat_major">De 18 a 65 anys </label> type="radio" name="edat" id="edat_jubilat" value="jubilat"/> for="edat_jubilat">Ms de 65 anys</label>
Observem que els tres controls tenen el mateix valor en el camp name (edat). Aix, quan trametem el formulari ens arriba una de les tres possibilitats segents: edat=menor o b edat=major o b edat=jubilat.
type="checkbox" name="llegir" id="llegir" value="si"/> for="llegir">Llegir</label> type="checkbox" name="cine" id="cine" value="si"/> for="cine">Anar al cine</label> type="checkbox" name="trekking" id="trekking" value="si"/> for="trekking">Trekking</label>
En aquest cas, si premssim les caselles Llegir i Anar al cine senviaria: llegir=si&cine=si.
45
de selecci mltiple, que ens deixen escollir ms d'una opci (prement la tecla Ctrl mentre seleccionem les diverses opcions). La funci de la llista de selecci simple s similar als botons d'opci (noms es pot triar una opci), mentre que la funci de la llista de selecci mltiple s similar a les caselles de verificaci (podem triar ms duna opci). Malgrat tot, el format de presentaci i el funcionament del control s diferent. Per crear una llista de selecci usem dues marques: La marca <select> ens serveix per dir on comena i s'acaba la llista de selecci. Tenim els atributs segents: name: nom del control. size: mida del control en nombre dopcions visibles. multiple: si l'establim (<select multiple="multiple">) far que aquesta llista sigui una llista de selecci mltiple. Per a cadascuna de les opcions usem la marca <option>. Aquesta marca est continguda dins de la marca <select> i a la seva vegada cont el text de l'opci que s'ha de seleccionar. T els atributs segents: value: determina el valor que s'envia si se selecciona aquesta opci. selected: si lestablim (selected="selected") aquesta opci est seleccionada per defecte. Hem de tenir en compte que si la llista s de selecci simple, noms haurem de tenir una opci amb aquest atribut, mentre que si s de selecci mltiple podem posarlo en ms duna opci. Un exemple de llista dopci s el segent:
<label for="municipi">Marca els muncipis que has visitat:</label> <select name="municipi" id="municipi" multiple="multiple"> <option value="Abella de la Conca">Abella de la Conca</option> <option value="Abrera">Abrera</option> <option value="ger">ger</option> <option value="Agramunt">Agramunt</option> <option value="Aguilar de Segarra">Aguilar de Segarra</option> <option value="Agullana">Agullana</option> <option value="Aiguafreda">Aiguafreda</option> ... </select>
En aquest cas, es permet que lusuari marqui diverses opcions. Si per exemple, marca que ha visitat les poblacions dAbrera i dAiguafreda, senvia municipi=Abrera&municipi=Aiguafreda.
46
Si volem classificar les diferents opcions de la llista en grups posant-los un ttol descriptiu, podem usar la marca <optgroup>, com es veu en lexemple segent:
<label for="municipi">On vius? </label> <select name="municipi" id="municipi" size="15"> <optgroup label="Capitals"> <option value="bcn">Barcelona</option> <option value="gir" selected="selected">Girona</option> <option value="lle">Lleida</option> <option value="tar">Tarragona</option> </optgroup> <optgroup label="Altres municipis"> <option value="Abella de la Conca">Abella de la Conca</option> <option value="Abrera">Abrera</option> <option value="ger">ger</option> <option value="Agramunt">Agramunt</option> <option value="Aguilar de Segarra">Aguilar de Segarra</option> <option value="Agullana">Agullana</option> <option value="Aiguafreda">Aiguafreda</option> ... </optgroup> </select>
El contingut de latribut label de lelement <optgroup> es mostra com un ttol descriptiu, per no es pot seleccionar. Podem veure aquesta llista en la figura 20.
Figura 20. Exemple de llista de selecci
47
Veiem un exemple de control drea de text en qu deixem a lusuari cinc files i trenta columnes visibles per escriure. El text que est entre les marques dinici i fi s el text que surt per defecte a lrea de text:
<textarea name="comentari" id="comentari" cols="30" rows="5">Escriu aqu els teus comentaris</textarea>
2.8.10. Botons
Els botons dun formulari ens serveixen per fer accions quan els premem. Tenim tres tipus de botons: Bot d'enviament de formulari: quan es prem aquest bot el formulari es tramet. s a dir, les dades sn enviades al dest que hem posat en l'atribut action de l'element form. Per inserir un bot d'aquest tipus usem la marca <input type="submit" />. Disposem a ms de latribut value, que ens indica el text que apareix en el bot. Bot de reestabliment del formulari: quan es prem aquest bot el formulari torna a posar-se en lestat inicial. s a dir, s'esborra tot all que ha escrit l'usuari i es posen les dades per defecte de l'usuari. Per inserir un bot d'aquest tipus usem la marca <input type="reset" />. Amb latribut value podem indicar el text que apareix al bot. Bot genric: podem inserir botons en els quals podem afegir noves funcions mitjanat codi de programaci. Per poder fer aix usem la marca <button></button>. El valor que ens apareix al bot s all que posem entre linici i el fi de la marca. Podem posar tant text com imatges. Aquest control t els atributs segents: type: defineix quin tipus de bot s. Pot prendre els valors segents: submit (amb la mateixa funci que els botons denviament de formulari), reset (amb la mateixa funci que els botons de reestabliment de formulari), button (bot genric). name: nom del control value: valor que es tramet quan premem el bot. Posem com a exemple els botons ms usats, que sn el de reestabliment de formulari i el denviament de formulari:
<input type="reset" value="Esborrar formulari" /> <input type="submit" value="Enviar formulari" />
48
2.9. Marcs
Molt sovint trobem llocs web en els quals, per a totes les pgines del lloc, hi ha parts amb el mateix contingut (capalera, bners, men...). Una soluci barroera per fer aquest tipus de lloc s tenir un document (X)HTML per a cada pgina on molta part del contingut s el mateix. El problema que ens pot comportar aquesta soluci s que si volem modificar alguna cosa d'aquestes parts fixes, ho haurem de fer a cadascun dels documents (X)HTML. Aix, a part de ser una feina repetitiva, pot conduir a mltiples errors. Els marcs sn una soluci alternativa a aquest problema. La idea s que dividim el navegador en diverses seccions i a cadascuna de les seccions se'ns carrega una pgina (X)HTML diferent. Per tal d'aconseguir aquesta soluci hi ha un document (X)HTML extra que ens serveix per definir les seccions en qu volem dividir la finestra del navegador. Imaginem la situaci segent: volem un lloc web amb una capalera fixa, un men lateral fix, un peu de pgina fix i un cos variant. Per aconseguir aquest lloc web necessitarem diversos fitxers: un fitxer marcs.html (o index.html, si fos la pgina principal) on es defineix l'estructura de la pgina; un fitxer cap.html, on posem la capalera; un fitxer menu.html, on posem el men; un fitxer peu.html, i diversos fitxers .html que aniran mostrant les diferents seccions de la web (inici.html, seccio1.html, seccio2.html...). La situaci descrita es pot veure en la figura 21.
Marcs flotants Hi ha un altre tipus de marcs que podem incrustar directament en el document (X)HTML. Funcionen igual que si inserssim una imatge per el que inserim s un marc que t com a contingut un altre document (X)HTML. Per fer aquest tipus de marcs susa la marca <iframe>: <iframe src=pagina.html />.
49
50
<frame> per a cada subespai. Disposem dels atributs segents per tal de definir cadascun dels subespais: src: indica ladrea del document (X)HTML que hi haur al marc. name: assigna un nom al marc per poder-shi referir posteriorment. scrolling: decideix si es colloquen o no barres de desplaament en el marc per poder-nos moure pel seu contingut. El seu valor per defecte s auto, que deixa la decisi al navegador. Les altres opcions sn yes i no. noresize: atribut boole mitjanant el qual, si sespecifica, lusuari no pot canviar la mida del marc. Per especificar-lo hem descriure noresize="noresize". frameborder: si ligualem a zero selimina la vora amb tots els marcs que cont que tamb tinguin aquest valor a zero. marginwidth: permet canviar els marges horitzontals dins un marc. Es representa en pxels. marginheight: permet canviar els marges verticals dins un marc. Es representa en pxels. Vegem ara un seguit d'exemples que ens generarien diverses estructures: 1) Divisi de la pantalla en dos seccions horitzontals de mida igual.
<frameset rows="50%, 50%"> ...la resta de la definici... </frameset>
2) Divisi de la pantalla en tres columnes: la segona columna amb una amplada fixa de 250 pxels (la qual cosa s til, per exemple, per incloure una imatge de mida coneguda), de l'espai restant a la primera columna shi assigna el 25% i a la tercera el 75%.
<frameset cols="1*,250,3*"> <frame name="superior" src="superior.html" /> <frame name="inferior" src=inferior.html" /> </frameset>
4) Divisi de la pantalla en tres files: la segona fila t una alada total fixa de 300 pxels. De l'espai restant la primera fila n'ocupa un 30%. Finalment,
51
lalada del quart marc sha especificat com a 2*, de manera que s el doble dalt que el tercer marc, que t alada * (equivalent a 1*).
<frameset rows="30%,400,*,2*" /> <frame name="superior" src="superior.html" /> <frame name="central" src="central.html" /> <frame name="inferior" src="inferior.html" /> </frameset>
Si suposem que la nostra pantalla t una alada de 1.000 pxels, tindrem que la primera fila t una alada de 300 pxels (que s el 30% de 1.000), la segona fila t una alada de 400 pxels. Ens queden 300 pxels disponibles per als altres dos marcs. Per tant, el tercer marc t 100 pxels dalada i el quart, 200 pxels. Els navegadors hauran dajustar les longituds absolutes que no sumin el 100% de lespai real disponible. Si sobra espai, shaur de repartir proporcionalment entre cada vista. Si falta espai, shaur de reduir cada vista segons la relaci entre lespai indicat i lespai total.
52
inferior esquerre) sin que se'ns obrin al marc inferior dret, on hi ha el cos de la web. Per tal de fer aix hem d'usar l'atribut target de la marca <a>. Com a valor de target hem descriure el name del marc on volem que se'ns obri la pgina dest de l'enlla. El fitxer marcs.html amb lestructura del lloc web s:
<frameset rows="15%, 75%, *"> <frame name="cap" src="cap.html" /> <frameset cols="30%, 70%"> <frame name="menu" src="menu.html" /> <frame name="cos" src="seccio1.html" /> </frameset> <frame name="peu" src="peu.html" /> </frameset>
Aix fa que en prmer el segon enlla sens obr el document seccio1.html en el marc que t com a valor de name el text cos. Com hem vist, latribut name sespecifica en la marca <frame> del document de definici de marcs.
53
</head> <frameset rows="15%, 75%, *"> <frame name="cap" src="cap.html" /> <frameset cols="20%, 80%"> <frame name="menu" src="menu.html" /> <frame name="cos" src="seccio1.html" /> </frameset> <frame name="peu" src="peu.html" /> <noframes> <body> <h1>El navegador que ests usant no suporta marcs. Ho sento per no podrs veure el contingut d'aquesta pgina...</h1> </body> </noframes> </frameset> </html>
2.10. Mapes
La combinaci de la marca <a> amb la marca <img> ens permet fer que una imatge sigui alhora un enlla. Per si all que volem s que segons on premem de la imatge vagi a un enlla o a un altre haurem de recrrer a un altre recurs: els mapes sensibles. Els mapes sensibles sn imatges que presenten mltiples enllaos segons la zona en qu se situ el cursor.
Hi ha dos tipus de mapes, els mapes gestionats des del client i els mapes gestionats des del servidor.
54
A la marca <map> noms hi podem definir el nom del mapa. s dins de cada marca <area> que podem definir ms dades, els atributs per fer-ho sn els segents: shape: defineix la forma de la zona, que pot ser rectangular (rect), circular (circ) o poligonal (poly). coords: defineix les coordenades de la zona, seguint la normativa segent: Si es tracta dun rectantgle (rect), cal indicar les coordenades x1, y1, x2, y2, on x1 i y1 sn les coordenades de lextrem superior esquerre, i x2 i y2, les de lextrem inferior dret. Si es tracta dun cercle (circ), cal indicar les coordenades x, y, r, on x i y sn les coordenades del centre del cercle, i r el radi daquest cercle. Si es tracta dun polgon (poly), cal indicar les coordenades x1, y1, x2, y2, x3, y3,..., on cada parella xi, yi defineix un vrtex del polgon. La darrera parella suneix a la primera per tancar el polgon. href: defineix lenlla cap a la destinaci de lusuari si prem sobre la zona. nohref: si lestablim (nohref="nohref") indiquem que la zona no t cap enlla definit. alt: incorpora el text que es presenta en lloc de la imatge en navegadors no visuals per accedir a lenlla. 2) Lassignaci dun mapa a una imatge es fa amb latribut usemap dins la marca <img>, que declara la imatge segons la sintaxi segent:
<img src="cami_imatge" usemap="#nom_mapa" />
El nom del mapa sempre ha danar precedit del smbol # i ha de coincidir amb latribut name de la marca <map>. Imaginem que tenim la imatge que es veu en la figura 22, i volem que en prmer sobre el cap anem a la URL http://fsf.org, en prmer sobre la panxa anem a http://gnu.org i en prmer els peus anem a http://debian.org, el codi seria el segent:
<img src="linux.png" alt="linux" usemap="#linuxmapa" /> <map name="linuxmapa" id="mapa"> <area shape="circle" coords="74,43,40" href="http://fsf.org" alt="Free Software Foundation" title="FSF" /> <area shape="rect" coords="42,89,126,133" href="http://gnu.org" alt="GNU is Not Unix" title="GNU" /> <area shape="poly" coords="27,130,10,141,5,167,53,179" href="http://debian.org" alt="Debian" title="Debian" /> <area shape="poly" coords="108,133,138,134,152,158,114,182" href="http://debian.org" alt="Debian" title="Debian" /> <area shape="default" nohref="nohref" alt="resta" /> </map>
55
Per exemple:
<a href="mapaservcoord.html"><img src="imatges/linux.png" alt="linux" ismap="ismap" /></a>
Aix fa que si premem les coordenades 5,15 de la imatge anem a la pgina mapaservcoord.html?5,15. La pgina de destinaci pot agafar la part de la URL que cont les coordenades i gestionar-les com convingui.
2.11. Objectes
La marca <object> neix per oferir una soluci universal per a la inclusi de qualsevol tipus de fitxers en els documents (X)HTML, de manera que els navegadors rebin la informaci necessria per tractar lobjecte (fitxer incrustat en el document). Com a regla general, la marca <object> serveix per definir un objecte o component extern al navegador que sencarrega de reproduir l'objec-
56
te (so, animaci, vdeo...). Per aconseguir una reproducci correcta, la marca <object> ha de permetre declarar lobjecte, la seva ubicaci i el seu tipus, i unes marques optatives especials, <params>, permeten acabar de definir els valors que necessiti. La sintaxi genrica s la segent:
<object atribut1="valor1" atribut2="valor2" ... atributN="valorN"> <param name="nom" value="valor"> <param name="nom" value="valor"> ... </object>
Un atribut bsic en la declaraci dun objecte s latribut type, que permet indicar al navegador el tipus dobjecte que ha de carregar. El navegador ha dutilitzar aquesta informaci per esbrinar si disposa dalguna aplicaci adequada per reproduir lobjecte, i nha davortar la crrega si no en disposa. De tot aix es dedueix que hi ha dos punts importants perqu un objecte es pugui reproduir correctament: 1) El tipus de lobjecte ha destar ben identificat en el document (X)HTML. Per a aix, cal utilitzar els tipus MIME. 2) El navegador ha de tenir installada alguna aplicaci adequada per tal de reproduir lobjecte. Les aplicacions que possibiliten aquesta funci sanomenen connectors (plugins). La taula 7 mostra una llista dels atributs ms utilitzats en la marca <object>.
Taula 7. Atributs d<object> Atribut Descripci Nom del fitxer per reproduir amb la seva ubicaci. Cadena amb el tipus MIME adequat a lobjecte. Amplada en pxels del control. Alada en pxels del control. Missatge que apareix en pantalla mentre lobjecte es carrega.
57
Quant als parmetres, depenent de quin objecte vulguem encastar, en podrem posar uns o uns altres.
c) Definici dobjectes:
<object data="musica.mp3" type="audio/mpeg"> <p>Text alternatiu</p> </object>
58
3) En el navegador del client, que ha destar capacitat per interpretar els tipus MIME que el servidor li envia i, fins i tot, ha de poder informar el servidor dels tipus MIME que pot acceptar. Per permetre aquesta funci, el navegador ha de tenir installades les aplicacions adequades als diferents tipus MIME que interessi gestionar. Sn els connectors (plugins). Actualment, els tipus MIME sagrupen en vuit categories, i cada tipus MIME sidentifica pel nom compost: categoria/tipus. De vegades, es parla de tipus/subtipus. Les vuit categories sn les segents: application, audio, image, message, model, multipart, text i video. Cadascuna est formada per un conjunt ms o menys gran de tipus MIME, i cadascun dels tipus acostuma a dur associades una extensi darxius o ms duna. La taula 8 recull alguns dels tipus MIME amb algunes de les extensions darxius normalment associades.
Taula 8. Recull de tipus MIME i extensions associades darxius Tipus/Subtipus MIME image/png image/gif image/jpeg image/tiff audio/x-wav audio/x-midi text/plain text/richtext video/mpeg Extensions de fitxers .png .gif .jpg, .jpeg, .jpe .tif, .tiff .wav .mid .txt .rtf, .rtx .mpeg, .mpg, .mpe Tipus/Subtipus MIME video/x-msvideo application/pdf application/postscript application/rtf application/gzip application/x-tar application/zip application/x-java-vm application/x-java-archive Extensions de fitxers .avi .pdf .ai, .eps, .ps .rtf .gz .tar .zip .class .jar IANA Lorganisme que sencarrega de registrar els tipus MIME s lIANA, acrnim angls dInternet Assigned Numbers Authority (Agncia dAssignaci de Nmeros dInternet). A la seva pgina web podem trobar la llista completa de tipus/subtipus MIME.
Logotip dIANA
2.11.2. Connectors
Per reproduir arxius definits dins les pgines web com a objectes genrics, els navegadors necessiten tenir installat el connector adequat.
Els connectors (plugins) sn aplicacions informtiques que interactuen amb una altra aplicaci per afegir-hi una funci o utilitat especfica.
s a dir, si en un document web shi ha incrustat un objecte (<object>) que fa referncia a un document dun cert tipus MIME, el navegador que
59
lhagi de reproduir ha de disposar dun connector adequat per a aquell tipus MIME. El fet que el sistema operatiu disposi duna aplicaci que pugui reproduir un determinat arxiu (corresponent a un tipus MIME) no s garantia que els navegadors installats en aquell sistema tinguin installat el connector corresponent. Els navegadors, en rebre pgines web que contenen tipus MIME no suportats, haurien doferir a lusuari (recomanaci del W3C) la possibilitat dinstallar-les duna manera senzilla. Si es vol saber els connectors que es tenen installats al navegador Firefox sha descriure about:plugins en la barra de navegaci. El navegador ens mostra un document HTML amb la informaci corresponent a tots els connectors installats, com es veu en la figura 23. La informaci que dna s molt interessant: connectors installats (versi i nom de larxiu corresponent) i, per a cada connector, la relaci de tipus MIME mitjanant els quals pot donar servei.
Figura 23. Connectors installats al navegador Firefox
60
En la figura 24 podem veure totes les canons dun lbum, on cada can est incrustada com un objecte. En aquest cas sest usant el connector de Totem (programa de visionat de vdeo i udio en sistemes GNU/Linux).
Figura 24. Objectes dudio inserits en una pgina web
61
En els orgens del web i en les seves primeres versions, el llenguatge de marques HTML era un llenguatge fcil daprendre i molt redut quant a les marques i lestructura. Tot va canviar quan van aparixer els primers navegadors que eren capaos de representar recursos grfics per afegir a la informaci textual. Daquesta manera, el nombre de llocs web va comenar a crixer i, amb ell, el nombre de marques que lespecificaci HTML preveia. Lobjectiu era construir llocs web cada vegada ms atractius i, per a aix, lHTML havia dincloure noves marques destinades a aconseguir efectes visuals. Amb tots aquests canvis que el web va patir, ens trobem amb un llenguatge que, si b al principi estava orientat a lestructura, ara est totalment orientat a la presentaci. Aix trobem que lHTML ofereix marques com <b>, <u>, <i> o <font>, que sn marques de visualitzaci i no aporten res a lestructura del document representat. El naixement dXHTML vol posar fi a aquest problema: les marques permeses en XHTML sn marques per marcar lestructura, no la presentaci. Ens falta, per, alguna manera de definir la presentaci del document i aix s el que ens oferir ls dels fulls destils. La finalitat de ls de fulls destils s, doncs, a ms dincorporar el disseny esttic a la nostra aplicaci web, mantenir lestructura i el disseny separats. Usar fulls destils ens proporciona els avantatges segents: Possibilitat de mantenir el codi. En el camp de disseny, el CSS s ms potent que les marques de disseny que oferia lHTML. El CSS s un llenguatge senzill. Es poden especificar diferents fulls destils per a un sol document (X)HTML. Per exemple, podem tenir lestil per a la pgina web quan es visita amb el navegador i lestil per a quan volem imprimir aquesta pgina. El gran inconvenient dels fulls destils s que no tots els navegadors es comporten de la mateixa manera davant del mateix full d'estils. Aix es deu al fet que alguns navegadors no compleixen els estndards establerts i, amb aix, obliguen el programador a codificar diferents fulls d'estils (un per a cada navegador).
Igual que podem validar documents (X)HTML, tamb podem validar els nostres fulls destils per comprovar que segueixen els estndards proposats pel W3C. Validaci de fulls destils
62
A ms, hem de tenir en compte que hi ha dues especificacions oficials de CSS: CSS1 i CSS2.
Especificacions CSS Els fulls destil estan formalment descrits en dues especificacions del W3C: CSS1 i CSS2. CSS1 es va emetre el desembre de 1996 i descriu un model de formataci simple, principalment per a presentacions basades en la pantalla. CSS1 t al voltant de 50 propietats (per exemple color i mida de font). CSS2 senllestia el maig de 1998 i est basada en CSS1. CSS2 inclou totes les propietats del CSS1 i nafegeix al voltant de 70 ms, com per exemple propietats per descriure presentacions auditives i salts de pgina[...]. Si vol llegir les especificacions de CSS, les pot trobar a: http://www.w3.org/TR/REC-CSS1 http://www.w3.org/TR/REC-CSS2 Hkon Wium Lie; Bert Bos (1999). Cascading Style Sheets: Designing for the Web (captol 2). Disponible a: http://www.w3.org/Style/LieBos2e/enter
Hem de tenir en compte que la majoria de navegadors suporten CSS1, per no tots suporten totes les propietats que ofereix CSS2.
En la capalera del document (X)HTML: podem posar les diferents propietats CSS dins de lelement <style> que est ubicat dins lelement <head>. Suposem que volem que tots els pargrafs estiguin centrats i amb lletra vermella. El codi s el segent:
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/ DTD/xhtml1-strict.dtd " > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ca" lang="ca"> <head> ... <style> p { text-align:center; color:red } </style> </head> <body> <p>Pargraf centrat vermell</p> </body> </html>
63
En un document extern: posem totes les propietats dins d'un document amb extensi .css i des del document (X)HTML enllacem aquest full d'estils amb lajut de la marca <link>, filla de l'element <head>. Suposem que volem tenir tots els pargrafs centrats amb lletra vermella. El document (X)HTML s:
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/ DTD/xhtml1-strict.dtd " > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ca" lang="ca"> <head> <link rel="stylesheet" href="estils.css" type="text/css" /> </head> <body> <p>Pargraf centrat vermell</p> </body> </html>
Lavantatge dusar documents externs per establir les propietats CSS s que podem reutilitzar un mateix full destils per a diferents documents (X)HTML.
Un full d'estils s un conjunt de regles que defineixen lesttica final dels documents (X)HTML que lusen. Cadascuna d'aquestes regles est formada per un selector i per un conjunt de declaracions. Una declaraci est formada per una propietat amb el seu valor associat.
El selector ens serveix per definir a quin o a quins elements volem aplicar les declaracions de la regla. Les declaracions sn les diverses caracterstiques que ha de complir el selector. A cada propietat de cada declaraci hi posem el valor que sescaigui. La sintaxi genrica duna regla s, doncs, la segent:
selector{ declaraci_1 ... declaraci_n }
64
Per exemple, si volem que tots els pargrafs tinguin lletra de mida 10 pt i un fons de color gris hem de definir la regla segent:
p { font-size: 10pt; background-color: gray; }
Regla @media. La regla @media serveix per diferenciar per quin mitj s'ofereixen les propietats que cont aquesta regla. La sintaxi genrica s la segent:
@media mitj{ propietats }
on mitj pot ser print (per imprimir) o screen (per mostrar per pantalla), entre d'altres. Imaginem, per exemple, que volem que, quan imprimim el document (X)HTML, la lletra tingui una mida de 10 pt, per que, quan es miri per pantalla, tingui una mida de 12 pt. Tamb volem que en ambds casos lalada de la lnia sigui d1.2. En el nostre full destils hem dintroduir el codi segent:
@media print { body{ font-size: 10pt } } @media screen { body { font-size: 12pt } } @media screen, print { body { line-height: 1.2 } }
65
3.2.2. Comentaris
Si en un full destils volem posar comentaris destinats a laclariment del codi CSS hem de fer servir la sintaxi segent:
/* comentaris */
3.3.1. Cascada
Les sigles CSS volen dir Cascading Style Sheets (Fulls destils en cascada). Per, qu vol dir cascada en aquest mbit? Doncs vol dir que podem combinar diferents fulls destils i que les propietats de tots ells es van acumulant. Aix ens s molt til quan pensem en llocs web grans, on podem tenir un full destils bsic i anar incorporant-hi altres fulls destils, segons les nostres necessitats. Ara caldria preguntar-nos si podem combinar diferents fulls destils i si hi ha propietats que es contradiuen, com se soluciona. Quina propietat t prioritat? Per solucionar aquest problema hi ha establerta la jerarquia segent: 1) Propietats establertes per lautor de la web. Les propietats que estableix lautor es poden ubicar en diferents llocs i, segons aquesta ubicaci, la propietat t ms o menys prioritat. La jerarquia s la segent, per ordre de quina preval sobre les altres: a) Propietats establertes en latribut style dun element. b) Propietats establertes en lelement <style> del document (X)HTML. c) Propietats establertes en un full destils extern. 2) Propietats establertes per lusuari. Els navegadors permeten a lusuari establir diferents propietst destil: mida de la lletra, colors... 3) Propietats establertes pel navegador. Els navegadors tenen un estil predeterminat per a cadascun dels elements (X)HTML. Si no sha esta-
66
blert cap propietat en els tems anteriors, les propietats del navegador sn les que prevalen. Podem invertir lordre anterior posant la cadena !important desprs d'una declaraci. Aix fa que l'estil d'usuari prevalgui davant de la propietat especificada per l'autor. Aquest fet ens serveix perqu la pgina sigui ms accessible, ja que si, per exemple, alg t problemes de visi, li permetem que pugui fer la lletra ms gran, tot i que l'aplicaci estigui pensada per ser visualitzada amb una lletra ms petita. Si ens trobem en el cas que les propietats empaten, lltima propietat escrita s la que guanya. Si hem escrit el codi segent en un full destils extern:
p{ color:red; } ... p{ color:green; } ...
En aquest cas la lletra dels pargrafs ser de color verd, ja que s lltima escrita.
3.3.2. Herncia
Cada element d'una pgina (X)HTML est contingut en un altre. Quan parlem d'herncia ens referim al fet que tot element hereta les propietats dels seus elements antecessors. Malgrat tot, hem de tenir en compte el segent: No totes les propietats s'hereten, aquesta caracterstica est descrita en lespecificaci de CSS corresponent. Si volem forar l'herncia en una propietat podem introduir-hi el valor inherit. Si posem un valor a una propietat, aquest valor preval sobre el valor heretat. Els elements hereten el valor computat, no el valor especificat. s a dir, si una propietat t per valor un valor relatiu (per exemple, un percentatge), el valor heretat s el resultat calculat.
3.4. Selectors
Un selector s la part de la regla CSS que identifica lelement o elements del document (X)HTML dels quals volem definir les propietats.
67
Hi ha diferents tipus de selectors: des dels ms simples, en qu simplement s posar la marca (X)HTML a la qual volem modificar lesttica, fins a combinacions complexes daquests selectors.
Per, i si no volem modificar laparena de tots els elements dun mateix tipus? Per aconseguir aix hem dusar altres tipus de selectors, com ara els selectors de classes i els selectors didentificadors.
Aix fa que a tots els elements tag que tinguin latribut class amb valor nomclasse sels apliquin les propietats especificades. Tamb podem definir un selector de classe ms genric, que no depengui de la marca de lelement. s a dir, podem definir la regla segent:
.nomclasse{ declaracions }
Aquesta regla fa que qualsevol element, sigui quina sigui la seva marca, si t latribut class amb valor "nomclasse" tingui la lletra de color verd.
68
Posem un exemple: volem que tots els pargrafs siguin de color verd, excepte els de classe destacat, que sn de color vermell. El codi CSS s el segent:
p{ color:green; } p.destacat{ color:red; }
Qualsevol pargraf, amb marca <p> t el color de lletra verd, per si introdum un pargraf amb classe destacat, <p class="destacat">, la lletra daquest pargraf s de color vermell. Si el que volem s que qualsevol element amb class="destacat" tingui la lletra vermella hem descriure el codi segent:
.destacat{ color:red; }
Podem introduir la mateixa regla prescindint de quin element porti lidentificador, s a dir, podem dir:
#nomidentificador{ declaracions }
Si, per exemple, volem que lelement amb identificador principal, per exemple <h1 id="principal">, estigui centrat hem descriure:
#principal{ text-align:center; }
69
Per exemple, si volem que hi hagi un marge dret de 10 px en tots els elements <img> que tinguin establert latribut title, hem descriure el segent:
img[title] { margin-right:10px; }
Aquest selector permet diverses variants. Una delles s que podem jugar amb el valor de latribut. En lexemple anterior podem haver decidit que volem un marge dret de 10 px en totes les imatges que tenen establert latribut title i que, a ms, aquest atribut ha de tenir per valor logo. El codi CSS ha de ser el segent:
img[title="logo"] { margin-right:10px; }
Tamb podem filtrar per ms dun atribut. Per exemple, si ara volem seleccionar tots els elements <img> que tenen latribut title i que sn de classe important, tindrem el codi segent:
img[title][class="preferent"] { margin-right:10px; }
Finalment, podem filtrar segons el valor de latribut. Disposem de dues frmules per fer-ho: [atribut~="valor"]: susa per seleccionar els elements que tenen com a atribut una llista de paraules separades per espais, una de les quals s exactament valor. [atribut|=valor]: susa per seleccionar els elements que tenen com a atribut una llista de paraules separades per guions, comenant per valor.
70
La primera regla selecciona les imatges en les quals latribut alt t per valor una cadena que cont la paraula logo, com per exemple alt="logo de la web". La segona regla selecciona els pargrafs que tenen com a valor de latribut lang, paraules que comencen amb en, com en-US o en-cockney.
Per exemple, si volem posar en blau tots els elements <em> continguts en un pargraf hem descriure:
p em{ color:blue; }
Podem posar ms nivells i barrejar altres tipus de selectors. Imaginem un exemple ms complex: volem posar amb lletra vermella tots els elements de classe destaca que estiguin continguts en pargrafs que alhora estan continguts en un <div>:
div p .destaca{ color:red; }
71
La primera lnia de lexemple fa que tots els pargrafs que sn fills de <body> estiguin en lletra negreta. La segona regla s una mica ms complexa: el selector afecta tots els elements <p> que sn descendents d'un element <li>, on l'element <li> ha de ser fill d'un element <ol> que, alhora, ha de ser descendent d'un element <div>. Aquests dos exemples combinats amb el codi (X)HTML segent fan que observem el resultat que es mostra en la figura 25 en el nostre navegador:
<body> <p>pargraf en negreta</p> <div> <p>pargraf normal</p> <div> <ol> <li> <p>pargraf subratllat</p> <p>pargraf subratllat</p> </li> <li> <div> <p>pargraf subratllat</p> </div> </li> </ol> <ul> <li> <p>pargraf normal</p> <p>pargraf normal</p> </li> <li> <div> <p>pargraf normal</p> </div> </li> </ul> </div> </div> </body>
Figura 25. Selectors de fill
72
Si, per exemple, volem reduir lespai vertical que hi ha entre un <h1> i l<h2> que el segueix immediatament, hem de definir la regla segent:
h1 + h2 { margin-top: -5mm }
Complicant una mica la regla anterior, fa que la regla noms sapliqui si lelement <h1> s de classe oberta (class="obert"):
h1.obert + h2 { margin-top: -5mm }
73
3.5.1. Pseudoclasses
A continuaci enumerem les pseudoclasses que hi ha amb la seva descripci i alguns exemples: :first-child. Selecciona un element que s el primer fill dun altre element. Per exemple, CSS:
/*els pargrafs fills de div.nota tindran un sagnat d'1 em*/ div.nota > p { text-indent:1em; } /* els pargrafs primer fill de div.nota tindran un sagnat de 2em */ div.nota > p:first-child { text-indent:2em; }
(X)HTML:
<body> <p> Pargraf exterior al <div></p> <div class="nota"> <p>Pargraf primer fill de <div></p> <p>Pargraf segon fill de <div></p> </div> </body>
En la figura 27 podem veure el resultat daquest exemple. :link. Permet definir lestil dels enllaos de la nostra pgina, quan encara no shan visitat. :visited. Permet definir lestil dels enllaos de la nostra pgina, quan shan visitat. Per exemple, CSS:
/* Els enllaos sn de lletra blanca damunt de fons negre */ a {color: white; background-color: black;} /* Quan no han estat visitats no tindran cap tipus de subratllat */ a:link { text-decoration: none;} /* Quan han estat visitats apareixeran tatxats */ a:visited { text-decoration: line-through;}
(X)HTML:
<p><a href="http://fsf.org">Enlla normal</a></p> <p><a href="http://gnu.org">Enlla visitat</a></p>
74
Podem veure el resultat en la figura 28. :active. Permet definir lestil dels elements quan sactiven (quan premem damunt seu). :hover. Permet definir lestil dels elements quan passem per damunt seu. :focus. Permet definir lestil dels elements quan reben el focus. Per exemple, CSS:
/* Els enllaos (visitats i no visitats) sn de lletra blanca damunt de fons negre */ a:link, a:visited { color:white; background-color:black; } /* Quan hi passem per damunt tenen una vora negra, la lletra ser negra i el fons blanc */ a:hover { border: solid thin black; color: black; background-color:white; } /* Quan els premem, la lletra s blanca i el fons vermell */ a:active { color:white; background-color:red; } /* Quan ens situem en un control de formulari <input> tindr una vora vermella puntejada, i un fraciment de 2px */ input:focus { border: red 2px dotted; padding: 2px; }
(X)HTML:
<p><a href="http://fsf.org">Enlla</a></p> <p><a href="http://gnu.org">Enlla pel qual passo per sobre</a></p> <p>Camp de text no actiu: <input type="text" name="input" /></p> <p>Camp de text actiu: <input type="text" name="input" /></p>
:lang. Permet definir les propietats segons lidioma. Per exemple, si volem establir que els pargrafs que tenen latribut lang amb valor ca (<p lang="ca">...</p>) estan amb lletra vermella, hem de definirho amb la regla segent:
p:lang(ca) { color:red; }
75
3.5.2. Pseudoelements
A continuaci enumerem els pseudoelements que hi ha amb la seva descripci: :first-line. Permet definir lestil de la primera lnia de l'element. :first-letter. Permet posar propietats destil a la primera lletra de l'element. :after. Permet introduir contingut al final de lelement. A lelement li hem de donar la propietat content amb el valor desitjat. :before. Permet introduir contingut a linici de lelement. A lelement li hem de donar la propietat content amb el valor desitjat. A continuaci exposem un exemple on participen tots aquests pseudoelements. Podeu observar el resultat en la figura 30. CSS:
/* La primera lnia dels pargrafs de classe ll estan en lletra negreta */ p.ll:first-line { font-weight:bold;} /* La primera lletra dels pargrafs de classe ll est flotant a lesquerra amb lletra de tipus monospace tres cops ms gran */ p.ll:first-letter {float: left; font-size: 300%; font-family:monospace;} /* Davant de cada pargraf de classe pf hi haur el text Pargraf: , desprs hi haur un logotip del navgeador Firefox */ p.pf:before { content: "Pargraf: "; } p.pf:after { content: url("imatges/firefox.png"); }
(X)HTML:
<p class="pf">Aix <p class="pf">Aix <p class="ll">Aix primera lnia est s un pargraf </p> tamb s un pargraf </p> s un pargraf d'amplada 20em on la primera lletra s molt gran i la en negreta...</p>
76
!!
Podeu trobar unes guies de referncia rpida de totes les propietats de CSS (tant per a CSS1 com per a CSS2) en la secci Annexos del web del crdit.
!!
Podeu trobar totes les paraules clau amb el seu color corresponent en la secci Annexos del web daquest crdit.
3.6.2. Fonts
En la taula 9 podem veure les diferents propietats que ens ajuden a modificar la font de la lletra.
77
Taula 9. Propietats CSS per a la font de la lletra Propietat Descripci Canvia el tipus de lletra. Sen poden posar diversos, separats per coma, per si el navegador no disposs dalgun dells. Serveix per posar (italic) o treure (normal) la lletra en cursiva. Posa (small-caps) o treu (normal) les lletres minscules en majscules per amb una tipografia ms petita. Serveix per posar (bold) o treure (normal) la lletra en negreta. Exemples
font-family
body { font-family:Gill, Helvetica, sans-serif; } h1, h2, h3 { font-style: italic; } h1 em { font-style: normal; } h3 { font-variant: small-caps } p { font-weight: normal } h1 { font-weight: bold } p { font-size: 16px; } @media print { p { font-size: 12pt; } } p p p p { { { { font: font: font: font: 12px sans-serif } x-large Helvetica, serif } bold italic large serif } normal small-caps 120% fantasy }
font-style
font-variant
font-weight
font-size
font
line-height
p { line-height: 2em; }
!!
Figura 31. Propietats de font Trobareu el codi dels exemples en la secci Recursos de contingut del web daquest crdit.
78
p { text-indent: 3em; } div.important { text-align: center ; } .destaca { text-decoration: underline; } blockquote { letter-spacing: 0.1em; } h1 { word-spacing: 1em; } h1 { text-transform: uppercase; } .titol { text-transform: capitalize; }
letter-spacing word-spacing
text-transform
white-space
!!
Recordeu que trobareu el codi dels exemples en la secci Recursos de contingut del web daquest crdit.
em { color: red; } em { color: rgb(255,0,0); } h1 { background-color: #FF0000; } body{background-image: url("fons.png");} p { background-image: none; }
79
Propietat
Descripci
Exemples
background-attachment
Estableix la fixaci de la imatge de fons. Pot ser fixa (fixed) o movible (scroll).
body { background-image: url("fons.png"); background-attachment: fixed; } body { background: white url("fons.png"); background-repeat: repeat-y; } body{ background-image:url("fons.png"); backgrond-position: right top; } body { background: red; } p{ background: gray url("fons.png") repeat fixed left top; }
background-repeat
Especifica com volem que la imatge de fons es repeteixi (repeat, repeat-x, repeat-y) o si no volem que es repeteixi (no-repeat). Especifica la posici de la imatge de fons. El primer valor correspon a leix X (left, center o right) i el segon a leix Y (top, center o bottom). Tamb podem introduir percentatges. Propietat que resumeix les propietats anteriors.
background-position
background
80
A ms, cada caixa t quatre segments: el superior (top), linferior (bottom), lesquerre (left) i el dret (right). Podem observar tots aquests elements en la figura 34.
Figura 34. El model de caixa
La taula 12 ens ofereix les propietats que ens permeten definir les mesures de tots aquests elements.
Taula 12. Propietats del model de caixa Propietat Descripci Descripci
Propietat que resumeix les propietats margin-*: es poden introduir dun a quatre valors separats per espai:
margin
1 valor: afecta els quatre marges 2 valors: top-bottom left-right 3 valors: top right-left bottom 4 valors: top right bottom left
body { padding-top: 1em; padding -right: 2em; padding -bottom: 1em; padding-left: 2em; } h1 { padding: 1em 2em; }
Propietat que resumeix les propietats padding-*. Els valors sintrodueixen igual que a la propietat margin.
Especifica lamplada de cadascuna de les vores superior, dreta, inferior i esquerra. Com a valor podem posar thin (prim), mitj (medium), gruixut (thick) o una mesura.
81
Propietat
Descripci Propietat que resumeix les propietats border-*width. Els valors sintrodueixen igual que a la propietat margin.
Descripci
border-width
h1 {border-width: thin thick medium;} p { border-top-color: black; border-right-color: red; border-bottom-color: green; border-left-color: blue; } p { border-color: gray; }
border-color
Propietat que resumeix les propietats border-*color. Els valors sintrodueixen igual que a la propietat margin. Defineix lestil de cadascuna de les vores superior, dreta, inferior i esquerra. Podrem introduir els valors segents: none o hidden: cap vora dotted: punts dashed: segments solid: lnia contnua double: dues lnies contnues groove: enfonsat ridge: sortit inset: encastat outset: sobresortit
border-style
Propietat que resumeix les propietats border-*style. Els valors sintrodueixen igual que a la propietat margin.
#caixa { border-style: solid dotted } h1 { border-top: thick solid red; border-right: thick solid red; border-bottom: thick solid red; border-left: thick solid red; } h1{ border: thick solid red; }
border
Propietat que resumeix les propietats border. Afecten les quatre posicions igual.
!!
Recordeu que trobareu el codi dels exemples en la secci Recursos de contingut del web daquest crdit.
82
display
/* Per defecte: */ p { display: block; } em { display: inline; } li { display: list-item; } /* Si no volem mostrar imatges: */ img { display: none; }
83
Propietat
Descripci Descriu la posici envers la resta delements. Els valors poden ser els segents:
Exemples
position
relative: guarda l'espai i mou el que li diguem. absolute: no guarda l'espai. fixed: com absolute, per sempre est all encara que ens desplacem amb la pgina.
#header { top: 0; right: 0; bottom: auto; left: 0; } #peu { position: fixed; width: 100%; height: 100px; top: auto; right: 0; bottom: 0; left: 0; }
width height
Assenyala les dimensions mnimes i mximes que poden prendre les caixes, sigui quina sigui la mida de la finestra: amplada mnima, alada mnima, amplada mxima i alada mxima.
Fa que la caixa quedi flotant a lesquerra (left) o a la dreta (right). Serveix per desactivar elements flotants al voltant de lelement que t la propietat. Podem eliminar els elements flotants a la part esquerra (left), a la part dreta (right), a ambds costats (both) i anullar la propietat (none).
clear
#peu { clear:both; }
z-index
Marca la profunditat duna caixa. Com ms petit sigui el valor ms al fons se situar la caixa. Indica qu fer quan el contingut mesura ms que la caixa. Els possibles valors sn: visible: el contingut es veu sobrepassant la taula. hidden: el contingut sobrant no es veu. scroll: apareix una barra de desplaament. auto: apareix una barra de desplaament, si s necessari.
overflow
84
!!
Recordeu que trobareu el codi dels exemples en la secci Recursos de contingut del web daquest crdit.
Lart del CSS no s saber-se totes les propietats que hi ha sin saber-les combinar adequadament per aconseguir els efectes desitjats. Hi ha centenars de tcniques per a problemes comuns.
Casos tpics on s necessari dominar les propietats CSS sn fer mens a partir de llistes o maquetar webs sense usar taules.
!!
3.9.1. Fer mens amb llistes
Gaireb tota web disposa dun men de navegaci que ens permet anar enllaant a les diferents seccions del lloc. Una manera molt elegant de fer aquests mens s pensar-los com una llista amb tems (i subtems, si sescau). El problema que tenim s que les llistes sn lletges.
En la secci Recursos de contingut del web del crdit trobareu ms exemples de mens fets amb llistes. Figura 39. Men fet amb una llista
Vegem com podem fer un men bonic a partir duna llista. Es tracta dun men vertical que t laspecte que mostra la figura 39.
85
Vegem quines regles CSS hem dintroduir per obtenir els resultats desitjats. A continuaci, combinarem diverses de les regles CSS existents, i aix aconseguirem que aquesta simple llista desordenada acabi essent un men atractiu i accessible per a lusuari. Primer de tot hem de dir a la llista que no volem pics a cada tem, aix ho podem aconseguir aplicant una propietat especifica de llistes que es diu list-style-type. A ms, hi traiem marges i farciments i hi posem una vora:
#menu ul { list-style-type: none ; margin: 0; padding: 0; border: thick solid #D68EFF; }
Ara, definim lestil dels enllaos: canviem el color de la lletra, traiem el subratllat, fem que les lletres siguin sempre majscules i hi posem una mica de farciment. Hem de destacar que la declaraci display: block serveix perqu lenlla passi a ser un element de bloc (per defecte, s un element de lnia) i aix aconseguim poder prmer lenlla en tot el bloc, no noms on hi ha les lletres de lenlla:
#menu ul li a { color: white ; text-decoration: none ; text-transform: uppercase ; display: block ; padding: 0.2em 0.2em 0.2em 0.4em ; }
86
Finalment, definim quina esttica han de tenir els enllaos quan hi passem per damunt. En aquest cas, els canviem el color de lletra i de fons, i hi fem aparixer una vora a lesquerra:
#menu ul li a:hover { background: #CC4ABD; border-left: 0.3em solid #58014B; color: #58014B; }
El codi (X)HTML s fora senzill, simplement marquem amb marques <div> cadascuna de les capes que formen el web. Englobem tot el contingut en un <div> contenidor, en qu posem la resta de capes (cap, lateral amb el men, cos i peu):
<body> <div id="contenidor"> <div id="cap"> <h1>Ttol de la web</h1>
87
<h2>Subttol de la web</h2> </div> <div id="lateral"> <div id="menu"> <ul> <li><a href="">Inici</a></li> <li><a href="">Secci 1</a></li> <li><a href="">Secci 2</a></li> </ul> </div> </div> <div id="cos"> <div id="inici"> <h3>Inici</h3> <p>..</p> </div> </div> <div id="peu"> <p>Peu de pgina </p> </div> </div> </body>
Ara definim les regles pertinents per aconseguir els nostres objectius. En la marca <body> definim totes les propietats genriques: color de fons, color de lletra i tipus de lletra. A ms, posem el text centrat (perqu Internet Explorer entengui que volem el contingut centrat) i traiem qualsevol tipus de marge.
body { text-align: center ; background-color:#FFC7FC; color: #58014B; font: small sans-serif; margin: 0; }
Al <div> amb identificador contenidor hem de dir-li que no ocupi tota la pgina (li diem que nocupi noms un 80%), que quedi centrat (aix saconsegueix posant els marges esquerre i dret amb valor auto) i que el fons sigui blanc. A ms, fem que tot el text del web estigui alineat a lesquerra.
#contenidor{ width: 80%; margin: 0px auto; text-align: left; background-color:white; }
La capalera i el peu de pgina tenen propietats comunes: tenen la mateixa imatge de fons, el color de lletra s blanc i en negreta, i el text est centrat.
#cap, #peu{ background-image: url("imatges/banner-web.png"); text-align:center; font-weight: bold; color:white; }
88
Especifiquem tamb les propietats que noms afecten la capalera: volem que els ttols que contingui no tinguin marges:
#cap h1, #cap h2{ margin:0; }
Posem, a ms, les mides per defecte que han de tenir tots els encapalaments <h1> i <h2> de la pgina:
h1{ font-size: 5em; } h2{ font-size: 4em; }
Per al peu de pgina tamb tenim propietats especfiques: la lletra ha de ser petita i fem que no pugui tenir cap element flotant. Aix, la barra lateral, que s un element flotant, mai no es posar per damunt del peu de pgina.
#peu { font-size: small; clear: both ; }
Ara definim la barra lateral: s un element flotant a lesquerra i t una amplada del 15% de la pgina:
#lateral { width: 15% ; float: left ; }
Per maquetar el cos del web diem que el marge esquerre s dun 15%, que s just lespai que ocupa la barra lateral. A ms, posem una mica de farciment a lesquerra, perqu el text del cos no quedi enganxat al men.
#cos { margin-left: 15% ; padding-left: 1em ; }
!!
Recordeu que trobareu el codi dels exemples en la secci Recursos de contingut del web daquest crdit.
Amb totes aquestes regles hem aconseguit el nostre objectiu: tenim una web bonica, ben estructurada, amb un codi (X)HTML senzill i sense fer s de taules. (Noms ens manca el codi per convertir la llista que conforma el men en lesttica proposada.)