Teksten en afbeeldingen bewegen niet mee

Status
Niet open voor verdere reacties.

sanderisbestok

Gebruiker
Lid geworden
3 jan 2009
Berichten
240
Hallo allemaal,

ik ben een site voor mijn moeder aan het maken, en hij is inprincipe nu af.
Alleen heb ik nog 1 groot probleem. Als ik de grote van mijn browser aanpas door vanuit rechts in de hoek te slepen, beweegt de achtergrond enzo wel mee, maar de tekst en de afbeeldingen niet. Ik heb even een testje online geplaatst dus of jullie hier: http://hahatest.woelmuis.nl/template.html even naar willen kijken, door de grote van je browser aan te passen.
Let niet op dat hij de afbeeldingen niet kan laden, dat komt omdat ik die daar niet op heb gezegt.

Gr Sander
 
apDiv ellende

O fliereflutsels! Dat is weer Dreamweaver met z'n apDiv's... :evil:

Al die apDiv's hebben een absolute position. En een {position: absolute;} betekent: een vaste afstand vanaf de linkerbovenhoek, horizontaal {left: ..px;} en verticaal {top: ..px;}.
Dat kan goed gaan bij één bepaald beeldschermformaat, maar zodra je het window gaat veranderen of van resolutie verandert, gaat het mis. Het midden is niet meer het midden, enz.
Mijn beeldscherm staat bv. op 1024*768px:

apdiv-ellende.png

apDiv ellende !

De enige manier om hier van af te komen: uithuilen, de apDiv's vergeten, en opnieuw beginnen met het pagina-ontwerp.
Verder is een combinatie van een tabel-voor-de-opmaak (verouderd) en div's-voor-de-opmaak gebruikt. De combinatie geeft soms ook problemen.
Als je toch bezig bent, zou ik de tabel vergeten en meteen alles met div's maken. ;)

Succes!
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Dus als ik het goed begrijp moet ik het nu met div's gaan maken. Ik kan wel aardig overweg met dreamweaver maar weet lang niet wat alles betekent, dus waar kan je die gewone div's vinden. In iedergeval bedankt voor het antwoord, heb ik de komende week ook weer wat te doen :o
 
Hey,

sorry ik begreep eerst niet wat je bedoelde CSSHunter, maar nu snap ik het al, hoe kan ik mijn tekst anders plaatsen dan met APdiv's, en volgens mij heb ik voor de lay out alleen maar div tags gebruikt en geen tabellen, of zijn dat tabbelen (sorry weet er niet heel veel van)

Gr Sander
 
recept! :: Dreamweaver zonder apDiv's en tabellen

Hoi Sander,
... volgens mij heb ik voor de lay out alleen maar div tags gebruikt en geen tabellen.
Volgens mij zie ik in de broncode staan:
HTML:
<body>
<table height=100% cellspacing=0 cellpadding=0 align=center>
   <tr>
      <td valign=middle>
      ... enz.
:p

Ik kan wel aardig overweg met dreamweaver maar weet lang niet wat alles betekent.
Voor Dreamweaver zijn uitgebreide Engelse handleidingen op internet:
Zelf heb ik geen Dreamweaver, dus ik kan niet vertellen hoe je het in DW via de ontwerp-weergave voor elkaar kunt stoven.
Maar ik kan wel aardig overweg met de broncode. :)
Het recept is dan als volgt.
Hier eerst even diep ademhalen!
  • Ga naar de code-weergave van de pagina.
  • Wis alles wat daar staat, en plak er het volgende in:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />

<!-- http://www.helpmij.nl/forum/showthread.php/615919-Teksten-en-afbeeldingen-bewegen-niet-mee -->
<meta name="robots" content="noindex, nofollow" /><!-- alleen voor deze testpagina -->
<title>haha-1</title><!-- alleen voor deze testpagina -->

<meta name="description" content="Dit is de website beschrijving voor Google!" />
<meta name="keywords" content="keywords, here" />

<style type="text/css">
/* hier gaat voorlopig de css komen */

</style>

</head>

<body>

<p>(hier komt de pagina-inhoud)</p>
<p><a href="http://validator.w3.org/check?uri=referer">Valid xhtml1.0 Strict</a> | 
<a href="http://jigsaw.w3.org/css-validator/check/referer">Valid css2.1</a></p>

</body>
</html>
  • Sla de pagina op met een nieuwe naam!
Hiermee volg je het aanbevolen pagina-model volgens de standaarden van w3c.
  • Resultaat: www.developerscorner.nl/csshunter/tests/haha-1.htm
  • Dit is het startpunt: vervolgens gaan we beetje bij beetje de elementen van boven naar beneden toevoegen. En steeds controleren of het nog goed gaat!
    Want herstellen zodra een probleem zich voordoet is 1000x beter dan eerst de complete lay-out maken en op het laatst corrigeren: zoals met de apDiv's blijkt dat soms gewoon niet te kunnen...
  • Zie ook de Golden Rules of CSS.
= = = = = = = = = =

Het eerste wat we nu gaan doen, is voor Firefox ruimte aan de rechterkant maken voor de scrollbar. Als je een korte pagina hebt (die helemaal op het scherm past) en ergens anders op de site een lange pagina (die in hoogte niet op het scherm past), zou je anders een verspringing links-rechts krijgen bij een wissel tussen deze pagina's -- omdat de ene pagina geen scrollbar heeft, en de andere wel.
Maak hiervoor de volgende css in het style-blok in de <head>:
Code:
html {
    height: 100%;
    padding: 1px;
    }
De padding (opvulling) van 1px maakt dat de pagina net 1px hoger is dan de schermhoogte, en er moet dus altijd een scrollbar aan de rechterkant komen.

Het tweede wat we nu gaan doen, is de pagina in het midden zetten voor elke beeldschermbreedte. Voeg aan het style-blok toe:
Code:
body {
    width: 800px;      /* de gekozen breedte; niet meer dan 980px */
    margin: 10px auto; /* boven en beneden 10px speling, links/rechts automatisch = gecentreerd */
    padding: 0;        /* alle browsers hetzelfde */
    border-left: 1px dotted fuchsia;  /* tijdelijk */
    border-right: 1px dotted fuchsia; /* tijdelijk */	
    }
Met een maximale breedte van 980px past de pagina in elk geval op een resolutie van 1024*768px. Ook bij een grotere breedte komt de pagina in het midden. Het tijdelijke stippel-randje links en rechts is om te zien waar je zit.
= = = = = = = = = =

Nu is de achtergrond-kleur aan de beurt. Voor de <body> moet die wit worden, en voor de rest grijs. Voeg dus toe:
Code:
html { 
    ...
    background: #999999;
    color: black;	
    }
body {
    ...
    background: #F0F0F0;
    color: black;
    }
De tijdelijke stippellijntjes kunnen er nu meteen uit. Om het contrast tussen de letters en de achtergrond niet te groot te maken, had je de letters grijzer gemaakt op de witte achtergrond. Het geeft echter een veel rustiger beeld en betere leesbaarheid als je het precies omgekeerd doet: de achtergrond heel licht grijs, en de letters zwart houden.
We zien nu dat de afstand boven de <body> niet in alle browsers de opgegeven 10px is, maar soms ongeveer 16px. Niets van aantrekken, dat komt omdat de <p> nog niet genormaliseerd is -- dat komt later goed.
= = = = = = = = = =

Volgende stap: de eerste <div>, de <div id="header"> met het logo er in, kan in de html komen.
HTML:
<div id="header">
    <img src="images/logo-witte-letters.png" width="333" height="85" alt="Logo Witte Letters" />
</div>
Omdat een <div> een "block-element" is, en zonder tegenbericht altijd de volle beschikbare breedte inneemt van het element waar het in zit (hier: de <body>), hoeft er niets speciaals aan css mee te gebeuren.
Voor het img is wel wat css nodig: dat heeft als het in een regel staat altijd een paar lege pixels eronder, zodat letters met een neerhaal (zoals een "p") ook wat ruimte krijgen. Hier is dat niet nodig, en dat wordt opgelost door het img een "vertical-align" mee te geven. Tegelijkertijd wordt ook verboden om er een randje omheen te zetten. Dat komt van pas als je van een img een link wilt maken (bv. bij het logo: naar de homepage), anders zou daar een vette blauwe rand omheen komen. Dus:
Code:
img {
	border: 0;
	vertical-align: top;
	}
= = = = = = = = = =

Zo staat het logo stuik tegen de randen. Als je dat anders wilt, kan dat bv. door paddings (vulstukjes) op te geven voor de #header. Ook een ander achtergrondkleurtje voor deze <div> is mogelijk:
Code:
#header {
    padding: 15px 20px; /* opvulling boven/beneden: 15px; links/rechts: 20px; */	
    background: #F0D46F;
    color: black;	
    }
= = = = = = = = = =

De fotokop-letters afbeelding moet hieronder komen, met een tussenruimte van 15px aan de bovenkant. Eronder = op de volgende regel, met een <br />:
HTML:
<div id="header">
    <img src="images/header-witte-letters.gif" width="333" height="85" alt="Logo Witte Letters" /><br />
    <img id="fotokop" src="images/fotokop-letters.jpg" width="278" height="184" alt="Fotokop Letters" />
</div>
De 15px erboven kan met css geregeld worden:
Code:
#fotokop {
    margin-top: 15px;
    }
= = = = = = = = = =

De volgende afbeelding komt er gewoon naast ...
HTML:
<div id="header">
    <img src="images/header-witte-letters.gif" width="333" height="85" alt="Logo Witte Letters" /><br />
    <img id="fotokop" src="images/fotokop-letters.jpg" width="278" height="184" alt="Fotokop Letters" />
    <img id="rozekop" src="images/header2-roze-letters.gif" width="418" height="111" alt="Logo Roze Letters" />
</div>
... en de afstanden worden weer geregeld met css:
#rozekop {
margin-top: 45px;
margin-left: 40px;
}
= = = = = = = = = =

Intussen eens even kijken hoe het geheel zich gedraagt bij trekken en duwen aan het window-formaat, en bij andere resoluties!
Gaat het goed? Dan verder!

= = = = = = = = = =

De menu-items stonden er allemaal in als apDiv's, maar dat gaan we nu niet doen. We maken er een mooi horizontaal lijstje van:
HTML:
<div id="menu">
    <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/">Over ons</a></li>
        <li><a href="/">Werkwijze</a></li>
        <li><a href="/">Tarief</a></li>
        <li><a href="/">Contact</a></li>
    </ul>
    <div class="clearL"><!-- voor doortrekken menubalk --></div>
</div>
De bijbehorende css is:
Code:
#menu {
	background: #005F60;
	color: white;
	}
#menu ul {
	margin: 0 0 0 20px;
	padding: 0;
	list-style: none;
	}
#menu li {
	float: left;
	margin: 0;
	padding: 0;
	}
#menu a {
	padding: 10px 15px;
	display: block;
	background: #005F60;
	color: white;
	}
#menu a:hover {
	background: white;
	color: #005F60;
	}
.clearB {
	clear: both;
	}
Het hoe en waarom van deze menu-css laat ik hier kortheidshalve achterwege.
Over de opbouw van zo'n menulijstje staat ergens anders op het forum (vanaf stap 5) wat uitleg.
= = = = = = = = = =

Nu kunnen we even regelen dat alle letters in het goede lettertype komen, en voor alle browsers de lettergrootte normaliseren. Door het lettertype in de <body> op te geven, zijn we in 1 klap van alles af. Dan hoeven alleen eventuele afwijkende lettertypes in een bepaalde container opgegeven te worden:
Code:
body {
	...
	font-family: "Trebuchet MS", arial, helvetica, sans-serif;
	font-size: 100.1%;
	}
= = = = = = = = = =

Dan komen de twee kolommen: de #maincontent en de grijze #rechterkolom. Die kunnen naast elkaar komen door de ene naar links te laten drijven {float:left;} en de andere naar rechts {float:right;}. Erna komt weer een zg. "clearing div" om de achtergrond van de body te laten doorlopen. We beginnen met de #maincontent:
HTML:
<div id="maincontent">
    <p>(hier komt de rest van de pagina-inhoud)</p>
</div>
<div class="clearB"><!-- voor doortrekken body-achtergrond --></div>
Met in de css:
Code:
#maincontent {
	float: left;		
	width: 505px;       /* echte breedte is incl. padding: 505+30 = 535px */
	padding: 0 10px 0 20px;
	border-right: 1px dotted fuchsia;
	}
= = = = = = = = = =

Nu de rechterkolom erbij (met voor de veiligheid een paar px speling ertussen):
HTML:
<div id="rechterkolom">
    <p>(hier komt de inhoud van de rechterkolom)</p>
</div>
Met:
Code:
#rechterkolom {
	float: right;		
	width: 230px;       /* echte breedte is incl. padding: 230+15+15 = 260px */
	padding: 0 15px 0 15px;
	background: #CCCCCC;
	color: black;
	border-left: 1px dotted green;
	}
= = = = = = = = = =

We zien dat nu de achtergrond van de rechterkolom niet doorlopt tot op de grond. Dat komt door het drijvend maken van de kolom. Maar hier is een oplossing voor: we geven de <body> aan de rechterkant een achtergrondfiguur mee met de kleur en de breedte van de rechterkolom! (Dit is de zg. "faux column" techniek: een nep-kolom).
De achtergrondfiguur hoeft niet hoog te zijn, 1px is in principe voldoende; want de figuur kan verticaal herhaald worden. Maar om de browser niet te veel werk te geven, kan beter een hoogte van bv. 100px genomen worden:

bg-rechterkolom.gif

bg-rechterkolom.gif​

De css wordt:
Code:
body {
	...
	background: #F0F0F0 url(images/bg-rechterkolom.gif) repeat-y 100% 0;
	}
De 100% zorgt ervoor dat de horizontale afstand van de afbeelding helemaal rechts begint, en van daaruit terug de body in loopt.
= = = = = = = = = =

Onder de twee kolommen kan nu de footer over de volle breedte gezet worden. De losse clearing-div kan er nu uit, als in plaats hiervan de footer zelf de class="clearB" meekrijgt:
HTML:
<div id="footer" class="clearB">
	ik ben de footer!
</div>
Met bijvoorbeeld:
Code:
#footer {
	background: #005F60;
	color: white;
	text-align: center;
	}
= = = = = = = = = =

Daarmee is het template klaar, en kunnen we straffeloos gaan opvullen.
= = = = = = = = = =

Rest nog om alle css-styles uit de <head> te halen en in een apart stylesheet te zetten (stylesheets/haha.css; niet vergeten de url's van de background-images naar de goede mappen te laten verwijzen), en dit in de head van elke pagina aan te haken:
HTML:
...
<link rel="stylesheet" type="text/css" href="stylesheets/haha.css" />
</head>

= = = = = = = = = =
Ziezo!
Nu kan je weer uitademen. ;)
Mooi van de tabel en al die apDiv's af:
  • sterk vereenvoudigde, overzichtelijke html gekregen,
  • en alle styles staan herkenbaar in het stylesheet.
En dit alles zonder dat de hele Dreamweaver nodig was. :d

Succes ermee!
Met vriendelijke groet,
CSShunter
___________
PS: Alle mapnamen en bestandsnamen heb ik in kleine letters staan, om fouten te voorkomen. In Windows (lokaal) maakt het gebruik van kleine/hoofdletters niet uit, wel op een server.
 
Woow, CSSHUNTER, ik kan nu weer opgelucht ademhalen hoor, wat een held;) ben jij, echt heel erg bedankt voor dit antwoord.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan