Cursus Dynamisch HTML

Voorbeelden

I. Inleiding tot stijlen in HTML *

A. Definitie van stijlen met de Communicator *
B. Stijlen in cascade *
    Eerste oefening: Oef1.html *
C. Gebruik van Javascript *
    Stijldefinitie in javascript: Oef2.html *
    Stijldefinitie in CSS: Oef3.html *
    Stijldefinitie in javascript: Oef3_js.html *
D. Het overerven van stijlen *
E. Stijlbladen definiëren in een extern bestand. *
    Voorbeeld van een extern stijlblad: Oef5.html *
F. Definiëren van stijlklassen *
    Voorbeeld definiëren van stijlklassen: Oef6.html *
G. Benoemde individuele stijlen *
    Voorbeeld benoemde klassen: Oef7.html *
H. Selectiecriteria gebruiken *
    Voorbeeld van selectiecriteria: Oef8.html *
I. Stijlen voor een individueel element *
    Voorbeeld van een stijl voor een individueel element: Oef9.html (CSS) *
J. Combineren van Stijlbladen *
    Voorbeeld combineren van stijlen: Oef10.html *
II. Gebruik van layers * A. Inleiding *
B. Positioneren door het gebruik van stijlen *
    Eerste voorbeeld met layers: Oef21.html *
    Voorbeeld gebruik van layers: Oef22.html *
C. Positionering met de <LAYER>tag *
    Voorbeeld met <LAYER> tag: Oef23.html *
    Stijlen en layers gecombineerd: Oef24.html *
D. Absolute of relatieve positionering *
E. Attributen en eigenschappen *
    Voorbeeld van relatieve positionering: Oef25.html *
F. Gebruik van Javascript *
G. Layer methoden *
H. Gebruik, van een gelocaliseerd javascript. *
    Voorbeeld Oef25.html: verander achtergrondkleur met onMouseOver *
I. Animatie *
    Voorbeeld: de zwemmende vis fish1.html *
  1. Inleiding tot stijlen in HTML

  2. Deze inleiding geeft een overzicht van de twee mogelijkheden om stijlen te definiëren in Netscape Communicator. Het geeft ook voorbeelden over het overerven van stijlen.
     
     

    1. Definitie van stijlen met de Communicator
Voor dat men stijlen gebruikte, was er slechts weinig controle over de presentatie van een webpagina. Je kon bv. teksten als heading tonen, maar je kon geen marge definiëren voor je pagina, of de lijnhoogte spedifiëren.

Stijlen geven je een veel grotere vrijheid. Met stijlen kun je vele stijlattributen van uw webpagina zoals de tekstkleur, marges, oplijning van elementen, fonts, en nog vele andere dingen!

Netscape kent twee syntaxen voor stijlen:

Je moet dus steeds het type declareren als "text/CSS" of "text/Javascript".

Terug naar begin

    1. Stijlen in cascade

    2. Stijlen in cascade geven geen probleem voor Netscape Communicator. Voor de originele specificaties in dit verband kan je terecht op de webpagina:

      http://www.w3.org/pub/WWW/TR/REC-CSS1

      Een stijlenblad (Eng. style sheet) bestaat uit twee of meer stijldefinities. In CSS-representatie

      worden de eigenschappen en hun waarden vermeld in gekrulde haakjes na de selectiecriteria voor die stijl.

      De selectiecreteria bepalen op welke elementen de stijl zal worden toegepast. Als het selectiecriterium een HTML-element is, wordt de stijl toegepast op elk voorkomen van dat element. Het selectiecriterium kan ook een klasse (Eng. class) zijn, een ID, of afhankelijk van de context. We zullen van elk een voorbeeld geven.

      Elke eigenschap wordt gevolgd door een dubbelpunt, en daarna de betreffende waarde voor die eigenschap. Alle paren eigenschap/waarde worden gescheiden door een kommapunt.
       

      Voorbeeld:

      Het volgende voorbeeld geeft de definitie van twee stijlen in cascade. Het eerste definieert de fontgrootte op 18 voor alle <P> elementen en de linkermarge voor alle <P> elementen op 20.

      De tweede stijldefinitie specifieert de kleur blauw voor alle <H1> elementen.

      <STYLE TYPE="text/css">
      <!--
      P {font-size:18pt; margin-left:20pt;}
      H1 {color:blue;}
      -->
      </STYLE>

      Eerste oefening: Oef1.html

      Probeer een en ander eens uit in het volgend voorbeeld:

      <html>
      <head>
      <title>Oef1</title>
      </head>
      <body>
      <STYLE TYPE="text/css">
      <!--
      P {font-size:18pt; margin-left:20pt;}
      H1 {color:blue;}
      -->
      </STYLE>
      <H1>Onze nieuwe hoofding</H1>
      <P>Eerste paragraaf</P>
      Gewone tekst
      <P>Tweede paragraaf</P>
      </body>
      </html>

      Je kan stijldefinities insluiten in commentaar <!-- --> voor de browsers die het <STYLE> tag niet herkennen.

      Belangrijk: Wanneer je verschillende stijldefinities plaatst in een stijl, gebruik geen dubbele aanhalingstekens!

      Laat ook geen kommapunten weg! Als je één enkele kommapunt vergeet, zal de hele deinitie waardeloos zijn. Ook als je er een teveel plaatst.

      Terug naar begin
       

    3. Gebruik van Javascript

    4. Met Javascript kun je gebruik maken van het Javascript document object model. In dit model kun je aan een document, zoals een webpagina, denken aan een object met eigenschappen die je kan wijzigen.

      Elke eigenschap kan weer een object zijn met weer andere eigenschappen.

      Bijvoorbeeld:

      Het volgende voorbeeld verandert de kleureigenschap van de <H1> eigenschap.

      document.tags.H1.color = "red";

      De tags eigenschap geldt altijd voor het huidige document, dus mag je het woordje document hier weglaten.

      Het volgende voorbeeld geeft twee stijldefinities.

      De eerste specifieert de fontgrootte als 18 voor alle <P> elementen, en zet de marge op 20 voor alle <P> elementen.

      De tweede definitie zet de kleur op blauw voor alle <H1> elementen.

      <STYLE TYPE = "text/javascript">
      tags.P.fontSize = "18pt";
      tags.P.marginLeft = "20pt";
      tags.H1.color = "blue";
      </STYLE>

      Voor deze stijlbalden mag je geen commentaar <!-- --> gebruiken!

      Je kan ook gebruik maken van de syntax (tags.element) om een kortere schrijfwijze te bekomen:

      Stijldefinitie in javascript: Oef2.html

      Probeer een en ander uit in het volgende voorbeeld:

      <body>
      <STYLE TYPE = "text/javascript">
      tags.H1.color = "red";
      with (tags.P) {
      color="green";
      fontWeight="bold";
      fontStyle="italic";
      fontFamily="helvetica"; fontSize=20;
      }
      </STYLE>
      <H1>Onze nieuwe hoofding</H1>
      <P>Eerste paragraaf</P>
      Gewone tekst
      <P>Tweede paragraaf</P>
      </body>
      </html>

      Hieronder nog een voorbeeld om de smaak te pakken te krijgen.
       

      Stijldefinitie in CSS: Oef3.html

      <html>
      <head>
      <title>Oef1</title>
      </head>
      <body>
      <STYLE TYPE="text/css">
      P { textAlign:center;
      margin-left:20%; margin-right:20%;}
      H4 { text-decoration:underline; color: green;}
      H5 { text-transform:uppercase; color: red;
      border-width:4pt; border-style:outset;
      background-color:yellow; padding: 4pt;
      border-color:red;}
      BLOCKQUOTE {
      color:blue; font-style:italic;
      line-height:1.5; text-indent:10%;}
      </STYLE>
      <H4>Hoofding 4 onderlijnd</H4>
      <H5>Hoofding 5 </H5>
      <BLOCKQUOTE>
      This is a blockquote. It is usual for blockquotes to be indented, but the first line of this blockquote has an extra indent. Also the line height in this blockquote is bigger than you usually see in blockquotes.
      </BLOCKQUOTE>
      <P>This paragraph has a text alignment value of center. It also has
      large margins, so each line is not only centered but is also inset on both sides from the element that contains it, which in this case is the document.</P>
      </body>
      </html>
       
       

      Probeer ook eens in Javascript-syntax:

      Stijldefinitie in javascript: Oef3_js.html

      <html>
      <head>
      <title>Oef1</title>
      </head>
      <body>
      <STYLE TYPE="text/javascript">
      with (tags.P) {
      textAlign = "center";
      marginLeft="20%";
      marginRight="20%";}
      with (tags.H4) {
      textDecoration = "underline";
      textcolor = "green";
      textTransform = "uppercase";}
      with (tags.H5) {
      color = "red";
      borderWidth="4pt"; borderStyle="outset";
      backgroundColor="yellow"; paddings("4pt");
      borderColor="red";}
      with (tags.BLOCKQUOTE) {
      color="blue"; fontStyle="italic";
      lineHeight = 1.5; textIndent = "20pt";}
      </STYLE>
      <H4>Hoofding 4 onderlijnd</H4>
      <H5>Hoofding 5 met boord</H5>
      <BLOCKQUOTE>
      This is a blockquote. It is usual for blockquotes to be indented, ut the first line of this blockquote has an extra indent. Also the lie height in this blockquote is bigger than you usually see in blockquotes.
      </BLOCKQUOTE>
      <P>This paragraph has a text alignment value of center. It also has
      large margins, so each line is not only centered but is also inset on both sides from the element that contains it, which in this case is the document.</P>
      </body>
      </html>

      Terug naar begin
       

    5. Het overerven van stijlen

    6. Een HTML-element dat een ander element bevat, wordt aanzien als een parent element., en het het element dat het bevat is het child-element.

      In onderstaand voorbeeld is het <BODY> element de parent van het <H1> element, en <H1> is het parent-elemnet van de <EM> tag.

      <BODY>
      <H1>The headline <EM>is</EM> important!</H1>
      </BODY>

      In veel gevallen erven de child-elementen de eigenschappen van het parent-element. Stel dat we aan <H1> enkele stijleigenschappen toekennen: (Probeer uit!)

      <STYLE type="text/css">
      H1 {color:blue;}
      </STYLE>
      <BODY>
      <H1>The headline <EM>is</EM> important!</H1>

      In dit geval zal het child-element eveneens de kleur blauw aannemen.

      Nochtans, stel dat je eerst een stijl gedefinieerd had, waardoor <EM>-elementen rood zijn,

      Dan zou die kleur rood blijven, omdat eigenschappen van het child-element deze van de parent overschrijven (Eng. override).

      Voeg in de oefening de juiste script bij en controleer!

      Overerving begint op het hoogste niveau, dus de <HTML> tag, en daarnder de <BODY>tag.

      Om dus eigenschappen voor alle elementen van een webpagina te definiëren kan je een stijl definiëren voor het <BODY> element zoals hieonder, waarin dat we het ganse document in het groen willen weergeven:

      CSS Syntax

      <STYLE TYPE="text/css">
      BODY {color: green;}
      </STYLE>

      JavaScript Syntax

      <STYLE TYPE="text/javascript">
      tags.BODY.color="green";
      </STYLE>

      Opgelet: deze code moet nu in de <head>tag geplaatst worden, vooraleer de <BODY>tag wordt uitgevoerd! Probeer uit!
       

      Enkele eigenschappen worden niet overgeërfd van het parent-element, maar in de meeste gevallen is het resultaat hetzelfde alsof het werd overgeërfd.

      De achtergrondkleur wordt niet overgeërfd, maar deze is niettemin zichtbaar in het child-element, omdat dit doorzichtig is.

      Terug naar begin
       

    7. Stijlbladen definiëren in een extern bestand.

    8. Je kan stijlen definiëren in een apart bestand, en het daarna met je document verbinden. Hierdoor kun je één stijlblad gebruiken voor meerdere documenten door een link te leggen naar het juiste stijlblad.

      De syntax is dezelfde als voor het definiëren van stijlen in een document, maar je hoeft de <STYLE> </STYLE> tags niet te gebruiken.

      CSS Syntax

      /* external style sheet mystyles1.htm */
      all.BOLDBLUE {color:blue; font-weight: bold;}
      H1 {line-height: 18pt;}
      P {color: yellow;}
      /* end of file */

      JavaScript Syntax

      /* external style sheet mystyles1.htm */
      classes.BOLDBLUE.all.color = "blue";
      classes.BOLDBLUE.all.fontWeight = "bold";
      tags.H1.lineHeight="18pt";
      tags.P.color="yellow";
      /* end of file */

      Om deze stijldefinities in een webpagina te kunnen gebruiken moet de <LINK>tag worden gebruikt zoals hieronder:

      CSS Syntax:

      <HTML>
      <HEAD>
      <TITLE>A Good Title</TITLE>
      <LINK REL=STYLESHEET TYPE="text/css"
      HREF="http://style.com/mystyles1.htm">
      </HEAD>

      JavaScript Syntax:

      <HTML>
      <HEAD>
      <TITLE>A Good Title</TITLE>
      <LINK REL=STYLESHEET TYPE="text/javascript"
      HREF="http://style.com/mystyles1.htm">
      </HEAD>
       
       

      Voorbeeld van een extern stijlblad: Oef5.html

      Maak eerst een stijlblad aan met de naam Mijnstijl1.html als volgt:

      /* extern stijlbald Mijnstijl1.html */
      all.BOLDBLUE {color:blue; font-weight: bold;}
      H1 {line-height: 18pt;}
      P {color: red;}
      /* einde externe stijldefinitie */

      Gebruik dit in de volgende webpagina Oef5.html:

      <HTML>
      <HEAD>
      <TITLE>A Good Title</TITLE>
      <LINK REL=STYLESHEET TYPE="text/css"
      HREF="Mijnstijl1.html">
      </HEAD>
      <BODY>
      <H1 CLASS=BOLDBLUE>Hoofding</H1>
      <P>Dit is gedefinieerd met een extern stijlblad</P>
      </BODY>
      </HTML>
       
       

      Hierin zie je reeds een voorbeeld van het gebruik van classes (CLASS = BOLDBLUE). Dit wordt in het volgende hoofdstuk verder uitgelegd.

      Gebruik ook nog eens de javascript-syntax:

      /* external style sheet mystyles1.htm in javascript */
      classes.BOLDBLUE.all.color = "blue";
      classes.BOLDBLUE.all.fontWeight = "bold";
      tags.H1.lineHeight="18pt";
      tags.P.color="red";
      /* end of file */
       
       

      Wat moet er veranderen in Oef5.html?

      Terug naar begin
       

    9. Definiëren van stijlklassen

    10. Je kan een willekeurige stijldefinitie toepassen in bepaalde elementen door gebruik van de CLASS-attribuut in een HTML-tag. Dit is handig als je niet alle <H1> elementen dezelfde kleur wil geven bijvoorbeeld.

      Het volgende voorbeeld definieert een klasse GREENBOLD:

      CSS Syntax

      <STYLE TYPE="text/css">
      all.GREENBOLD {color:#44CC22; font-weight:bold;}
      </STYLE>

      JavaScript Syntax

      <STYLE TYPE="text/javascript">
      classes.GREENBOLD.all.color = "#44CC22"
      classes.GREENBOLD.all.fontWeight = "bold"
      </STYLE>

      Om deze in een webpagina te kunnen gebruiken voor de H1-tag, doe je dit als volgt in de webpagina:

      <H1 CLASS=GREENBOLD>This Heading Is Very Green</H1>
      <P CLASS = GREENBOLD>This paragraph uses the style class GREENBOLD. You can use the CLASS attribute to specify the style class to be used by an HTML element.</P>
      <BLOCKQUOTE CLASS = GREENBOLD>
      This blockquote uses the style class GREENBOLD.
      </BLOCKQUOTE>
       

      Voorbeeld definiëren van stijlklassen: Oef6.html

      <html>
      <head><title>Klassen</title>
      <STYLE type="text/javascript">
      classes.DARKYELLOW.all.color="#EECC00";
      classes.RED1.P.color = "red";
      classes.RED1.P.fontWeight = "bold";
      classes.RED1.BLOCKQUOTE.color = "red";
      classes.RED1.BLOCKQUOTE.fontWeight = "bold";
      </STYLE>
      <BODY>
      <P CLASS=red1>This paragraph is red.</H1>
      <P>This paragraph is in the default color, since it does not use the lass RED1.</P>
      <BLOCKQUOTE CLASS="red1">This blockquote uses the class RED1.
      </BLOCKQUOTE>
      <H5 CLASS=red1>This H5 element tried to use the style RED1, but was not allowed to use it.</H5>
      <P CLASS=darkyellow>This paragraph is dark yellow.
      <H5 CLASS=darkyellow>This H5 element tried to use the style DARKYELLOW and was succesful.</H5>
      </BODY>
      </HTML>

      Probeer ook eens in de javascript versie:

      <STYLE type="text/javascript">
      classes.DARKYELLOW.all.color="#EECC00";
      classes.RED1.P.color = "red";
      classes.RED1.P.fontWeight = "bold";
      classes.RED1.BLOCKQUOTE.color = "red";
      classes.RED1.BLOCKQUOTE.fontWeight = "bold";
      </STYLE>
       
       

      In de CLASS-definitie kun je het woordje all gebruiken om alle HTML deze eigenschap te geven, of de naam van het HTML-element dat de klasse zal gebruiken.

      Terug naar begin
       

    11. Benoemde individuele stijlen

    12. Je kan individuele stijlen gaan benoemen. Een HTML-element kan zowel een klasse als een individueel benoemde klasse gebruiken.

      Je kan dit gebruiken om stilistische uitzonderingen op een stijlklasse te definiëren.

      Je zou bijvoorbeeld de klasse MAIN kunnen aanpassen met een variant BLUE1 als volgt:

      Je kan ze ook gebruiken om layers te definiëren. Deze zijn precies gepositioneerd in de webpagina. Zie hiervoor hoofdstuk 2 voor meer bijzonderheden.

      In CSS-syntax laat je de naam van de stijl voorafgaan door een #-teken.

      In Javascript gebruik je het ids-symbool.

      Het volgende voorbeeld definieert de stijl STYLE1, met een lijnhoogte van 20, een lettergrootte van 18, vetjes, en rood. Er wordt ook een benoemde stijl BLUE1 gedefinieerd met een blauwe kleur:

      CSS Syntax

      <STYLE TYPE="text/css">
      all.STYLE1 {line-height: 20pt; font-size: 18pt;
      font-weight: bold; color: red;}
      #BLUE1 {color: blue;}
      </STYLE>

      JavaScript Syntax

      <STYLE TYPE="text/javascript">
      with (classes.STYLE1.all) {
      lineHeight = "20pt";
      fontSize = "18pt";
      fontWeight = "bold";
      all.color = "red";
      }
      ids.BLUE1.color = "blue";
      </STYLE>

      In je webpagina kun je dit als volgt gebruiken:

      <P CLASS="STYLE1" ID="BLUE1">Tekst… </P>

      Pas dit toe in onderstaand voorbeeld:

      Voorbeeld benoemde klassen: Oef7.html

      <HTML>
      <HEAD><title>Benoemde klassen</title>
      <STYLE TYPE="text/css">
      all.STYLE1 {line-height: 20pt; font-size: 18pt;
      font-weight: bold; color: red;}
      #BLUE1 {color: blue;}
      </STYLE>
      <HEAD>
      <BODY>
      <P CLASS="STYLE1">Hier zie je een grote rode tekst. Deze tekst is groter en vetter dan de normale paragraaftekst. </P>
      <P CLASS="STYLE1" ID="BLUE1">Deze tekst is eveneens groter en vetter. Maar alhoewel deze tekst ook in de klasse STYLE1 is, is de tekstkleur blauw, omdat er uniek ID wordt gebruikt. </P>
      </BODY>
      </HTML>

      Verander de code ook eens in de javascript-versie!

      Terug naar begin
       

    13. Selectiecriteria gebruiken

    14. Als je nog meer controle wil verkrijgen kun je selectiecriteria gaan gebruiken, om deze stijl selectief op een element toe te passen.

      Zo zou je bv willen dat alleen alle EM-elementen in een H1-element groen worden. Dit doe je als volgt.

      In CSS-syntax gebruik je een gekruld haakje {}, in Javascript gebruik je de methode contextual().

      CSS Syntax

      <STYLE TYPE="text/css">
      H1 EM {color:green;}
      </STYLE>

      JavaScript Syntax

      <STYLE TYPE="text/javascript">
      contextual(tags.H1, tags.EM).color = "green";
      </STYLE>

      In je webpagina gebruik je dit als volgt:

      <H1>Dit is<EM> groene, vette tekst,</EM> maar dit is gewoon hoofdingtekst</H1>
       

      Voorbeeld van selectiecriteria: Oef8.html

      <html>
      <HEAD><title>Benoemde klassen</title>
      <STYLE TYPE="text/css">
      all.MAGENTACLASS {color: magenta;}
      DIV P.MAGENTACLASS {font-style: italic;}
      DIV P.MAGENTACLASS B {font-size:18pt;}
      </STYLE>
      <HEAD>

      <BODY>
      <DIV CLASS=MAGENTACLASS>
      <H3 CLASS=MAGENTACLASS>Hoofding 3 in de MAGENTA-klasse</H3>
      <P CLASS=MAGENTACLASS>Is dit magenta en cursief? Het zou moeten.
      Hier komt <B>grote vette tekst.</B> We hebben dit bereikt met contextuele selectie.</P>
      <P CLASS=MAGENTACLASS>Dit is ook magenta.</P>
      </DIV>
      <P CLASS=MAGENTACLASS>Deze paragraaf is ook magenta,
      maar omdat hij zich niet bevindt binnen de DIV-blok
      mag hij niet cursief zijn.</P>
      </BODY>
      </HTML>

      Hier nog een ander voorbeeld, eerst in CSS-syntax, daarna in Javascript-syntax:

      UL UL LI {color:blue;}

      contextual(tags.UL, tags.UL, tags.LI).color = "blue";

      Hier krijgen alleen de elemente van een lijst <LI> met tenminste twee parent tags <UL> de kleur blauw.

      Terug naar begin
       

    15. Stijlen voor een individueel element

    16. Je kan het STYLE attribuut gebruiken voor een enkel element uit de webpagina.

      Voorbeeld van een stijl voor een individueel element: Oef9.html (CSS)

      <HTML>
      <HEAD><TITLE>Stijl voor een individueel element</TITLE>
      </HEAD>
      <BODY>
      <P STYLE="color:green;font-weight:bold;
      margin-right:20%; margin-left:20%;">
      Deze paragraaf (en alleen deze) is vetjes, groen en grote marges.
      </P>
      <P>Deze paragraaf is in de gewone kleur, maar dit
      <SPAN STYLE="color:red; font-style:italic;">woord </span> is verschillend van de andere woorden in deze paragraaf.</P>
      </BODY>
      </HTML>

      Terug naar begin
       

    17. Combineren van Stijlbladen
Je kan meer dan één stijlblad gebruiken in je webpagina. Je kan zelfs CSS- en Javascriptnotatie door elkaar gebruiken, zoals in onderstaand voorbeeld:

<STYLE TYPE="text/css" SRC="http://www.networksunlimited.org/styles/corporate">
</STYLE>

<STYLE TYPE="text/css"
SRC="styles/whitepaper">
</STYLE>

<STYLE TYPE="text/javascript"
SRC="styles/networkthings">
</STYLE>

<STYLE TYPE="text/css">
H1 {color: red;} /* override external sheets */
</STYLE>

Voor externe gelinkte stijlbladen, heeft het laatste de voorrang op een voorgaand stijlblad.
 

Voorbeeld combineren van stijlen: Oef10.html

<HTML>
<HEAD><TITLE>Combineren van stijlbladen</TITLE>
<STYLE TYPE="text/css">
P {color:blue;}
B {color:green;}
</STYLE>
</HEAD>
<BODY>
<P>Dit is een blauwe paragraaf zoals bepaald in het stijlblad. Maar deze <B>vette woorden zijn groen,</B> zoals je ziet.</P>
<P STYLE="color:red">Dit is een rode paragraaf, zoals bepaald in de lokale stijl. Maar, deze <B>vette woorden zijn nog altijd groen,</B> omdat de direct gedefinieerde stijl voor vet voorrang heeft op de stijl van het parent-element.</P>
</BODY>
</HTML>
 

Probeer ook eens de Javascript-syntax:

<STYLE TYPE="text/javascript">
tags.P.color="blue";
tags.B.color="green";
</STYLE>

Terug naar begin

  1. Gebruik van layers

  2. Netscape 4 geeft de mogelijkheid om precies te bepalen waar je een blok in een HTML-pagina wil plaatsen. Deze blokken kunnen overlappen, en zijn doorzichtig of niet..

    Je kan Javascriptcode schrijven om deze blokken te wijzigen. Deze blokken worden layers genoemd. Met javascript kan je ze verplaatsen, verbergen, vergroten of verkleinen, de orde bepalen waarin ze overlappen, en andere eigenschappen veranderen zoals de achtergrondkleur, de achtergrondfiguur.

    Je kunt niet alleen de inhoud veranderen maar ook kan je nieuwe layers creëren in runtime.

    Je kan dus dynamische animaties ontwerpen op een webpagina en zichzelfwijzigende webpagina’s ontwerpen! Je kan layers over elkaar leggen, en ze dan één voor één "afpellen" zodat de onderliggende zichtbaar wordt.

    Layers kunnen in layers genest worden.

    Terug naar begin
     

    1. Inleiding

    2. In dit hoofdstuk wordt het principe uitgelegd om blokken te positioneren in een HTML-pagina.
      Dit kan door het gebruik van stijlen, of door het gebruik van de <LAYER>tag. We zullen van elk voorbeelden geven.
       
       

    3. Positioneren door het gebruik van stijlen

    4. CSS-syntax is in verschillende browsers geïmplementeerd, maar de <LAYER>tag is niet door alle niet-Netscape browsers gekend.

      De positie kan absoluut of relatief worden aangeduid. Je kan ook de top- en left-eigenschappen gebruiken.
       

      Eerste voorbeeld met layers: Oef21.html

      <HTML>
      <HEAD><TITLE>Gebruik van layers: Oef21</TITLE>
      </HEAD>
      <BODY BGCOLOR=white>
      <DIV STYLE="position:absolute; top:170px; left:250px;
      border-width:1px; border-color:white;
      background-color:#6666FF">
      <H1>Layer 3 </H1>
      <P>This is a blue block of HTML content.</P>
      </DIV>
      </BODY>
      </HTML>


      En hierna volgt een iets ingewikkelder voorbeeld Oef22.html zoals hierboven afgebeeld.

      In dit voorbeeld worden twee layers gebruiktgebruikt. De layer, layer1 genaamd, is geplaatst op 20 pixels van de top en op 5 pixels van de linkerrand. De Andere layer, layer2 genaamd, is geplaatst op 60 pixels van de top, en op 250 pixels vanaf de linkerrand
       

      Voorbeeld gebruik van layers: Oef22.html

      <HTML>
      <HEAD><TITLE>Gebruik van layers: Oef22</TITLE>
      <STYLE TYPE="text/css">
      <!--
      #layer1 {position:absolute;
      top:20px; left:5px;
      background-color:#CC00EE;
      border-width:1; border-color:#CC00EE;
      width:200px; }
      #layer2 {position:absolute;
      top:60px; left:250px;
      background-color:teal;
      width:200px;
      border-width:2px; border-color:white; }
      -->
      </STYLE>
      </HEAD>

      <BODY BGCOLOR=white>
      <DIV ID=layer1>
      <H1>Layer 1</H1>
      <P>Lots of content for this layer.</P>
      <IMG SRC="violets.jpg" align=right>
      <P>Content for layer 1.</P>
      <P>More Content for layer 1.</P>
      </DIV>
      <P ID=layer2>Layer 2</P>
      </BODY>
      </HTML>

      Om meerdere elementen in een layer te plaatsen maken we gebruik van DIV of SPAN.

      Terug naar begin
       

    5. Positionering met de <LAYER>tag

    6. De <LAYER> kan alleen in Netscape worden gebruikt, en moet niet op voorhand gedefinieerd worden zoals een stijl.

      Voorbeeld met <LAYER> tag: Oef23.html

      <HTML>
      <HEAD><TITLE>Gebruik van layers: Oef23.html</TITLE>
      </HEAD>
      <BODY BGCOLOR=white>
      <!-- default units for TOP, LEFT, and WIDTH is pixels -->
      <LAYER ID=layer1 TOP=20pt LEFT=5pt
      BGCOLOR="#CC00EE" WIDTH=200>
      <H1>Layer 1</H1>
      <P>Lots of content for this layer.</P>
      <IMG SRC=violets.jpg align=right>
      <P>Content for layer 1.</P>
      <P>More Content for layer 1.</P>
      </LAYER>
      <LAYER ID=layer2 TOP=60 LEFT=250 BGCOLOR=teal WIDTH=200>
      <P>Layer 2</P>
      </LAYER>
      <LAYER ID=layer3 TOP=170 LEFT=250 BGCOLOR="#6666FF">
      <H1>Layer 3</H1>
      <P>This is a blue block of HTML content.</P>
      </LAYER>
      </BODY>
      </HTML>

      Dit geeft het volgende resultaat:

       
       

      Je kan stijlen en layers combineren, zoals in onderstaand voorbeeld:

      Stijlen en layers gecombineerd: Oef24.html

      <HTML>
      <HEAD><TITLE>Stijlbladen en layers gecombineerd: Oef24.html</TITLE>
      </HEAD>
      <BODY BGCOLOR=white>
      <STYLE TYPE="text/css">
      <!--
      all.style4 {
      color:magenta;
      border-width:20px; border-color:cyan;
      border-style:ridge;
      padding:5%; }
      -->
      </STYLE>
      <LAYER ID=layer4 TOP=30 LEFT=100 BGCOLOR=yellow CLASS=style4>
      <H1>Layer 4 </H1>
      <P>I am a very colorful layer.</P>
      </LAYER>
      </BODY>
      </HTML>
       

      Je kan de <LAYER>-tag gebruiken samen met stijlen om layers met ingebouwde stijl te ontwerpen. De volgende code schept een kleurrijke layer.

      Met onderstaand resultaat:

      Terug naar begin
       

    7. Absolute of relatieve positionering

    8. Absolute Positie

      Je kan een layer absoluut plaatsen door het top- en left-argument.
      Met de layer-tag:

      <LAYER ID=layer1 TOP=200 LEFT=260>
      <P>Layer 1 content goes here</P>
      </LAYER>

      Of als style sheet definieer je de absolute positie:

      <STYLE type="text/css">
      <!--
      #layer1 {position:absolute; top:200px; left:260px;}
      -->
      </STYLE>

      Relatieve Positie

      Zo’n layer heet een inflow-layer. Hij wordt geplaatst waar hij natuurlijkerwijze voorkomt in het document.
      Je kan de top en left-argumenten gebruiken om een offset aan te duiden t.o.v. de huidige positie.
      Om zo’n layer te definiëren kan je de <ILAYER> </ILAYER>tags gebruiken. Als je de layer als stijl definieert, geef je de positie op als relatief.

      Met de <ILAYER>tag:

      <ILAYER ID=layer2>
      <P>Layer 2 content goes here</P>
      </ILAYER>

      Als een stijl:

      <STYLE type="text/css">
      <!--
      #layer2 {position:relative; }
      -->
      </STYLE>

      Terug naar begin
       

    9. Attributen en eigenschappen
In dit hoofdstuk worden kort alle eigenschappen van leyers opgesomd: POSITION
#block1 {position:absolute;}
#block2 {position:relative;}

Wordt alleen gebruikt wanneer layers als stijlen worden gedefinieerd.

ID
<LAYER ID=block1>
#block1 {position:absolute;} /* CSS */

Is een soort naam voor de layer. Deze moet beginnen met een alfabetisch karakter. Je kan dit gebruiken om naar de layer te refereren vanuit HTML of Javascript.

Dit attribuut is optioneel. Normaal hebben layers geen naam, geen id.

LEFT and TOP
Geeft de horizontale en verticale positie van de layer aan. De waarde is steeds integer. Het is de plaats van de linkerbovenhoek van de layer.

In <LAYER> tag syntax :

<LAYER BGCOLOR="yellow" TOP=300 LEFT =70
WIDTH=400 HEIGHT=200>
<P>Paragraph in layer with absolute position.</P>
<LAYER BGCOLOR=teal TOP=50 LEFT=20
WIDTH=200 HEIGHT=100>
<P>Paragraph in embedded layer with absolute position</P>
</LAYER>
</LAYER>
 

In CSS syntax :

<DIV STYLE="position:absolute; background-color:yellow;
top:300px; left:70px; width:200px; height:200px;
border-width:1;">
<P>Paragraph in layer with absolute position.</P>
<DIV STYLE="position:absolute; background-color:teal;
top:30px; left:20px; width:150px; height:120px;
border-width:1px;">
<P>Paragraph in an embedded layer with absolute positionering.</P>
</DIV>
</DIV>
 
 

Voorbeeld van layers met relatieve positie:

Met <LAYER> tag syntax :

<P>Paragraph above relatively positioned layer.</P>
<P><ILAYER LEFT=2>
This relatively positioned layer is displaced 2 pixels to the right of
its normal position.
</ILAYER></P>
<P>Paragraph below relatively positioned layer</P>
<P>This <ILAYER TOP=3>word</ILAYER> is nudged down 3 pixels.</P>
 

In CSS syntax:

<P>Paragraph above relatively positioned layer.</P>
<P STYLE="position:relative; left:2px;">
This relatively positioned layer is displaced 2 pixels to the right of
its normal position.</P>
<P>Paragraph below relatively positioned layer.</P>
<P>This <SPAN STYLE="position:relative; top:3px;>word </SPAN> is nudged
down 3 pixels.</P>

Nog een voorbeeld van relatieve positionering gedefinieerd als stijlen:

Voorbeeld van relatieve positionering: Oef25.html

<HTML>
<HEAD><TITLE>Stijlbladen en layers gecombineerd: Oef25.html</TITLE>
<STYLE TYPE="text/css">
<!--
all.UP {position:relative; top:-7pt;}
all.DOWN {position:relative; top:7pt;}
-->
</STYLE>
</HEAD>
<BODY>
<P>This <SPAN CLASS=DOWN>text </SPAN>goes
<SPAN CLASS=UP>up</SPAN>
and
<SPAN CLASS=DOWN>down, </SPAN>
up
<SPAN CLASS=DOWN>and
<SPAN CLASS=DOWN>down.</SPAN></SPAN>
</P>
</BODY>
</HTML>
 

Met onderstaand resultaat:

Terug naar begin

    1. Gebruik van Javascript

    2. Onderstaande code gebruikt javascript om de kleur van een layer te veranderen als de muis erover komt.

      Met <LAYER>tag:

      <LAYER ID="layer1" BGCOLOR="red"
      onMouseOver='changeColor("blue");'
      onMouseOut='changeColor("red");'>
      <P>Layer content...</P>
      <SCRIPT>
      function changeColor(newcol) {
      bgColor=newcol; // Modifies the layer object's bgColor property
      return false;
      }
      </SCRIPT>
      </LAYER>

      In CSS syntax:

      <DIV STYLE="position:absolute; layer-background-color:red;
      width:200px; height:100px">

      <P>Layer content...</P>

      <SCRIPT>
      function onMouseOver() {changeColor("blue");}
      function onMouseOut() {changeColor("red");}
      function changeColor(newcol) {
      bgColor=newcol;
      return false;
      }
      </SCRIPT>
      </DIV>
       
       

      PAGEX and PAGEY
      <LAYER PAGEX=100 PAGEY=100>

      Worden alleen gebruikt met de <LAYER> tag en slaan op de positie t.o.v. het omsluitend document, en niet op de omsluitende layer.
       

      SRC and source-include
      <LAYER SRC="htmlsource/meals/special.htm>

      source-include:url("htmlsource/meals/special.htm"); /* CSS */

      Specifiëren een extern bestand met geformatteerde tekst.
       

      WIDTH
      <LAYER WIDTH=200>
      <LAYER WIDTH="80%">

      width:200px; /* CSS */

      width:80%; /* CSS */

      Geeft de breedte van de layer aan.

      HEIGHT
      <LAYER HEIGHT=200>>
      <LAYER HEIGHT = "50%">

      height:200px; /* CSS */

      height:50%; /* CSS

      Geef de hoogte van de layer aan.

      CLIP
      <LAYER CLIP="20,20,50,100">
      clip:rect(0,100,100,0); /* CSS */

      Geeft de grenzen aan van het zichtbaar gebied van een layer als volgt: left, top, right en bottom waarde.

      Je kan ook slechts twee getallen opgeven. Left en TOP zijn dan nul:

      CLIP="10,20" is dus equivalent met CLIP="0,0,10,20"

      Z-INDEX, ABOVE and BELOW
      <LAYER Z-INDEX=3>
      <LAYER ABOVE=layer1>
      <LAYER BELOW=greenlayer>
      z-index:3; /* css */

      ABOVE en BELOW kunnen alleen worden gebruikt in combinatie met de <LAYER>tag.

      Geeft de volgorde van de layers aan (Eng. stacking order)

      Een hoger nummer legt de layer boven een met een lager nummer.

      Alleen positieve getallen zijn toegelaten.

      Above betekent dat de nieuwe layer geschapen wordt bovenop de bestaande layer.

      VISIBILITY
      <LAYER VISIBILITY=SHOW>
      <LAYER VISIBILITY=HIDE>
      <LAYER VISIBILITY=INHERIT>
      visibility:show; /* css */
      visibility:hide; /* css */
      visibility:inherit; /* css */

      Bepaalt of een layer zichtbaar is of niet. SHOW toont de layer, INHERIT maakt dat de layer dezelfdezichtbaarheid heeft als zijn parent-layer.
       
       

      BGCOLOR and BACKGROUND-COLOR
      <LAYER BGCOLOR="#00FF00">
      <LAYER BGCOLOR="green">
      background-color:green;
      background-color:00FF00;

      Zet de achtergrondkleur van de layer. De defaultwaarde is transparant.

      BACKGROUND and BACKGROUND-IMAGE
      <LAYER BACKGROUND="images/dogbg.gif">
      background-image:url("images/dogbg.gif"); /* CSS */

      Geven een figuur aan als achtergrond van de layer.

      OnMouseOver, OnMouseOut
      Kan alleen met de <LAYER>ag worden gebruikt.

      <LAYER OnMouseOver="highlight(); return false;">
      <LAYER OnMouseOut="dehighlight(); return false;">

      OnFocus, OnBlur
      Kunnen alleen met de <LAYER> tag worden gebruikt.

      <LAYER OnFocus="function1(); return false;">
      <LAYER OnBlur="function2(); return false;">

      OnLoad
      Kunnen alleen met de <LAYER> tag worden gebruikt.

      OnLoad="dosomething(); return false;"
       

      De <NOLAYER> Tag
      Geeft de plaats voor een alternatieve inhoud van de pagina als de browser geen layers begrijpt.

      Voorbeeld:

      <LAYER SRC=layerContent.html></LAYER>
      <NOLAYER>
      This page would show some really cool things if you had
      a browser that can position content.
      </NOLAYER>

      Terug naar begin
       

    3. Layer methoden
    4. Naam
      Beschrijving
      moveBy(dx, dy)  Beweegt de layer naar links over een afstand van dx pixels, en naar beneden met dy pixels vanaf de huidige positie.
      moveTo(x, y) Verandert de positie van layers met een absolute positie naar de nieuwe positie. Voor layers met een relatieve positie wordt de layer verplaatst t.o.v. de natuurlijke positie van deze layer
      moveToAbsolute(x, y) Verandert de layerpositie naar de nieuwe coördinaten t.o.v. de pagina, i.p.v. de layer. Is equivalent met het zetten van de pageX en pageY parameters.
      resizeBy(dwidth, dheight) Verandert de grootte van de layer. Heeft hetzelfde effect als het toevoegen van dwidth en dheight aan clip.width en clip.height.
      resizeTo(width, height) Verandert de grootte van de layer naar de aangeduide hoogte en breedte in pixels.
      moveAbove(layer) Plaatst de layer boven de gespecifieerde layer. De waarde moet een geldig layer-object zijn.
      moveBelow(layer) Plaatst de layer onder de gespecifieerde layer. De waarde moet een geldig layer-object zijn.
      load(sourcestring, width) Verander de bron van de layer, samen met de breedte waarover de tekst wordt afgebroken.

      Terug naar begin
       

    5. Gebruik, van een gelocaliseerd javascript.

    6. Met de <SCRIPT></SCRIPT>tags kun je in een gepoistioneerd blok gebruiken, niet erbuiten.

      Dit is handig om eventhandlers voor een layer te definiëren. Onderstaand script vernadert de kleur van een layer als je er met de muis over gaat:

      In <LAYER> tag syntax :

      <LAYER ID="layer1" BGCOLOR="red"
      onMouseOver='changeColor("blue");'
      onMouseOut='changeColor("red");'>
      <P>Layer content...</P>
      <SCRIPT>
      function changeColor(newcol) {
      bgColor=newcol; // Modifies the layer object's bgColor property
      return false;
      }
      </SCRIPT>
      </LAYER>

      In CSS syntax:

      <DIV STYLE="position:absolute; layer-background-color:red;
      width:200px; height:100px">
      <P>Layer content...</P>
      <SCRIPT>
      function onMouseOver() {changeColor("blue");}
      function onMouseOut() {changeColor("red");}
      function changeColor(newcol) {
      bgColor=newcol;
      return false;
      }
      </SCRIPT>
      </DIV>

      Voorbeeld Oef25.html: verander achtergrondkleur met onMouseOver

      <HTML>
      <HEAD><TITLE>Oef25.html</TITLE>
      </HEAD>
      <BODY>
      <LAYER ID="layer1" BGCOLOR="red"
      onMouseOver='changeColor("blue");'
      onMouseOut='changeColor("red");'>
      <P>Tekst in de layer...</P>
      <SCRIPT>
      function changeColor(newcol) {
      bgColor=newcol; // Modifies the layer object's bgColor property
      return false;
      }
      </SCRIPT>
      </LAYER>
      </BODY>
      </HTML>
       
       

      Probeer ook eens uit met CSS syntax.

      Terug naar begin
       

    7. Animatie
Je kan interessante animaties maken door de bron van een figuur te wijzigen, samen met de beweging van de figuur. Om een figuur te bewegen kan je de layer verplaatsen. Om de bron van een figuur te wijzigen kun je een nieuwe waarde toekennen aan de SRC-eigenschap van de figuur.

Als de figuur te snel wordt veranderd kan het zijn dat ze niet snel genoeg wordt gedownload,

Over het net om in de pas te blijven met de animatie. Daarom is het best dat je er voor zorgt dat de figuur volledig gedownload is voor je er iets mee doet.

Gebruik van Onload Handlers

Als een document volledig ingeladen is, wordt de onLoad handler aangeropen.

Je kan deze onLoad handler definiëren voor de <BODY> tag van een pagina met figuren.

Deze wordt geactiveerd als alle figuren gedownload zijn.

Layers kunnen ook onLoad handlers hebben. Maar als deze figuren bevatten worden deze asynchroon geladen met de rest van de inhoud, en kan dus activeren voor alle figuren werden ingeladen.

Voorbeeld: de zwemmende vis fish1.html

Het positioneren van de vis en de palen.

Dit voorbeeld illustreert hoe je positie van een layer kan veranderen en laten bewegen.


Een vis (animated GIFbestand) en drie palen verschijnen in de layer. Als de gebruiker op de knop "Move the Fish" klikt zwemt de vis heen en weer tussen de palen door. Hij zwemt vóór de eerste paal en achter de tweede paal. De stackvolgorde moet dus veranderd worden.

Achtereenvolgens worden besproken:

Het definiëren van de onLoad handler voor het <BODY>element.

De pagina heeft een form die eerst verborgen is en die de vis doet zwemmen. De pagina heeft een onLoad handler die de form zichtbaar maakt. Dit zorgt ervoor dat de vis niet kan beginnen zwemmen vooraleer hij volledig is ingeladen.

Het nodige statement is:

<BODY BGCOLOR="#FFFFFF" ONLOAD="showForm();">

Positioneren van vis en palen

Hieronder is de code die de drie palen creëert:

<HTML>
<HEAD>
<TITLE>Swimming Fish</TITLE>
</HEAD>
<BODY>
<LAYER ID="bluepole"LEFT=160 TOP=150>
<IMG SRC=bluepole.gif>
</LAYER>
<LAYER ID="greenpole" LEFT=360 TOP=150>
<IMG SRC=greenpole.gif>
</LAYER>

De code voor de vis:

<LAYER ID="fish" LEFT=40 TOP=170 above="redpole"
ONLOAD="showForm();">
<IMG ALIGN=RIGHT SRC=images1.gif >
</LAYER>

Dan de definitie voor de rode paal.

<LAYER ID="redpole" LEFT=260 TOP=150>
<IMG SRC=redpole.gif>
</LAYER>

Elke layer wordt (bij default) bovenop de voorgande geplaatst. De blauwe paal is dus "beneden", daarboven de groene paal, dan de vis en daarboven de rode paal.

Definiëren van de form

De layer met de form is eerst hidden. Deze form bevat een knop waardoor de vis gaat zwemmen als er op geklikt wordt.

<ILAYER ID=formlayer VISIBILITY=HIDE>
<H1>Fish Example 1</H1>
<FORM>
<INPUT type=button value="Move the fish"
OnClick="movefish(); return false;">
</FORM>
</ILAYER>

Er is ook een tijdelijke form die een boodschap toont zolang de vis wordt ingeladen:

<LAYER ID=waiting TOP=100 LEFT=50>
<H3>Please wait while the fish loads...</H3>
</LAYER>

De vis laten bewegen

Dit gebeurt in een script met de definities voor de functies moveFish() en showForm().

Hieronder de functie showForm():

<SCRIPT>
function showForm() {
document.waiting.visibility="hide";
document.formlayer.visibility="show";
return false;
}

De functie moveFish()

<!-- Simple move function -->
function movefish() {
var fish = document.fish;
if (fish.left < 400) {
fish.moveBy(5, 0);}
else {
fish.left = 10;}
// use the windows method setTimeOut
setTimeout(movefish, 10);
}
</SCRIPT>

De functie verbindt de variabele fish met de layer genaamd fish. Als de horizontale locatie

kleiner is dan 400, wordt de vis 10 pixels opgeschoven met de moveBy() methode. Als de locatie groter is dan 400, wordt de plaats terug op 10 gezet.

De functie wacht dan 10msec. En roept dan opnieuw moveFish() (dus zichzelf) aan.

Hieronder de volledige code voor dit zwemmende vis voorbeeld:

<HTML>
<HEAD>
<TITLE>Swimming Fish</TITLE>
</HEAD>
<SCRIPT>
function showForm() {
document.waiting.visibility="hide";
document.formlayer.visibility="show";
return false; }
<!-- Simple move function -->
function movefish() {
var fish = document.fish;
if (fish.left < 400) {
fish.offset(5, 0);}
else {fish.left = 10;}
setTimeout("movefish()", 10);
return; }
</SCRIPT>

<BODY BGCOLOR="#FFFFFF" ONLOAD="showForm();">

<LAYER NAME="bluepole" LEFT=160 TOP=150>
<IMG SRC=bluepole.gif>
</LAYER>

<LAYER NAME="greenpole" LEFT=360 TOP=150>
<IMG SRC=greenpol.gif>
</LAYER>

<LAYER NAME="redpole" LEFT=260 TOP=150>
<IMG SRC=redpole.gif>
</LAYER>

<LAYER NAME="fish" LEFT=40 TOP=170 ABOVE="redpole">
<IMG SRC=fish1.gif >
</LAYER>

<H1>Fish Example 1</H1>

<ILAYER ID=formlayer VISIBILITY=HIDE>
<FORM>
<INPUT type=button value="Move the fish"
OnClick="movefish(); return false;">
</FORM>
</LAYER>

<LAYER ID=waiting TOP=100 LEFT=50>
<H3>Please wait while the fish loads...</H3>
</LAYER>

</BODY>
</HTML>

Terug naar begin