Absoluut positioneren t.o.v. relatief blok

Status
Niet open voor verdere reacties.

Roelant

Gebruiker
Lid geworden
20 mrt 2007
Berichten
112
Hallo,

Als ik de lessen in mijn leerboek en hier op de site goed begrijp, dan positioneer je bij absolute je element t.o.v. het bovenliggende parentelement dat ook absolute gepositioneerd is. Bestaat die niet, dan t.o.v. de body.

Nu heb ik een 3-koloms-pagina gemaakt. zoals de hoofdpagina van helpmij.nl. De middelste kolom is gevuld en blijft in het midden, tot dat de 'randen' op zijn. Daarvoor heb ik deze kolom relatief moeten positioneren.

Als ik nu de elementen in deze kolom absoluut wil plaatsen t.o.v. deze kolom, dan wordt deze kolom steeds kleiner, omdat ik die elementen er uit haal. Eigenlijk zou het het beste zijn volgens mij als die relatieve kolom eigenlijk absoluut zou zijn, want volgens mij verandert dan de grootte niet toch?

Hoe zorg ik nu dat die middelste kolom gewoon altijd bestaat op de pagina van boven naar beneden en dat het positioneren van die elementen zoals de koptekst de lengte niet aanpassen?

En is er overigens een manier om horizontaal te centreren zonder dat ik precies dat aantal pixels moet ingeven? Ik heb al diverse instellingen geprobeerd met de margin en zo, maar het lijkt niet echt effect te hebben.

Code:
body{
font-family:arial;
background:yellow;
}
#kolommidden{
position:relative;
width:800px;
margin:0 auto;
}
#koptekst{
position:absolute;
left:150px;
width:500px;
}

HTML:
<body>
<div id="kolommidden">
		<div id="koptekst">
			<h1>koptekst</h1>
		</div>
	</div>
</body>
 
Laatst bewerkt:
achtergrond afbeelding: bg.jpg

index.html
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Basic html</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link type="text/css" rel="stylesheet" href="assets/css/screen.css" />
		
		
		<style type="text/css">
		
			body  {
				margin: 0;
				padding: 0;
				font: normal 12px/18px 'Arial';
			}
			
			#page {
				position: relative;
				width: 930px;
				margin: 0 auto;
				padding: 15px;
				overflow: hidden;
				background-color: green;
			}
			
			/* collumWrap geef je overflow hidden om de float van .collum in de wrap te clearen. dit doe je zodat de achtergrond doorloopt
			je kunt meer over dit onderwerp vinden als je gaat zoeken op faux collums, en clearing floats*/
			#collumWrap {
				background: url('bg.jpg') left top repeat-y;
				overflow: hidden;
			}
			
			/* algemene opmaak van de collum */
			.collum {
				float: left;
				width: 270px;
				padding: 15px;
				margin-right: 15px;
				background-color: red;
			}
			
			/* de laatste collum erft alle eigenschappen van .collum (door de dubbele class)
			hier geef je alleen aan wat anders moet zijn in dit geval de margin */
			.last {
				margin-right: 0px;
			}	
			
			/* algemene h3 binnen collum */
			.collum h3 {
				margin: 0;
				color: aqua;
			}
			
				/* h3 binnen de verschillende collums. deze kun je verschillend opmaken door de dubbele class 
				haal je de kleur weg dan zul je zien dat deze aqua word zoals bij .collum h3 staat */
				.first h3 {
					color: purple;
				}
				
				.second h3 {
					color: white;
				}
				
				.last h3 {
					color: yellow;
				}
				
		</style>
		
		
	</head>
	<body>
		<div id="page">	
			<div id="collumWrap">
				<!-- de collums worden zolang als de collum met de meeste inhoud -->
				<div class="collum first">
					<h3>kop van eerste collum</h3>
					<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
<!-- 					<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p> -->
				</div>
				<div class="collum second">
					<h3>kop van tweede collum</h3>
					<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
					<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
				</div>
				<div class="collum last">
					<h3>kop van derde collum</h3>
					<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
<!-- 					<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p> -->
				</div>
			</div>
		</div>
	</body>
</html>

volgens mij is dit ongeveer wat je bedoeld. ik heb commentaar bijgevoegd in de code zodat je kunt zien hoe het werkt. Succes en als je vragen hebt hoor ik het wel :D
 
Laatst bewerkt:
Bedankt voor je antwoord, maar het is niet helemaal wat ik bedoel. Met 3 kolommen bedoelde ik niet die binnenste 3 kolommen, maar gewoon de kolom die jij page hebt genoemd. De ongebruikte ruimte aan de zijkant waren de twee andere kolommen, misschien niet helemaal een goede woordkeuze geweest. Eigenlijk is het dus 1 gecentreerde kolom.

Wat ik nu wil is dat die middelste kolom (page) altijd doorloopt tot onderaan de pagina, ongeacht of de inhoud zover reikt. Ik heb bijvoorbeeld een plaatje van 300px bij 300px. Als ik die nu absoluut ga positioneren merk ik dat die 'kolommiden' ook ineens 300px naar boven schiet. Als ik alles absoluut ga positioneren, houd je dus geen kolom meer over. Ik heb het idee dat ik wel absoluut wil positioneren, maar dan tov die kolom en niet tov de body... En alles moet dus binnen die kolom blijven. Is dit een beetje duidelijk zo?

Als ik in jouw voorbeeld de tweede alinea weghaal uit het tweede blok, dan worden de rode vakken kleiner, maar ook de groene! En dat laatste is dus net wat ik niet wil...
 
Laatst bewerkt:
Hoi Roelant,
Als ik het goed begrijp wil je een pagina van een bepaalde breedte, die altijd in het midden van het scherm staat.
Dat kan met:
Code:
body {
   width: ..px;
   margin: 0 auto;
   }
En je wilt dat de achtergrondkleur van de pagina altijd doorloopt tot onderaan het scherm.
Dat kan met:
Code:
html {
   background: #D9EDFF; /* kleur van de zijkanten */
   }
body {
   min-height: 100%;    /* vult background-kleur tot onderaan */
   background: #FFF6D7; /* kleur van de pagina */
   }
Absoluut positioneren van het binnenwerk zou ik niet doen, want is denk ik helemaal niet nodig. Alles kan gewoon direct in de <body> opgenomen worden.

=====
En is er overigens een manier om horizontaal te centreren zonder dat ik precies dat aantal pixels moet ingeven?
Jawel! Daarvoor kan je aan een element in de html een class="center" meegeven, met als css:
Code:
.center {
   text-align: center;
   }
Het "text-align" is hier een instinker: want plaatjes worden op deze manier ook keurig gecentreerd.
Resultaat (zie ook broncode):
Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan