Hoi stykurgh,
Even diep ademhalen... :d
dat zet hij er wel automatisch boven.
Prachtig, die Dreamweaver! - Ik maak 'm nu trouwens met
Notepad++ (= veredeld Kladblok), dus voor DW rechtstreeks in de code-weergave in te plakken.
Als ik de opdrachtbon-tekening bekijk, moeten we er nu een <header> inzetten, die bestaat uit het menu (rechtsboven) en het logo (aan de linkerkant).
- Attentie: wederom doen we alles in deze ene pagina, later kan van de header-met-menu-en-logo een php-fragment gemaakt worden, dat automatisch op elke pagina opgeroepen wordt. Eerst maar eens alles op de goede plek krijgen.

welk bestand moet dit eigenlijk worden? gewoon de home pagina?
Lijkt me een prima idee. Je kunt 'm alvast
index.php noemen, dan kunnen er later php-fragmenten in geplaatst worden zonder dat er verder iets aan hoeft te veranderen.
In je menu-bestand stond:
En in je pagina-bestand:
Die gaan we nu samenvoegen. Als we het menu in de #header-div zetten, hoeft er geen aparte <div id="menu"> omheen. De #wrapper waren we al kwijt. Dan krijgen we als structuur:
Code:
<body>
<div id="header">
<ul id="navmenu">
<li><a href="index.php" class="home">home</a></li>
<li><a href="about.php" class="about">about</a></li>
<li><a href="links.php" class="links">links</a></li>
<li><a href="news.php" class="news">news</a></li>
</ul>
<p>(rest van de header)</p>
<div class="clearB"><!-- nodig voor IE6 --></div>
</div>
<div id="content">
<p>(content)</p>
</div>
<div id="footer">
<p>(footer)</p>
</div>
</body>
Dat levert:
Opmerkingen hierbij:
- In het menu moet elke link binnen een eigen list-item <li>...</li> geplaatst worden (niet alle links achter elkaar in één groot <li>).
- De achtergronden komen later, eerst zetten we gewone links in het menu.
- Voor IE6 is een extra <div> in de #header nodig met {clear: both;}, om de #content goed onder de #header te krijgen. Voor de rest kan dit geen kwaad.
- Bij bekijken in IE6 en IE7 (IE8 niet getest) zien we meteen dat er verschil is met de andere "echte browsers": Firefox, Opera, Chrome, Safari. In Internet Explorer zijn de bullets van de menu-items verdwenen, en is er geen verticale afstand binnen de header.
Maar daar gaan we iets aan doen, want nu komt het leukere werk: stylen!
Er zijn geen bullets nodig: dus {list-style: none;}.
Alle browsers op één lijn brengen met {margin: 0;} en {padding: 0;} voor zowel de <ul> als de <li>'s.
Nu kunnen de list items c.q. links hun breedte krijgen van elk 110px of iets anders (dan de totale breedte van de #menu <ul> aan te passen), en hun vereiste hoogte voor de achtergrond-afbeelding die er nog in moet.
Hiermee krijgen we:
Code:
#navmenu {
float:right;
width: 440px;
border: 1px dotted red; /* tijdelijk */
margin: 0;
padding: 0;
list-style: none;
}
#navmenu li {
float: left;
width: 110px;
margin: 0;
padding: 0;
}
#navmenu a {
width: 110px;
height: 50px;
display: block; /* hoveren over gehele oppervlak */
}
En op het scherm wordt dat:
Na het in elkaar lijmen van een gecombineerde figuur voor de menu-afbeeldingen (zowel de knoppen naast elkaar, waarvan er dankzij de css background-position steeds maar 1 te zien is; als de hover-status eronder, ook met de bg-position geregeld) ...
... kunnen de bijbehorende achtergrond-posities aan de verschillende links gegeven worden:
Code:
#navmenu a {
width: 110px;
height: 50px;
display: block; /* hoveren over gehele oppervlak */
background: url(images/stykurgh-menu-bg.png);
}
#navmenu a.about { background-position: -110px 0; }
#navmenu a.links { background-position: -220px 0; }
#navmenu a.news { background-position: -330px 0; }
#navmenu a.home:hover,
#navmenu a.home:focus { background-position: 0 -50px; }
#navmenu a.about:hover,
#navmenu a.about:focus { background-position: -110px -50px; }
#navmenu a.links:hover,
#navmenu a.links:focus { background-position: -220px -50px; }
#navmenu a.news:hover,
#navmenu a.news:focus { background-position: -330px -50px; }
De "focus" is er telkens bijgezet om mensen die geen muis gebruiken, maar met de tab-toets van link naar link springen, óók te laten zien waar ze zitten.
Met als resultaat:
Nu kan de rest van de header er in gezet worden, bijvoorbeeld...:
... waarmee de header klaar is voor algemeen gebruik op alle pagina's.
Tenminste als alles goed door de browser-tests komt, en als alles valid html en valid css is.
Dat hadden we natuurlijk al systematisch bij elke tussenstap gecheckt.
De hele <div id="header"> t/m zijn eindpunt </div> kan nu uit de pagina geknipt worden, ingeplakt worden in een compleet leeg document (geen html-pagina met <head>, <body> enz.; gewoon alleen het uitgeknipte fragment), en in een aangemaakt mapje "includes" opgeborgen worden.
Alhier:
Bij bekijken: dat ziet er dus niet uit!

Niets van het mooie menu te zien. Maar dat kan kloppen, want de css-stijlen (met de bronnen voor de achtergrond-images) staan niet in dit fragment. Niets van het logo te zien: klopt ook, dat staat niet in een map "images" van de map "includes".
Maar met "Beeld > bekijk broncode" in de browser kan je zien dat het fragment wel de complete html-code voor de header bevat. En daar was het om te doen.
Nu kunnen we op de pagina zelf op de plaats van de weggeknipte header de verwijzing gaan zetten, en we houden qua body een prettig kale pagina over:
Code:
<body>
<?php include("includes/stykurgh-header.php"); ?>
<div id="content">
<p>(content)</p>
</div>
<div id="footer">
<p>(footer)</p>
</div>
</body>
Zie hier:
Hm, dat is wel heel erg kaal: de header is er helemaal niet!

Inderdaad, dat komt omdat dit nog een
.htm pagina is. Door de pagina te vernoemen tot
.php pagina wordt de php (het "pre-processen") op de server in werking gezet:
Wie nu via de browser in de broncode van de pagina gaat kijken, ziet niet meer de <?php ... ?> verwijzing, maar de door de server ingeplakte header-div: alsof die nooit weggeweest is!
Blijft over: ook de css wegknippen, in een stylesheet zetten, en dat koppelen aan elke pagina.
Zo geloof ik dat we wel rond zijn met de grote lijn.
(... en nu kun je weer uitademen)
Succes!
Met vriendelijke groet,
CSShunter