17.05.2014 Views

HTML, CSS en JavaScript - Pearson Education

HTML, CSS en JavaScript - Pearson Education

HTML, CSS en JavaScript - Pearson Education

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bonus<br />

hoofdstukk<strong>en</strong><br />

1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

2 E<strong>en</strong> website bouw<strong>en</strong>


1 <strong>HTML</strong>,<br />

<strong>CSS</strong> <strong>en</strong><br />

<strong>JavaScript</strong><br />

De belangrijkste punt<strong>en</strong> van bonushoofdstuk 1<br />

XX<br />

<strong>HTML</strong> is e<strong>en</strong> taal waarmee u de inhoud <strong>en</strong> structuur van e<strong>en</strong> webpagina kunt mak<strong>en</strong>.<br />

XX<br />

Tags zijn codewoord<strong>en</strong> die de verschill<strong>en</strong>de onderdel<strong>en</strong>, de elem<strong>en</strong>t<strong>en</strong>, van e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t<br />

marker<strong>en</strong>.<br />

XX<br />

E<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t bestaat uit e<strong>en</strong> head- <strong>en</strong> e<strong>en</strong> bodysectie. In de sectie head vindt u bijvoorbeeld<br />

de titel <strong>en</strong> in de body kom<strong>en</strong> zak<strong>en</strong> voor als kopp<strong>en</strong>, paragraf<strong>en</strong> <strong>en</strong> tabell<strong>en</strong>.<br />

XX<br />

E<strong>en</strong> dialoog met behulp van <strong>HTML</strong>-formulier<strong>en</strong> is e<strong>en</strong> veelgebruikte manier van interactie met e<strong>en</strong><br />

gebruiker.<br />

XX<br />

<strong>CSS</strong> staat voor Cascading Style Sheets. Deze stijlblad<strong>en</strong> bepal<strong>en</strong> het uiterlijk van e<strong>en</strong> <strong>HTML</strong>docum<strong>en</strong>t.<br />

XX<br />

<strong>JavaScript</strong> gebruikt u om uw pagina gebruikersvri<strong>en</strong>delijker te mak<strong>en</strong>.<br />

XX<br />

jQuery is e<strong>en</strong> <strong>JavaScript</strong>-bibliotheek waarmee u gemakkelijk pagina’s dynamisch kunt styl<strong>en</strong> <strong>en</strong><br />

Ajax-functies kunt uitvoer<strong>en</strong>.


wat leert u in dit hoofdstuk?<br />

Met <strong>HTML</strong> kunn<strong>en</strong> we de structuur van e<strong>en</strong> webpagina bepal<strong>en</strong>.<br />

<br />

<br />

<br />

E<strong>en</strong> simpel <strong>HTML</strong>docum<strong>en</strong>t<br />

<br />

<br />

Hello world!<br />

<br />

<br />

Met <strong>CSS</strong> mak<strong>en</strong> we er iets moois van.<br />

body {<br />

background: #f7f7f9;<br />

font-family: trebuchet ms;<br />

color: navy;<br />

}


PHP EN MYSQL de basis<br />

1.1 <strong>HTML</strong> 101<br />

E<strong>en</strong> 101, spreek uit: ‘one - oo - one’, is e<strong>en</strong> Amerikaanse uitdrukking voor e<strong>en</strong> supersnelle<br />

cursus waarin u alle<strong>en</strong> die ding<strong>en</strong> leert die nodig zijn voor het begrijp<strong>en</strong> van het vervolg.<br />

Nu d<strong>en</strong>kt u misschi<strong>en</strong>: ‘<strong>HTML</strong>? We ging<strong>en</strong> toch programmer<strong>en</strong> in PHP?’ Dat klopt, maar<br />

het resultaat van het uitvoer<strong>en</strong> van e<strong>en</strong> PHP-script is vaak e<strong>en</strong> <strong>HTML</strong>-tekst. Enige k<strong>en</strong>nis<br />

van <strong>HTML</strong> is dan ook nodig om te begrijp<strong>en</strong> hoe PHP werkt.<br />

Terwijl <strong>HTML</strong> voor de structuur <strong>en</strong> inhoud van uw pagina zorgt, stelt <strong>CSS</strong> u in staat om<br />

de inhoud <strong>en</strong> de vormgeving van uw website uit elkaar te houd<strong>en</strong>. Met <strong>JavaScript</strong> maakt<br />

u uw webpagina meer dynamisch <strong>en</strong> interactief. Mocht u na het lez<strong>en</strong> van dit hoofdstuk<br />

meer will<strong>en</strong> wet<strong>en</strong> over <strong>HTML</strong> <strong>en</strong> <strong>CSS</strong>, dan verwijs ik u naar <strong>HTML</strong> <strong>en</strong> <strong>CSS</strong> de basis. Voor<br />

meer informatie over <strong>JavaScript</strong> is er <strong>JavaScript</strong> de basis.<br />

We zull<strong>en</strong> hier kort aandacht bested<strong>en</strong> aan:<br />

Hoe ziet e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t eruit?<br />

De tags html, head, title, body.<br />

Het mak<strong>en</strong> van lijst<strong>en</strong>: de tags ul, ol, li, dl, dt, dd.<br />

Het mak<strong>en</strong> van tabell<strong>en</strong> met de tags table, thead, th, tbody, tr, td.<br />

Het gebruik van <strong>CSS</strong>-stijlblad<strong>en</strong> <strong>en</strong> koppeling met e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t met de tags<br />

script, div, span.<br />

Het invoeg<strong>en</strong> van <strong>JavaScript</strong>.<br />

nn<br />

nn<br />

nn<br />

nn<br />

nn<br />

nn<br />

1.2 De anatomie van e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t<br />

We herhal<strong>en</strong> het nog maar e<strong>en</strong>s: met <strong>HTML</strong> bepaalt u de inhoud <strong>en</strong> de structuur van e<strong>en</strong><br />

webpagina. U bepaalt de inhoud van e<strong>en</strong> pagina <strong>en</strong> vervolg<strong>en</strong>s verdeelt u het docum<strong>en</strong>t<br />

in paragraf<strong>en</strong>, u br<strong>en</strong>gt kopp<strong>en</strong> aan of e<strong>en</strong> tabelstructuur, u kunt plaatjes invoeg<strong>en</strong> <strong>en</strong>zovoorts,<br />

alles met behulp van <strong>HTML</strong>-tags.<br />

De meeste browsers zijn heel vergevingsgezind teg<strong>en</strong>over slordig <strong>HTML</strong>. Als u e<strong>en</strong> browser<br />

alle<strong>en</strong> het volg<strong>en</strong>de aanbiedt als <strong>HTML</strong>-docum<strong>en</strong>t:<br />

C Dit is de inhoud van e<strong>en</strong> <strong>HTML</strong>-pagina, er staat ge<strong>en</strong> <strong>en</strong>kele <strong>HTML</strong> tag in.<br />

Dan zal die browser dat keurig weergev<strong>en</strong> met e<strong>en</strong> standaard vormgeving. Er zull<strong>en</strong> heel<br />

weinig pagina’s zijn waarin dit voldo<strong>en</strong>de is. Als u e<strong>en</strong> pagina mooier wilt mak<strong>en</strong> met e<strong>en</strong><br />

speciale structuur, opmaak, lettertyp<strong>en</strong> <strong>en</strong>zovoort, dan zult u <strong>HTML</strong>-tags moet<strong>en</strong> gebruik<strong>en</strong>,<br />

<strong>CSS</strong>-stijlblad<strong>en</strong> <strong>en</strong> ev<strong>en</strong>tueel <strong>JavaScript</strong>.<br />

1.2.1 Tags<br />

De inhoud van e<strong>en</strong> docum<strong>en</strong>t bestaat uit e<strong>en</strong> aantal onderdel<strong>en</strong>, zoals titel, koptekst,<br />

paragraaf et cetera. In e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t word<strong>en</strong> deze onderdel<strong>en</strong> gemarkeerd door<br />

4


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

par<strong>en</strong> tags, e<strong>en</strong> begintag <strong>en</strong> e<strong>en</strong> eindtag. Tags zijn codewoord<strong>en</strong> tuss<strong>en</strong> hoekige haakjes:<br />

< <strong>en</strong> >. Dezelfde tag met e<strong>en</strong> / achter de < geeft het einde van het bereik van e<strong>en</strong> tag<br />

aan, dus alle tekst tuss<strong>en</strong> <strong>en</strong> vorm<strong>en</strong> de ‘body’ van e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t.<br />

E<strong>en</strong> paragraaf <strong>en</strong> e<strong>en</strong> titel zi<strong>en</strong> er bijvoorbeeld zo uit:<br />

C Dit is de paragraaftekst<br />

Dit is e<strong>en</strong> titel<br />

Elem<strong>en</strong>t<strong>en</strong><br />

E<strong>en</strong> onderdeel dat door tags gemarkeerd is zull<strong>en</strong> we e<strong>en</strong> <strong>HTML</strong>-elem<strong>en</strong>t noem<strong>en</strong>. E<strong>en</strong> <strong>HTML</strong>docum<strong>en</strong>t<br />

is dus eig<strong>en</strong>lijk niets anders dan e<strong>en</strong> verzameling van <strong>HTML</strong>-elem<strong>en</strong>t<strong>en</strong>.<br />

In oudere versies van <strong>HTML</strong> zijn tags niet hoofdlettergevoelig; het maakt daar niet uit of<br />

u , , of schrijft. Wij zijn echter van plan zo veel mogelijk<br />

alle<strong>en</strong> nette <strong>HTML</strong> te gebruik<strong>en</strong>, <strong>en</strong> dan maakt het wel degelijk uit. Vergeet dus alle<br />

hoofdletters!<br />

1.2.2 Attribut<strong>en</strong><br />

Tags kunn<strong>en</strong> attribut<strong>en</strong> hebb<strong>en</strong>, die het <strong>HTML</strong>-elem<strong>en</strong>t van extra informatie voorzi<strong>en</strong>.<br />

Attribut<strong>en</strong> zi<strong>en</strong> er altijd zo uit: naam=”waarde” of: naam= ‘waarde’.<br />

Voorbeeld: .<br />

In oudere versies van <strong>HTML</strong> kon u vaak de ‘ of de “ weglat<strong>en</strong>, dus .<br />

De meeste browsers zull<strong>en</strong> dit nog wel goed weergev<strong>en</strong>, maar als u dynamisch met uw<br />

<strong>HTML</strong>-code aan de slag wil, kan dit e<strong>en</strong> bron zijn van onbegrijpelijke fout<strong>en</strong>. Bij voorkeur<br />

gebruikt u “ om attribuutwaard<strong>en</strong>. Attribut<strong>en</strong> staan altijd in de begin-tag van e<strong>en</strong><br />

elem<strong>en</strong>t.<br />

1.2.3 <strong>HTML</strong>-voorbeeld<br />

Het allersimpelste welgevormde <strong>HTML</strong>-docum<strong>en</strong>t dat u kunt mak<strong>en</strong> ziet er ongeveer zo<br />

uit:<br />

C <br />

<br />

<br />

E<strong>en</strong> Simpel <strong>HTML</strong>-docum<strong>en</strong>t<br />

<br />

<br />

5


PHP EN MYSQL de basis<br />

<br />

<br />

Hello world!<br />

U ziet dat het docum<strong>en</strong>t begint met te vertell<strong>en</strong> wat het voor soort docum<strong>en</strong>t is, de<br />


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

We gaan hier niet in detail in op de head-tags. Van belang is de title-tag, die u in ieder<br />

docum<strong>en</strong>t zult will<strong>en</strong> gebruik<strong>en</strong> om aan te gev<strong>en</strong> waar de pagina over gaat. Als u uw webpagina<br />

vindbaar wilt mak<strong>en</strong> voor zoekmachines, dan is het e<strong>en</strong> goed idee om de metainformatie<br />

zo goed mogelijk in te vull<strong>en</strong>.<br />

Kijk ook naar de link-tag, waarmee u kunt aangev<strong>en</strong> dat er e<strong>en</strong> extern stijlblad gebruikt<br />

moet word<strong>en</strong>, zoals in het voorbeeld. Voor e<strong>en</strong> intern stijlblad gebruikt u de tag style.<br />

<strong>JavaScript</strong> di<strong>en</strong>t u te omhull<strong>en</strong> met script-begin- <strong>en</strong> eindtags. Het voorbeeld geeft aan dat<br />

de jQuery-bibliotheek uit e<strong>en</strong> bestand gelad<strong>en</strong> moet word<strong>en</strong>. Vaak word<strong>en</strong> scripttags aan<br />

het eind van de body van e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t geplaatst in plaats van in de head, omdat<br />

dit het lad<strong>en</strong> van de pagina sneller schijnt te mak<strong>en</strong> <strong>en</strong> omdat u dan zeker weet dat het<br />

docum<strong>en</strong>t gelad<strong>en</strong> is voordat de <strong>JavaScript</strong>-code wordt uitgevoerd.<br />

1.2.5 <strong>HTML</strong>-body tags: headings, paragraphs, break<br />

Alle inhoud van e<strong>en</strong> <strong>HTML</strong>-pagina is in de body van het <strong>HTML</strong>-docum<strong>en</strong>t te vind<strong>en</strong>. We<br />

zi<strong>en</strong> kopp<strong>en</strong>, paragraf<strong>en</strong>, tabell<strong>en</strong>, lijst<strong>en</strong>, afbeelding<strong>en</strong>, links naar andere pagina’s, videoinhoud,<br />

animaties <strong>en</strong>zovoorts.<br />

Als eerste voorbeeld van bodyinhoud lat<strong>en</strong> we e<strong>en</strong> overzicht zi<strong>en</strong> van verschill<strong>en</strong>de kopregels,<br />

paragraf<strong>en</strong> <strong>en</strong> het begin van e<strong>en</strong> nieuwe regel:<br />

C <br />

dit is e<strong>en</strong> h1 kop<br />

dit is e<strong>en</strong> h2 kop<br />

dit is e<strong>en</strong> h3 kop<br />

...<br />

dit is e<strong>en</strong> h6 kop<br />

Hier start e<strong>en</strong> nieuwe paragraaf<strong>en</strong> hier houdt hij op.<br />

En hierstart e<strong>en</strong> nieuwe regel.<br />

<br />

<br />

(We lat<strong>en</strong> hier alle<strong>en</strong> de inhoud tuss<strong>en</strong> de begin- <strong>en</strong> eindtag van zi<strong>en</strong>, niet het<br />

complete <strong>HTML</strong>-docum<strong>en</strong>t). Dan is dit wat de browser laat zi<strong>en</strong>:<br />

7


PHP EN MYSQL de basis<br />

Afbeelding 1.1<br />

<strong>HTML</strong>-overzicht.<br />

Dit voorbeeld heeft verder weinig uitleg nodig. Merk op dat er ge<strong>en</strong> tekst is die niet tuss<strong>en</strong><br />

tags staat, <strong>en</strong> dat alle begintags ook e<strong>en</strong> eindtag hebb<strong>en</strong>. De tag br, e<strong>en</strong> line break, is<br />

e<strong>en</strong> speciaal geval, <strong>en</strong> e<strong>en</strong> voorbeeld van e<strong>en</strong> gecombineerde begin- <strong>en</strong> eindtag.<br />

1.2.6 <strong>HTML</strong>-bodytags: lijst<strong>en</strong><br />

Tabell<strong>en</strong> word<strong>en</strong> veel gebruikt om elem<strong>en</strong>t<strong>en</strong> van e<strong>en</strong> docum<strong>en</strong>t netjes op e<strong>en</strong> pagina<br />

te plaats<strong>en</strong>. Wij zull<strong>en</strong> dat ook regelmatig do<strong>en</strong> om bijvoorbeeld de veld<strong>en</strong> van e<strong>en</strong><br />

formulier recht onder elkaar te krijg<strong>en</strong>. Eig<strong>en</strong>lijk zou u e<strong>en</strong> <strong>HTML</strong>-tabel alle<strong>en</strong> moet<strong>en</strong><br />

gebruik<strong>en</strong> als u ook tabelgegev<strong>en</strong>s wilt lat<strong>en</strong> zi<strong>en</strong>, anders is het beter via e<strong>en</strong> stijlblad de<br />

gegev<strong>en</strong>s te formatter<strong>en</strong>. De andere structuurelem<strong>en</strong>t<strong>en</strong> die u tuss<strong>en</strong> <strong>en</strong> <br />

kunt plaats<strong>en</strong> zijn voor e<strong>en</strong> punt<strong>en</strong>lijst <strong>en</strong> voor e<strong>en</strong> g<strong>en</strong>ummerde lijst. Met e<strong>en</strong><br />

definitielijst, de tags dl, dt, dd, kunt u bijvoorbeeld e<strong>en</strong> glossary (verklar<strong>en</strong>de woord<strong>en</strong>lijst)<br />

mak<strong>en</strong>. We lat<strong>en</strong> eerst e<strong>en</strong> voorbeeld zi<strong>en</strong> (we lat<strong>en</strong> de head-sectie van het <strong>HTML</strong>docum<strong>en</strong>t<br />

ook hier weg) waarbij de verschill<strong>en</strong>de soort<strong>en</strong> lijst<strong>en</strong> gebruikt word<strong>en</strong>:<br />

C <br />

<br />

item1 <br />

item2 <br />

<br />

<br />

item1 <br />

8


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

item2 <br />

<br />

<br />

term1 definition1 <br />

term2 definition2 <br />

<br />

<br />

De browser maakt er dit van:<br />

Afbeelding 1.2<br />

Lijst<strong>en</strong>.<br />

1.2.7 <strong>HTML</strong>-body tags: tabell<strong>en</strong><br />

De definitie van e<strong>en</strong> tabel ziet er zo uit (we hebb<strong>en</strong> nu ook de body-tag weggelat<strong>en</strong>):<br />

C <br />

<br />

<br />

kop1<br />

kop2<br />

kop3<br />

<br />

<br />

<br />

<br />

a1 <br />

a2 <br />

a3 <br />

<br />

9


PHP EN MYSQL de basis<br />

<br />

<br />

<br />

We mak<strong>en</strong> e<strong>en</strong> paar opmerking<strong>en</strong> over tabell<strong>en</strong>:<br />

n Het zal u opvall<strong>en</strong> dat ook tabell<strong>en</strong> over e<strong>en</strong> hoofd <strong>en</strong> e<strong>en</strong> lijf beschikk<strong>en</strong>.<br />

n In de thead-sectie kunt u kolomkopp<strong>en</strong> kwijt, <strong>en</strong> in de tbody-sectie de inhoud van de<br />

tabel. In de praktijk zult u <strong>en</strong> weinig teg<strong>en</strong>kom<strong>en</strong>, want alle browsers<br />

lat<strong>en</strong> e<strong>en</strong> tabel zonder deze tags ook goed zi<strong>en</strong>. Maar als u dynamisch met e<strong>en</strong><br />

tabel aan de slag wilt met behulp van <strong>JavaScript</strong>, dan is het belangrijk om deze tags<br />

wel te gebruik<strong>en</strong>, om er zeker van te zijn dat alle browsers, met name oudere versies<br />

van Internet Explorer, meedo<strong>en</strong>.<br />

n Verder zijn er nog e<strong>en</strong> aantal variaties toe te voeg<strong>en</strong>, zoals tabell<strong>en</strong> binn<strong>en</strong> tabell<strong>en</strong>,<br />

rij<strong>en</strong> die hier <strong>en</strong> daar over meer dan één kolom reik<strong>en</strong>, of kolomwaard<strong>en</strong> die over<br />

meer rij<strong>en</strong> he<strong>en</strong> gaan. Let op: lege tabelcell<strong>en</strong> kunn<strong>en</strong> problem<strong>en</strong> gev<strong>en</strong>. We wijz<strong>en</strong><br />

hier alle<strong>en</strong> op e<strong>en</strong> aantal mogelijkhed<strong>en</strong>, voor details is het al eerder g<strong>en</strong>oemde<br />

<strong>HTML</strong>-boek e<strong>en</strong> aanrader, of het onvolprez<strong>en</strong> W3Schools: www.w3schools.com/html/<br />

zal zeker uitkomst br<strong>en</strong>g<strong>en</strong>.<br />

Dit voorbeeld zondigt teg<strong>en</strong> de regels dat er ge<strong>en</strong> pres<strong>en</strong>tatieattribut<strong>en</strong> in de <strong>HTML</strong>-tekst<br />

mog<strong>en</strong> staan. Borders (rand<strong>en</strong>), padding <strong>en</strong> spacing hor<strong>en</strong> in e<strong>en</strong> stijlblad te word<strong>en</strong> aangegev<strong>en</strong>.<br />

De border="1" is het <strong>en</strong>ige attribuut dat nog niet verouderd is verklaard voor<br />

de table-tag. Het attribuut border is bijvoorbeeld handig om snel te debugg<strong>en</strong> waarom<br />

e<strong>en</strong> g<strong>en</strong>este tabel uit de pas is gaan lop<strong>en</strong> door het verget<strong>en</strong> van e<strong>en</strong> eind-tag, alhoewel<br />

dat teg<strong>en</strong>woordig ook heel handig gaat met de developer tools van Firefox.<br />

Onze Firefox-browser toont het voorbeeld als in afbeelding 1.3.<br />

Afbeelding 1.3<br />

E<strong>en</strong> tabel.<br />

Erg fraai is deze tabel niet vormgegev<strong>en</strong>. Verderop in dit hoofdstuk als we het over <strong>CSS</strong><br />

hebb<strong>en</strong> kom<strong>en</strong> we terug op dit voorbeeld.<br />

10


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

1.2.8 <strong>HTML</strong>-body tags: div <strong>en</strong> span<br />

Rondom e<strong>en</strong> willekeurig paar <strong>HTML</strong>-tags in de body-sectie van e<strong>en</strong> docum<strong>en</strong>t kunt u<br />

... of ... plaats<strong>en</strong>. Deze tags zijn bedoeld om blokk<strong>en</strong><br />

tekst bij elkaar te houd<strong>en</strong> <strong>en</strong> gezam<strong>en</strong>lijk vorm te gev<strong>en</strong>. De div-tag kan ook voor positionering<br />

gebruikt word<strong>en</strong>.<br />

E<strong>en</strong> verschil tuss<strong>en</strong> div <strong>en</strong> span is, dat div e<strong>en</strong> nieuwe regel veroorzaakt bij het vormgev<strong>en</strong><br />

<strong>en</strong> span niet. U kunt span bijvoorbeeld gebruik<strong>en</strong> om e<strong>en</strong> stukje tekst in e<strong>en</strong> ander<br />

lettertype te plaats<strong>en</strong> of e<strong>en</strong> speciale kleur te gev<strong>en</strong>.<br />

E<strong>en</strong> div wordt vooral gebruikt om secties in e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t te groeper<strong>en</strong> om deze<br />

als e<strong>en</strong> geheel te kunn<strong>en</strong> positioner<strong>en</strong> of van e<strong>en</strong> stijl voorzi<strong>en</strong>. Vooral in geg<strong>en</strong>ereerde<br />

<strong>HTML</strong> (door PHP bijvoorbeeld) ziet u soms e<strong>en</strong> overvloed aan div’s. Dit maakt uw pagina<br />

niet sneller of overzichtelijker, dus probeer zuinig met div’s om te gaan. We zull<strong>en</strong> g<strong>en</strong>oeg<br />

voorbeeld<strong>en</strong> van e<strong>en</strong> div teg<strong>en</strong>kom<strong>en</strong>, dus we slaan deze nu ev<strong>en</strong> over.<br />

1.2.9 Standaardattribut<strong>en</strong><br />

Er is e<strong>en</strong> aantal attribut<strong>en</strong> die u bij bijna elke <strong>HTML</strong>-tag kunt gebruik<strong>en</strong>, maar die voornamelijk<br />

interessant zijn om div <strong>en</strong> span van betek<strong>en</strong>is te voorzi<strong>en</strong>.<br />

nn<br />

nn<br />

nn<br />

id geeft de tag e<strong>en</strong> unieke id<strong>en</strong>tificatie. Voorbeeld: . E<strong>en</strong><br />

extern stijlblad of stijldefinities in de head-sectie van het docum<strong>en</strong>t kunn<strong>en</strong> de id gebruik<strong>en</strong><br />

voor vormgeving <strong>en</strong> positionering. E<strong>en</strong> id moet uniek zijn binn<strong>en</strong> e<strong>en</strong> <strong>HTML</strong>docum<strong>en</strong>t.<br />

Als dat niet zo blijkt te zijn, zull<strong>en</strong> sommige browsers e<strong>en</strong> foutmelding<br />

gev<strong>en</strong>, andere zull<strong>en</strong> stilletjes het laatst gevond<strong>en</strong> elem<strong>en</strong>t gebruik<strong>en</strong>. We zull<strong>en</strong> in de<br />

hierna volg<strong>en</strong>de paragraaf over <strong>CSS</strong> vertell<strong>en</strong> hoe u stijlelem<strong>en</strong>t<strong>en</strong> voor e<strong>en</strong> <strong>HTML</strong>elem<strong>en</strong>t<br />

met e<strong>en</strong> id kunt aangev<strong>en</strong>.<br />

class geeft de tag e<strong>en</strong> classificatie. Voorbeeld: . Ook<br />

voor class geldt dat u daar elders e<strong>en</strong> stijl voor zult definiër<strong>en</strong> <strong>en</strong> dat we hierna zull<strong>en</strong><br />

lat<strong>en</strong> zi<strong>en</strong> hoe dat moet.<br />

style kan gebruikt word<strong>en</strong> om in e<strong>en</strong> elem<strong>en</strong>t e<strong>en</strong> stijl te definiër<strong>en</strong>. Voorbeeld: . Deze stijl zal cursieve blauwe tekst<br />

als uitvoer tot gevolg hebb<strong>en</strong>. Gebruik dit attribuut liefst niet, maar in plaats uw stijlattribut<strong>en</strong><br />

in e<strong>en</strong> stijlblad <strong>en</strong> geef uw div of ander elem<strong>en</strong>t e<strong>en</strong> id of e<strong>en</strong> class.<br />

1.3 <strong>HTML</strong>-formulier<strong>en</strong><br />

De meest gebruikte <strong>en</strong> simpelste manier van interactie met e<strong>en</strong> gebruiker is e<strong>en</strong> dialoog<br />

met behulp van <strong>HTML</strong>-formulier<strong>en</strong>. Met <strong>HTML</strong>-formulier<strong>en</strong> kunt u tekstveld<strong>en</strong>, tekstblokk<strong>en</strong>,<br />

keuzevakjes, keuzerondjes, meerkeuzelijst<strong>en</strong>, verstuurknopp<strong>en</strong> <strong>en</strong> meer mak<strong>en</strong>.<br />

We lat<strong>en</strong> hier alle<strong>en</strong> e<strong>en</strong> erg simpel formulier zi<strong>en</strong>.<br />

De basisvorm van e<strong>en</strong> <strong>HTML</strong>-formulier blijkt uit het voorbeeld:<br />

11


PHP EN MYSQL de basis<br />

C <br />

voor- <strong>en</strong> achternaam:<br />

<br />

<br />

email:<br />

<br />

<br />

<br />

<br />

1.3.1 Formulier – k<strong>en</strong>merk<strong>en</strong>, input type: text <strong>en</strong> submit<br />

We noem<strong>en</strong> e<strong>en</strong> aantal punt<strong>en</strong>:<br />

n E<strong>en</strong> formulier wordt omgev<strong>en</strong> door <strong>en</strong> .<br />

n In het form staan input-tags. Het attribuut type geeft aan wat voor soort inputveld er<br />

getoond wordt.<br />

n Type text geeft e<strong>en</strong> tekstveld aan.<br />

n Type submit geeft e<strong>en</strong> button aan. Erop klikk<strong>en</strong> heeft het indi<strong>en</strong><strong>en</strong> van e<strong>en</strong> HTTPverzoek<br />

aan de server tot gevolg.<br />

n Andere mogelijke typ<strong>en</strong> zijn: checkbox, password, radio button <strong>en</strong> meer. Het is bijvoorbeeld<br />

mogelijk om bestand<strong>en</strong> te upload<strong>en</strong> <strong>en</strong> om e<strong>en</strong> plaatje als submit-knop te<br />

gebruik<strong>en</strong>.<br />

n Er kan ook beschrijv<strong>en</strong>de tekst in e<strong>en</strong> formulier geplaatst word<strong>en</strong>, zoals voor- <strong>en</strong><br />

achternaam: <strong>en</strong> e-mail: die u in het voorbeeld zag.<br />

n De actie die uitgevoerd wordt bij e<strong>en</strong> submit staat aangegev<strong>en</strong> in het attribuut action<br />

van de form-tag. In het voorbeeld zal foo.php word<strong>en</strong> uitgevoerd.<br />

n method="get" geeft aan hoe het PHP-script (foo.php) de waard<strong>en</strong> van de invoerveld<strong>en</strong><br />

ter beschikking krijgt. De andere manier om invoergegev<strong>en</strong>s ter beschikking te<br />

stell<strong>en</strong> is via "post". Hoe u met PHP de invoergegev<strong>en</strong>s kunt bekijk<strong>en</strong> <strong>en</strong> bewerk<strong>en</strong><br />

behandel<strong>en</strong> we in hoofdstuk 5.<br />

Het zou natuurlijk leuk zijn als we in de browser e<strong>en</strong> mooi formulier te zi<strong>en</strong> zoud<strong>en</strong> krijg<strong>en</strong>,<br />

zoiets als afbeelding 1.4.<br />

Afbeelding 1.4<br />

E<strong>en</strong> simpel formulier.<br />

Helaas is dat zonder aanpassing niet het geval. Probeert u zelf maar bonushoofdstuk01/<br />

simpelform1.html in de browser te op<strong>en</strong><strong>en</strong> <strong>en</strong> dan zal blijk<strong>en</strong> dat alle veld<strong>en</strong> scheef onder<br />

elkaar staan. In de volg<strong>en</strong>de sectie, die over <strong>CSS</strong> gaat, zull<strong>en</strong> we dit oploss<strong>en</strong>.<br />

12


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

1.3.2 Formulier veld<strong>en</strong>, input type: radio button <strong>en</strong> checkbox<br />

Hieronder lat<strong>en</strong> we e<strong>en</strong> voorbeeldje zi<strong>en</strong> met radiobuttons (keuzerondjes) <strong>en</strong> checkbox<strong>en</strong><br />

(selectievakjes):<br />

C <br />

Soort vakantie? <br />

<br />

Sted<strong>en</strong>trip<br />

<br />

<br />

Nederland<br />

<br />

Links- of rechtshandig? <br />

Links<br />

Rechts<br />

<br />

<br />

<br />

We hebb<strong>en</strong> de <strong>HTML</strong> buit<strong>en</strong> de form-tag weggelat<strong>en</strong>, het complete voorbeeld kunt u vind<strong>en</strong><br />

in bonushoofdstuk01/radiocheck.html. In de browser zou u dit kunn<strong>en</strong> zi<strong>en</strong>:<br />

Afbeelding 1.5<br />

Checkbox<strong>en</strong> <strong>en</strong> radio buttons.<br />

Het k<strong>en</strong>merk<strong>en</strong>de verschil tuss<strong>en</strong> checkbox<strong>en</strong> <strong>en</strong> radio buttons is dat u uit e<strong>en</strong> groep<br />

checkbox<strong>en</strong> er meerdere mag kiez<strong>en</strong>, <strong>en</strong> uit e<strong>en</strong> groep radio buttons maar één.<br />

1.3.3 Formulier veld<strong>en</strong>: select <strong>en</strong> textarea<br />

Regelmatig ziet u op webpagina’s e<strong>en</strong> drop-down lijstje waaruit u iets moet kiez<strong>en</strong>, zoals<br />

het land waar u woont. Dit kunt u zelf mak<strong>en</strong> met behulp van select - <strong>en</strong> option-tags.<br />

C <br />

Andorra<br />

13


PHP EN MYSQL de basis<br />

Belgie<br />

Nederland<br />

Luxemburg<br />

<br />

In e<strong>en</strong> voorbeeld dat we later zull<strong>en</strong> behandel<strong>en</strong> komt e<strong>en</strong> textarea voor. Voor onze toepassing<br />

ziet de <strong>HTML</strong> er zo uit:<br />

C <br />

Voorbeeld van vraagtekst<br />

<br />

n E<strong>en</strong> textarea heeft e<strong>en</strong> aantal rij<strong>en</strong> <strong>en</strong> kolomm<strong>en</strong>, in ons voorbeeld 5 <strong>en</strong> 50, die de<br />

afmeting<strong>en</strong> van het tekstblok vaststell<strong>en</strong>. Dit in teg<strong>en</strong>stelling tot de input type text,<br />

waarbij er alle<strong>en</strong> e<strong>en</strong> l<strong>en</strong>gte nodig is.<br />

n Als er bij het ton<strong>en</strong> van het tekstblok al tekst in gezet moet word<strong>en</strong>, dan staat deze<br />

tekst tuss<strong>en</strong> <strong>en</strong> . In ons voorbeeld is dat "Voorbeeld van<br />

vraagtekst".<br />

Als we deze twee code fragm<strong>en</strong>t<strong>en</strong> combiner<strong>en</strong> tot één voorbeld in bonushoofdstuk01/<br />

selecttextarea.html, dan zi<strong>en</strong> we:<br />

Afbeelding 1.6<br />

Drop-down lijst <strong>en</strong> textarea<br />

LET OP!<br />

Als u de gebruiker tekst wil lat<strong>en</strong> invoer<strong>en</strong> in e<strong>en</strong> textarea dan moet u er goed over nad<strong>en</strong>k<strong>en</strong> hoe<br />

u de invoer gaat filter<strong>en</strong> zodat u ge<strong>en</strong> ongew<strong>en</strong>ste effect<strong>en</strong> krijgt. Dit geldt natuurlijk ook voor<br />

andere tekstinvoer in e<strong>en</strong> input-elem<strong>en</strong>t. Zorg dat uw gebruikers ge<strong>en</strong> Trojaanse paard<strong>en</strong> binn<strong>en</strong>smokkel<strong>en</strong>!<br />

We gaan hier in hoodstuk 5 nader op in.<br />

Er valt nog heel wat meer te vertell<strong>en</strong> over <strong>HTML</strong>, <strong>en</strong> er zijn e<strong>en</strong> heleboel tags die we<br />

niet kond<strong>en</strong> behandel<strong>en</strong> in deze paar pagina’s. In de volg<strong>en</strong>de oef<strong>en</strong>ing lat<strong>en</strong> we u wat<br />

uitzoekwerk do<strong>en</strong> over e<strong>en</strong> tag die we nog niet gehad hebb<strong>en</strong>, de img-tag.<br />

14


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

Oef<strong>en</strong>ing 1.1<br />

Maak e<strong>en</strong> webpagina waarin u iets over uzelf vertelt. Zorg dat er e<strong>en</strong> foto van uzelf, of e<strong>en</strong> andere<br />

afbeelding in komt te staan. Gebruik in ieder geval e<strong>en</strong> paar tekstkopp<strong>en</strong>, paragraaftekst, <strong>en</strong> e<strong>en</strong> punt<strong>en</strong>lijst<br />

of e<strong>en</strong> definitielijst.<br />

1.4 Invoeg<strong>en</strong> van e<strong>en</strong> <strong>CSS</strong>-stijlblad<br />

Nu we de structuur van e<strong>en</strong> webpagina kunn<strong>en</strong> mak<strong>en</strong>, wordt het tijd om ook over de<br />

opmaak na te d<strong>en</strong>k<strong>en</strong>. We hebb<strong>en</strong> al gezi<strong>en</strong> dat het hulpmiddel om dit te do<strong>en</strong>, <strong>CSS</strong> is.<br />

<strong>CSS</strong> betek<strong>en</strong>t Cascading Style Sheet. Cascading (aane<strong>en</strong>geschakeld in e<strong>en</strong> serie), geeft aan<br />

dat u meerdere stijlblad<strong>en</strong> kunt mak<strong>en</strong> die elkaar aanvull<strong>en</strong> of overschrijv<strong>en</strong>, afhankelijk<br />

van de volgorde waarin de stijl<strong>en</strong> gedefinieerd word<strong>en</strong>. Stijl<strong>en</strong> bepal<strong>en</strong> het uiterlijk van<br />

e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t. Als u ge<strong>en</strong> stijl opgeeft, dan zal de browser e<strong>en</strong> standaardvormgeving<br />

toepass<strong>en</strong>, zie bijvoorbeeld afbeelding 1.1.<br />

<strong>CSS</strong> is e<strong>en</strong> declaratieve taal, dat betek<strong>en</strong>t dat u aangeeft hoe e<strong>en</strong> bepaalt elem<strong>en</strong>t vormgegev<strong>en</strong><br />

moet word<strong>en</strong>, maar dat de volgorde waarin u uw CCS-code opschrijft er minder<br />

toe doet. Behalve als u twee keer hetzelfde zegt over e<strong>en</strong> bepaalt elem<strong>en</strong>t, dan zal de<br />

laatste of de meest specifieke regel geld<strong>en</strong>. Ik geef toe dat dit e<strong>en</strong> beetje vaag is <strong>en</strong> soms<br />

kunn<strong>en</strong> ingewikkelde stijlblad<strong>en</strong> onbegrijpelijke vormgeving oplever<strong>en</strong>. De <strong>en</strong>ige raad<br />

die we kunn<strong>en</strong> gev<strong>en</strong> is om stijlblad<strong>en</strong> zo e<strong>en</strong>voudig mogelijk te houd<strong>en</strong>.<br />

E<strong>en</strong> stijlelem<strong>en</strong>t ziet er zo uit:<br />

C selector {eig<strong>en</strong>schap: waarde; eig<strong>en</strong>schap: waarde}<br />

De selector geeft de tag-naam <strong>en</strong> ev<strong>en</strong>tueel e<strong>en</strong> class-naam aan, de eig<strong>en</strong>schapp<strong>en</strong> of<br />

properties zijn de stijlelem<strong>en</strong>t<strong>en</strong> zoals kleur, lettertype <strong>en</strong>zovoort. We zull<strong>en</strong> hier in gaan<br />

op drie soort<strong>en</strong> selector<strong>en</strong>:<br />

nn<br />

nn<br />

nn<br />

E<strong>en</strong> selector voor <strong>HTML</strong>-tags.<br />

Selector<strong>en</strong> voor elem<strong>en</strong>t<strong>en</strong> met e<strong>en</strong> id.<br />

Selector<strong>en</strong> voor elem<strong>en</strong>t<strong>en</strong> met e<strong>en</strong> class.<br />

In latere versies van <strong>CSS</strong> kunt u de selector<strong>en</strong> verfijn<strong>en</strong> door bijvoorbeeld op te gev<strong>en</strong> dat<br />

de regel alle<strong>en</strong> geldt voor tags van e<strong>en</strong> bepaald type, zoals input-elem<strong>en</strong>t van het type<br />

“text” (<strong>en</strong> dus niet voor e<strong>en</strong> submit-knop input-elem<strong>en</strong>t).<br />

Er zijn steeds meer browsers die e<strong>en</strong> goede ondersteuning voor <strong>CSS</strong> bied<strong>en</strong>, ook voor de<br />

laatste versie (versie 3), maar als uw website ook oudere browsers moet ondersteun<strong>en</strong>,<br />

dan is het raadzaam goed te onderzoek<strong>en</strong> wat u wel <strong>en</strong> niet kunt gebruik<strong>en</strong>.<br />

15


PHP EN MYSQL de basis<br />

1.4.1 Voorbeeld <strong>CSS</strong>-stijlelem<strong>en</strong>t:<br />

C body {<br />

background: #f7f7f9;<br />

font-family: trebuchet ms;<br />

color: navy;<br />

}<br />

In dit voorbeeld zegg<strong>en</strong> we dat de achtergrondkleur voor de <strong>HTML</strong>-pagina binn<strong>en</strong> de<br />

hele body #f7f7f9 is, het lettertype is trebuchet ms, <strong>en</strong> de kleur van de tekst donkerblauw.<br />

De beste <strong>en</strong> meest flexibele manier om stijl<strong>en</strong> te gebruik<strong>en</strong> is om e<strong>en</strong> extern stijlbestand<br />

te mak<strong>en</strong>, dat u als volgt in uw <strong>HTML</strong>-docum<strong>en</strong>t kunt invoeg<strong>en</strong>:<br />

C <br />

LAMPjes Site<br />

<br />

<br />

Als alle pagina’s van e<strong>en</strong> site van hetzelfde stijlblad gebruikmak<strong>en</strong>, dan is het e<strong>en</strong>voudig<br />

om stijlverandering<strong>en</strong> op e<strong>en</strong> site door te voer<strong>en</strong>. Bov<strong>en</strong>di<strong>en</strong> kan de <strong>HTML</strong> vaak korter<br />

<strong>en</strong> e<strong>en</strong>voudiger word<strong>en</strong> als de stijl strikt gescheid<strong>en</strong> van de <strong>HTML</strong> in e<strong>en</strong> stijlblad wordt<br />

opgeslag<strong>en</strong>. Voor het ontwikkel<strong>en</strong> van e<strong>en</strong> stijlblad is het vaak nuttig om de stijl eerst<br />

in het <strong>HTML</strong>-docum<strong>en</strong>t op te nem<strong>en</strong>, omdat het anders lastig experim<strong>en</strong>ter<strong>en</strong> is met<br />

verschill<strong>en</strong>de stijlopties.<br />

Let op de browsercache<br />

Browsers do<strong>en</strong> vaak moeilijk over het ververs<strong>en</strong> van hun cache omdat ze niet in de gat<strong>en</strong> hebb<strong>en</strong><br />

dat u de stijl hebt aangepast, zodat u zich achter het oor krabt waarom e<strong>en</strong> wijziging niet werkt.<br />

In sommige browsers kunt u de cache uitschakel<strong>en</strong>, soms zult u echter de browser opnieuw moet<strong>en</strong><br />

opstart<strong>en</strong> om wijziging<strong>en</strong> te zi<strong>en</strong>.<br />

D<strong>en</strong>k ook aan het inzett<strong>en</strong> van Firebug bij het ontwikkel<strong>en</strong> van stijlblad<strong>en</strong>. Als het goed<br />

is, hebt u Firebug geïnstalleerd bij het lez<strong>en</strong> van het vorige hoofdstuk. Als u Firebug<br />

activeert, dan kunt u voor elk <strong>HTML</strong>-elem<strong>en</strong>t precies zi<strong>en</strong> wat de geld<strong>en</strong>de stijlregels zijn,<br />

<strong>en</strong> hoe ze zijn overgeërfd of berek<strong>en</strong>d. Ook kunt u tijdelijk <strong>en</strong> dynamisch verandering<strong>en</strong><br />

aanbr<strong>en</strong>g<strong>en</strong>, zodat u kunt experim<strong>en</strong>ter<strong>en</strong> met verschill<strong>en</strong>de mogelijkhed<strong>en</strong>.<br />

16


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

1.4.2 Het attribuut id<br />

Behalve voor <strong>HTML</strong>-tags van e<strong>en</strong> bepaald type kunn<strong>en</strong> we ook stijl definier<strong>en</strong> voor e<strong>en</strong><br />

specifiek elem<strong>en</strong>t dat e<strong>en</strong> id heeft. D<strong>en</strong>k er aan dat e<strong>en</strong> id uniek moet zijn binn<strong>en</strong> e<strong>en</strong><br />

<strong>HTML</strong>-docum<strong>en</strong>t. E<strong>en</strong> <strong>HTML</strong>-fragm<strong>en</strong>t met e<strong>en</strong> id zou er zo uit kunn<strong>en</strong> zi<strong>en</strong>:<br />

C <br />

Deze site bevat informatie over het LAMP platform<br />

<br />

En we zoud<strong>en</strong> e<strong>en</strong> stijlregel kunn<strong>en</strong> mak<strong>en</strong> als volgt:<br />

C #cont<strong>en</strong>t-area {<br />

border: solid 1px black;<br />

margin: 10px;<br />

padding: 10px;<br />

width: 200px;<br />

}<br />

We hebb<strong>en</strong> hier gezegd dat het elem<strong>en</strong>t met id="cont<strong>en</strong>t-area" e<strong>en</strong> dunne zwarte rand<br />

moet krijg<strong>en</strong>, het hele elem<strong>en</strong>t is 200 pixels breed, er is e<strong>en</strong> marge om het elem<strong>en</strong>t van 10<br />

pixels <strong>en</strong> e<strong>en</strong> padding binn<strong>en</strong> het elem<strong>en</strong>t van ook 10 pixels. Zie afbeelding 1.8 voor hoe<br />

het eruit zou kunn<strong>en</strong> zi<strong>en</strong>.<br />

1.4.3 Het attribuut class<br />

Soms will<strong>en</strong> we e<strong>en</strong> bepaalde klasse van elem<strong>en</strong>t<strong>en</strong> van e<strong>en</strong> bepaalde stijl voorzi<strong>en</strong>. Dit is<br />

e<strong>en</strong> voorbeeld van e<strong>en</strong> stijl, gedefinieerd door e<strong>en</strong> class-attribuut:<br />

C .cont<strong>en</strong>ts {color: red;}<br />

De <strong>HTML</strong> zou zoiets als het volg<strong>en</strong>de kunn<strong>en</strong> bevatt<strong>en</strong>:<br />

C <br />

Deze site bevat informatie over het LAMP platform<br />

<br />

Alle elem<strong>en</strong>t<strong>en</strong> waarvoor class="cont<strong>en</strong>ts" is gedefinieerd, zull<strong>en</strong> nu rood gekleurde<br />

tekst hebb<strong>en</strong>.<br />

1.4.4 E<strong>en</strong> sam<strong>en</strong>gesteld voorbeeld<br />

Het is ook mogelijk om sam<strong>en</strong>gestelde regels te mak<strong>en</strong>, bijvoorbeeld:<br />

17


PHP EN MYSQL de basis<br />

C div.cont<strong>en</strong>ts p { font-style: italic; font-size: 24px; }<br />

Deze regel zegt dat voor p (paragraph) tags die binn<strong>en</strong> e<strong>en</strong> div met de class "cont<strong>en</strong>ts"<br />

te vind<strong>en</strong> zijn, de tekst cursief moet word<strong>en</strong> weergegev<strong>en</strong> met e<strong>en</strong> lettergrootte van 24<br />

pixels.<br />

We lat<strong>en</strong> hier e<strong>en</strong> voorbeeld zi<strong>en</strong> waarbij we drie keer e<strong>en</strong> div met dezelfde tekstinhoud<br />

hebb<strong>en</strong>, eerst zonder id of class, dan e<strong>en</strong> div met class="cont<strong>en</strong>ts", vervolg<strong>en</strong>s e<strong>en</strong> met<br />

id="cont<strong>en</strong>t-area", <strong>en</strong> t<strong>en</strong> slotte nog e<strong>en</strong> p-tag met tekst, niet binn<strong>en</strong> e<strong>en</strong> div, maar wel<br />

met class="cont<strong>en</strong>ts". De stijl is als volgt:<br />

C body {border: solid 1px black; padding: 10px;<br />

width: 600px; margin: auto; margin-top: 10px;}<br />

div.cont<strong>en</strong>ts p { font-style: italic; font-size: 24px; }<br />

.cont<strong>en</strong>ts { font-family: courier; }<br />

#cont<strong>en</strong>t-area { border: solid 1px black; margin: 10px;<br />

padding: 10px; width: 200px; }<br />

De <strong>HTML</strong> ziet er, <strong>en</strong>igszins verkort, als volgt uit:<br />

C <br />

<br />

Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br />

Vestibulum ullamcorper lacus porta diam malesuada sodales.<br />

Cras ultrices lacinia tortor sit amet aliquet.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Hier start e<strong>en</strong> nieuwe paragraaf.<br />

<br />

En dan nu het resultaat:<br />

Let ook op de styling van de body-tag. Het komt vaak voor dat u e<strong>en</strong> webpagina wilt<br />

mak<strong>en</strong> die e<strong>en</strong> beperkte breedte heeft, maar die wel in het midd<strong>en</strong> van het browser<br />

scherm staat, onafhankelijk van de breedte daarvan. De truc is om dan margin: auto; te<br />

gebruik<strong>en</strong>, er moet dan wel ook e<strong>en</strong> width gedefinieerd zijn.<br />

18


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

Afbeelding 1.7<br />

Invloed van <strong>CSS</strong> op<br />

opmaak voor 3 div’s<br />

1.4.5 E<strong>en</strong> tabel mooier mak<strong>en</strong> met <strong>CSS</strong><br />

We will<strong>en</strong> u e<strong>en</strong> paar trucjes om e<strong>en</strong> tabel mooier te mak<strong>en</strong> niet onthoud<strong>en</strong>. We nem<strong>en</strong><br />

hetzelfde <strong>HTML</strong>-docum<strong>en</strong>t dat ons afbeelding 1.3 opleverde (bonushoofdstuk01/tabel.<br />

html) <strong>en</strong> we voeg<strong>en</strong> het volg<strong>en</strong>de stijlblad toe aan de head-sectie:<br />

C <br />

table { border-collapse: collapse;}<br />

td, th {<br />

border: 1px solid #96969D;<br />

padding-left: 5px;<br />

padding-right: 5px;<br />

}<br />

tr.onev<strong>en</strong> { background-color:#CFDBEC;}<br />

th { background-color: #3399FF; color: white;}<br />

<br />

Verder voeg<strong>en</strong> we aan de tr-tags van de onev<strong>en</strong> rij<strong>en</strong> in de tabel toe: class="onev<strong>en</strong>" <strong>en</strong><br />

hal<strong>en</strong> we het attribuut border bij de table-tag weg. Bekijk bonushoofdstuk01/tabel-css.<br />

html voor het eindresultaat. In onze browser ziet de tabel er nu zo uit:<br />

Afbeelding 1.8<br />

E<strong>en</strong> tabel na toepassing van <strong>CSS</strong>.<br />

19


PHP EN MYSQL de basis<br />

Dat is heel wat beter, nietwaar? Lat<strong>en</strong> we naar de <strong>CSS</strong> kijk<strong>en</strong> om te begrijp<strong>en</strong> hoe we<br />

dit voor elkaar hebb<strong>en</strong> gekreg<strong>en</strong>. De eerste regel, table { border-collapse: collapse;},<br />

geeft aan dat de borders van de cell<strong>en</strong> moet<strong>en</strong> sam<strong>en</strong>vall<strong>en</strong>. Als u dit niet doet,<br />

dan komt er e<strong>en</strong> kleine ruimte tuss<strong>en</strong> de cell<strong>en</strong>. U kunt dit gemakkelijk prober<strong>en</strong> door<br />

/* <strong>en</strong> */ om de regel he<strong>en</strong> te zett<strong>en</strong>, waardoor het comm<strong>en</strong>taar wordt, <strong>en</strong> daarna de<br />

<strong>HTML</strong> in uw browser op te roep<strong>en</strong>. Dan zijn er e<strong>en</strong> paar regels die e<strong>en</strong> lichtgrijze rand<br />

mak<strong>en</strong> om de cell<strong>en</strong> <strong>en</strong> die de cell<strong>en</strong> links <strong>en</strong> rechts wat ruimte gev<strong>en</strong>. De rij<strong>en</strong> die we<br />

van class="onev<strong>en</strong>" hebb<strong>en</strong> voorzi<strong>en</strong>, krijg<strong>en</strong> e<strong>en</strong> lichtblauwe achtergrondkleur, <strong>en</strong> de<br />

kolomkopp<strong>en</strong> (de th-tags), krijg<strong>en</strong> e<strong>en</strong> felblauwe achtergrond.<br />

1.4.6 Formulier<strong>en</strong> <strong>en</strong> <strong>CSS</strong><br />

Als afsluiting van dit stukje over <strong>CSS</strong> will<strong>en</strong> we het formulier dat we zag<strong>en</strong> in paragraaf<br />

1.3 mooier mak<strong>en</strong>, zodat het eruit ziet zoals in afbeelding 1.4. Als u naar de bron-code<br />

kijkt van veel formulier<strong>en</strong> op het web, dan zult u ontdekk<strong>en</strong> dat er veel van tabell<strong>en</strong> gebruikt<br />

wordt gemaakt om de veld<strong>en</strong> van formulier<strong>en</strong> netjes onder elkaar te krijg<strong>en</strong>. Dat<br />

is natuurlijk erg verleidelijk, zeker als u eerst ur<strong>en</strong> geworsteld heeft met floating div’s<br />

<strong>en</strong>zovoorts <strong>en</strong> dan met e<strong>en</strong> kleine wijziging uw hele structuur weer in de war gooit. Maar<br />

het hoort niet, tabell<strong>en</strong> zijn er om tabelgegev<strong>en</strong>s te lat<strong>en</strong> zi<strong>en</strong> <strong>en</strong> niet om formulier<strong>en</strong> te<br />

formatter<strong>en</strong>. Er zijn ook korte oplossing<strong>en</strong>, waarvan we er één hieronder lat<strong>en</strong> zi<strong>en</strong>. De<br />

auteur ervan zegt dat u ontslag<strong>en</strong> wordt als u hierna ooit nog e<strong>en</strong> tabel gebruikt om e<strong>en</strong><br />

formulier te formatter<strong>en</strong>, echter, als u bijvoorbeeld lange tekst voor e<strong>en</strong> formulierveld<br />

heeft staan, dat in meerdere regels getoond moet kunn<strong>en</strong> word<strong>en</strong>, dan zou ik nog ge<strong>en</strong><br />

andere manier wet<strong>en</strong>. In minder exotische gevall<strong>en</strong> is de styling hieronder heel effectief.<br />

Om hem te kunn<strong>en</strong> toepass<strong>en</strong> moet<strong>en</strong> we ook de <strong>HTML</strong> aanpass<strong>en</strong>:<br />

C <br />

<br />

voor- <strong>en</strong> achternaam:<br />

<br />

<br />

<br />

email:<br />

<br />

<br />

<br />

&nbsp;<br />

<br />

<br />

<br />

We hebb<strong>en</strong> de labeltekst in e<strong>en</strong> label-tag geplaatst. Dat stelt ons in staat om de tekst e<strong>en</strong><br />

vaste breedte te gev<strong>en</strong> <strong>en</strong> dat is de oplossing om formulierveld<strong>en</strong> netjes in het gelid te<br />

krijg<strong>en</strong>.<br />

20


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

De label-tag stelt e<strong>en</strong> for-attribuut verplicht, dat aangeeft op welk veld het label van<br />

toepassing is. Het for-attribuut grijpt aan op de id van e<strong>en</strong> veld, dus moet<strong>en</strong> we ook aan<br />

elk veld id’s toevoeg<strong>en</strong>. Dat is eig<strong>en</strong>lijk jammer, want met veel formulier<strong>en</strong> <strong>en</strong> veel veld<strong>en</strong><br />

komt er ook e<strong>en</strong> onoverzichtelijke hoeveelheid id’s, die ook nog e<strong>en</strong>s uniek moet<strong>en</strong> zijn.<br />

Maar het voordeel is nu, dat als u op labeltekst klikt, het bijbehor<strong>en</strong>de formulierveld<br />

focus krijgt. Om veld<strong>en</strong> met hun labels bij elkaar te houd<strong>en</strong> zijn ze binn<strong>en</strong> div’s geplaatst<br />

met class="field_container". Zonder verdere omhaal is hier de <strong>CSS</strong> tekst:<br />

C label { width: 200px; float: left; text-align: right; padding-right: 10px;}<br />

form { width: 450px; border: solid 1px; padding-bottom: 5px;<br />

font-family: verdana;}<br />

.field_container { padding-top: 5px;}<br />

input[type="text"] { width: 200px; }<br />

Kijk maar in bonushoofdstuk01/simpelform2.html <strong>en</strong> laat het in e<strong>en</strong> browser zi<strong>en</strong>. U zult<br />

nu afbeelding 1.4 te zi<strong>en</strong> krijg<strong>en</strong>.<br />

1.5 <strong>JavaScript</strong> <strong>en</strong> jQuery<br />

We zull<strong>en</strong> heel kort zijn over <strong>JavaScript</strong> <strong>en</strong> jQuery. Misschi<strong>en</strong> is het wel zo dat u voor e<strong>en</strong><br />

webpagina die aan de eis<strong>en</strong> van vandaag kan voldo<strong>en</strong>, meer tijd kwijt b<strong>en</strong> met het schrijv<strong>en</strong><br />

van <strong>JavaScript</strong>- <strong>en</strong>/of jQuery-code (wat ook <strong>JavaScript</strong> is) dan met PHP-code, maar<br />

dit boek gaat daar nu e<strong>en</strong>maal niet over. We zull<strong>en</strong> later in dit boek wel wat jQuery-code<br />

teg<strong>en</strong> kom<strong>en</strong>, met name om Ajax-communicatie mogelijk te mak<strong>en</strong>, maar we zull<strong>en</strong> u niet<br />

vrag<strong>en</strong> die code zelf te schrijv<strong>en</strong>.<br />

1.5.1 <strong>JavaScript</strong><br />

<strong>JavaScript</strong> is de webtaal waarmee u dynamisch ding<strong>en</strong> in de browser kan verander<strong>en</strong>. U<br />

kunt animaties mak<strong>en</strong>, <strong>HTML</strong>-elem<strong>en</strong>t<strong>en</strong> aanpass<strong>en</strong> <strong>en</strong> formulier<strong>en</strong> check<strong>en</strong> op geldige<br />

inhoud. Maar let op! Als u iets checkt met <strong>JavaScript</strong>, betek<strong>en</strong>t dat niet dat u hetzelfde<br />

niet nogmaals moet check<strong>en</strong> in PHP, want e<strong>en</strong> hacker kan altijd de informatie aanpass<strong>en</strong><br />

voordat het naar de server gestuurd wordt.<br />

<strong>JavaScript</strong> lijkt wat betreft syntaxis op PHP, maar als taal is het ook weer zo verschill<strong>en</strong>d<br />

dat u zich makkelijk kunt vergiss<strong>en</strong>. Object<strong>en</strong> in <strong>JavaScript</strong> zijn anders dan object<strong>en</strong> in<br />

PHP, sommige ingebouwde functies zijn hetzelfde, maar de meeste niet. Als u in Java-<br />

Script elem<strong>en</strong>t<strong>en</strong> van de webpagina wilt verander<strong>en</strong>, dan krijgt u te mak<strong>en</strong> met de interne<br />

structuur van het <strong>HTML</strong>-docum<strong>en</strong>t, het zog<strong>en</strong>aamde Docum<strong>en</strong>t Object Model, of DOM.<br />

Er is e<strong>en</strong> to<strong>en</strong>em<strong>en</strong>d aantal boek<strong>en</strong>, dat u graag uit de doek<strong>en</strong> wil do<strong>en</strong> hoe dit allemaal<br />

in elkaar zit, dus hier beperk<strong>en</strong> we ons tot e<strong>en</strong> e<strong>en</strong>voudig “Hallo wereld” voorbeeld.<br />

C <br />

<br />

21


PHP EN MYSQL de basis<br />

<br />

function welkom() {<br />

alert("Hallo <strong>JavaScript</strong> wereld!");<br />

}<br />

<br />

<br />

<br />

<br />

<br />

<br />

Dit is e<strong>en</strong> erg simpele pagina met één knop er op. Als u daar op klikt, dan verschijnt er<br />

e<strong>en</strong> pop-upscherm met "Hallo <strong>JavaScript</strong> wereld!" erin:<br />

Afbeelding 1.9<br />

Hallo <strong>JavaScript</strong>!<br />

Als u goed naar de <strong>HTML</strong>-code kijkt, dan zal u opvall<strong>en</strong> dat de input-tag e<strong>en</strong> extra attribuut<br />

heeft gekreg<strong>en</strong>: onclick="welkom()". Als op de knop wordt geklikt dan ziet de<br />

browser dat. In dit geval is het e<strong>en</strong> onclick ev<strong>en</strong>t. Met het attribuut onclick geeft u aan wat<br />

de browser moet do<strong>en</strong> als het click ev<strong>en</strong>t optreedt.<br />

EVENT<br />

Ev<strong>en</strong>t is weer zo’n mooi Neder-Engels woord dat we niet vertal<strong>en</strong> in dit boek. Het betek<strong>en</strong>t natuurlijk<br />

gebeurt<strong>en</strong>is, <strong>en</strong> we sprek<strong>en</strong> hier meestal over beweging<strong>en</strong> <strong>en</strong> klikk<strong>en</strong> met de muis over<br />

het browserscherm.<br />

De bek<strong>en</strong>dste ev<strong>en</strong>ts zijn: click, mouseover, mousedown, mouseup.<br />

22


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

We hebb<strong>en</strong> aangegev<strong>en</strong> dat als het click ev<strong>en</strong>t optreedt, de functie welkom() aangeroep<strong>en</strong><br />

moet word<strong>en</strong>. In deze functie staat de aanroep van de in <strong>JavaScript</strong> ingebouwde<br />

functie alert() <strong>en</strong> deze veroorzaakt het verschijn<strong>en</strong> van het pop-upschermpje.<br />

E<strong>en</strong> nadeel van deze aanpak is dat er nu mogelijk allerlei <strong>JavaScript</strong>-code in ons <strong>HTML</strong>docum<strong>en</strong>t<br />

terechtkomt <strong>en</strong> dat betek<strong>en</strong>t dat iemand die het gebruik van <strong>JavaScript</strong> heeft<br />

uitgeschakeld, mogelijk niets te zi<strong>en</strong> krijgt.<br />

1.5.2 jQuery<br />

jQuery is e<strong>en</strong> <strong>JavaScript</strong>-raamwerk. Het adverteert zichzelf als “write less, do more”<br />

<strong>JavaScript</strong>-raamwerk. Het is dus bedoeld om het schrijv<strong>en</strong> van <strong>JavaScript</strong> gemakkelijker<br />

te mak<strong>en</strong>. En dat doet het inderdaad, want als u 17 keer getElem<strong>en</strong>tsByClassname("myclass")<br />

hebt geschrev<strong>en</strong>, of e<strong>en</strong> andere lange functi<strong>en</strong>aam, dan is het e<strong>en</strong> verademing<br />

om $(‘.myclass’) te kunn<strong>en</strong> zegg<strong>en</strong>, wat in jQuery hetzelfde betek<strong>en</strong>t. Er zijn veel<br />

<strong>JavaScript</strong>-raamwerk<strong>en</strong> in omloop, maar jQuery is waarschijnlijk het meest populair op<br />

dit mom<strong>en</strong>t, het is snel <strong>en</strong> compact <strong>en</strong> er is veel docum<strong>en</strong>tatie over te vind<strong>en</strong>. Wat doet<br />

jQuery?<br />

nn<br />

nn<br />

nn<br />

nn<br />

nn<br />

nn<br />

Het werkt met de meeste browsers, zelfs Microsoft Internet Explorer 6, die berucht is<br />

om compatibiliteitsproblem<strong>en</strong>.<br />

jQuery ondersteunt <strong>CSS</strong>3, zelfs als de browser dat zelf niet doet.<br />

Het maakt navigatie door e<strong>en</strong> <strong>HTML</strong>-docum<strong>en</strong>t makkelijker.<br />

Het zorgt voor e<strong>en</strong>voudige ev<strong>en</strong>t-afhandeling.<br />

Het kan animaties mak<strong>en</strong>.<br />

Het ondersteunt Ajax-interactie.<br />

Vooral dit laatste punt, de Ajax-interactie, maakt het e<strong>en</strong> stuk gemakkelijker om interactieve<br />

websites te ontwikkel<strong>en</strong> die in alle moderne browsers werk<strong>en</strong>. In het hoofdstuk<br />

over browser-serverinteractie vertell<strong>en</strong> we daar meer over. Hier lat<strong>en</strong> we alle<strong>en</strong> e<strong>en</strong><br />

erg e<strong>en</strong>voudig voorbeeld zi<strong>en</strong>, hetzelfde voorbeeld als in de vorige paragraaf, maar nu<br />

met jQuery <strong>en</strong> met het verschil dat we ge<strong>en</strong> alert pop-up lat<strong>en</strong> zi<strong>en</strong>, maar de tekst in het<br />

<strong>HTML</strong>-docum<strong>en</strong>t toevoeg<strong>en</strong>.<br />

C <br />

<br />

jQuery Hallo wereld<br />

<br />

<br />

<br />

$(docum<strong>en</strong>t).ready(function() {<br />

$("input").click(function() {<br />

$(‘#hallo-area’).app<strong>en</strong>d(‘Hallo jQuery wereld!’);<br />

});<br />

});<br />

23


PHP EN MYSQL de basis<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

U ziet dat er nu ge<strong>en</strong> <strong>JavaScript</strong>-code tuss<strong>en</strong> de <strong>HTML</strong> staat, wat betek<strong>en</strong>t dat de pagina<br />

nog steeds te zi<strong>en</strong> is als <strong>JavaScript</strong> is uitgeschakeld. Dat is in dit voorbeeld weinig zinvol,<br />

maar voor grote sites die voor e<strong>en</strong> breed publiek toegankelijk moet<strong>en</strong> zijn, waaronder<br />

m<strong>en</strong>s<strong>en</strong> die slecht of helemaal niet kunn<strong>en</strong> zi<strong>en</strong>, of mobiele apparat<strong>en</strong> die ge<strong>en</strong> <strong>JavaScript</strong><br />

ondersteun<strong>en</strong>, kan dit van groot belang zijn. Zoekt u e<strong>en</strong>s naar “progressive <strong>en</strong>hancem<strong>en</strong>t”<br />

als u meer over dit onderwerp wil wet<strong>en</strong>.<br />

We hebb<strong>en</strong> de jQuery-bibliotheek geactiveerd door het bestand waarin hij te vind<strong>en</strong> is,<br />

lib/jquery-1.6.2.min.js, in te voeg<strong>en</strong>. Overtuig u ervan dat dit bestand ook echt staat<br />

waar u zegt dat het staat. Geloof me, dat zal u veel hoofdbrek<strong>en</strong>s bespar<strong>en</strong>.<br />

Code in jQuery begint vaak met: $(docum<strong>en</strong>t).ready(function() {…}. Dit betek<strong>en</strong>t dat<br />

de code tuss<strong>en</strong> de gekrulde hak<strong>en</strong> pas uitgevoerd mag word<strong>en</strong> als het complete <strong>HTML</strong>docum<strong>en</strong>t<br />

gelad<strong>en</strong> is door de browser. Dat voorkomt dat de code naar elem<strong>en</strong>t<strong>en</strong> gaat<br />

zoek<strong>en</strong> die nog niet gelad<strong>en</strong> zijn.<br />

In plaats van het attribuut onclick hebb<strong>en</strong> we nu $("input").click(function() {…}.<br />

In feite zal de code binn<strong>en</strong> de functie geactiveerd word<strong>en</strong> voor alle inputelem<strong>en</strong>t<strong>en</strong> in het<br />

<strong>HTML</strong>-docum<strong>en</strong>t. Dat zou u kunn<strong>en</strong> verander<strong>en</strong> door de knop e<strong>en</strong> id te gev<strong>en</strong>. Onder de<br />

knop vindt u e<strong>en</strong> div met de id “hallo-area”. In de code in de clickfunctie staat dat we bij<br />

ieder click ev<strong>en</strong>t de tekst: ‘Hallo jQuery wereld!’ toevoeg<strong>en</strong> onderaan de div. Ik<br />

d<strong>en</strong>k dat de code verder voor zichzelf spreekt. Nadat u 3 keer op de knop geklikt hebt, zal<br />

uw browser-v<strong>en</strong>ster er als volgt uitzi<strong>en</strong>:<br />

Afbeelding 1.10<br />

Hallo jQuery!<br />

24


1 <strong>HTML</strong>, <strong>CSS</strong> <strong>en</strong> <strong>JavaScript</strong><br />

Natuurlijk raakt dit voorbeeld nauwelijks aan de oppervlakte van wat u met jQuery kunt<br />

do<strong>en</strong>, we hop<strong>en</strong> alle<strong>en</strong> dat u e<strong>en</strong> indruk hebt gekreg<strong>en</strong> van de structuur <strong>en</strong> stijl van e<strong>en</strong><br />

<strong>HTML</strong>-docum<strong>en</strong>t waaraan jQuery code is toegevoegd. We sluit<strong>en</strong> het hoofdstuk af met<br />

e<strong>en</strong> paar oef<strong>en</strong>ing<strong>en</strong> waarmee u voor uzelf kunt nagaan of uw k<strong>en</strong>nis van <strong>HTML</strong> <strong>en</strong> <strong>CSS</strong><br />

voldo<strong>en</strong>de is voor het mak<strong>en</strong> van aardige webpagina’s.<br />

Oef<strong>en</strong>ing 1.2<br />

Neem het <strong>HTML</strong>-docum<strong>en</strong>t dat u gemaakt hebt met oef<strong>en</strong>ing 1.1. Maak er iets moois van!<br />

Als toegift: als u met uw muis bov<strong>en</strong> uw foto komt, verschijnt er “Hallo ...(vul hier uw naam is)..”. Hint:<br />

gebruikt het mouseover ev<strong>en</strong>t. Tweede toegift: nu met jQuery.<br />

Oef<strong>en</strong>ing 1.3<br />

Probeer afbeelding 1.4 te reproducer<strong>en</strong>, door het formulier uit paragraaf 1.3 in e<strong>en</strong> <strong>HTML</strong>-tabel te zett<strong>en</strong>.<br />

Oef<strong>en</strong>ing 1.4<br />

Neem het resultaat van het <strong>HTML</strong>-docum<strong>en</strong>t<strong>en</strong> uit oef<strong>en</strong>ing 1.2 <strong>en</strong> 1.3.<br />

Maak er één docum<strong>en</strong>t van, waarbij uw persoonlijke gegev<strong>en</strong>s in het midd<strong>en</strong> kom<strong>en</strong> te staan, <strong>en</strong> het<br />

formulier links. Maak er e<strong>en</strong> paginakop bov<strong>en</strong> met groot uitgevoerde tekst: “Dit is de pagina van … “<br />

(vul uw naam in). Probeer <strong>en</strong>kele variaties in de layout, met tabell<strong>en</strong> of met <strong>CSS</strong>.<br />

25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!