I. Inleiding tot stijlen in HTML *
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.
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:
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>
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.
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>
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.
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?
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.
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!
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.
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>
<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>
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.
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.
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.
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:
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>
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:
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>
|
|
|
| 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. |
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.
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:
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>