CSS spielt verrückt

dummix

Lt. Junior Grade
Registriert
Juni 2007
Beiträge
454
Nabend Leute,
mir kommt's vor, als würde CSS verrückt spielen. Ich habe folgenden HTML-Code:
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="de" lang="de">
<head xml:lang="de">
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="content-language" content="de" />
	<meta http-equiv="content-style-type" content="text/css" />
	<meta name="language" content="de" />
	<meta name="titel" content="Historische Baracke Birkenhain" />
	<meta name="distribution" content="global" />
	<meta name="audience" content="all, alle" />
	<link rel="stylesheet" type="text/css" media="all" title="Stylesheet" href="./css/style.default.css" />
	<!--[if lt IE 7]>
	<script src="ie7/ie7-standard-p.js" type="text/javascript"></script>
	<![endif]-->
	<title>Historische Baracke Birkenhain</title>
</head>
<body>
	<div class="root">
	<div class="head">
		<div><a href="#inhalt">zum Inhalt springen</a><a href="http://google.de">Suche</a></div>
		<h1>Historische Baracke <span>Birkenhain</span></h1>
		<ul>
			<li>Start</li>
			<li>Geschichte</li>
			<li>Wir &uuml;ber uns</li>
			<li>G&auml;stebuch</li>
			<li>Kontakt</li>
			<li>Impressum</li>
		</ul>
	</div>
	</div>
</body>
</html>
und folgendes Stylesheet:
Code:
@charset 'utf-8';

@media screen, projection {
* {
	margin: 0;
	padding: 0;
	background: none;
	font: 12pt/100% lucida, helvetica, sans-serif;
	color: #000;
}

body {
	background: url(../img/holz.png);
}

/*################
Ueberschriften
##################*/

h1 {
    font: bold 2em fiesta, helvetica, sans-serif;
    padding: 10px;
    text-indent: -9999px;
}

h1 span {
	font: inherit;
	color: #8f0100;
}

h2 {
	font: 2em palatino, georgia, 'bitstream vera serif', serif;
	color: #000;
}

h3 {
	font: 1.7em georgia, palatino, 'bitstream vera serif', serif;
	color: #600;
}

/*################
Boxen
##################*/

.root {
	margin: auto;
	width: 766px;
}

.head {
	height: 328px;
	background: url(../img/kopf-t.png);
}

.head div {
	height: 33px;
	max-height: 33px;
	margin: 27px 0 0 38px;
	max-width: 400px;
}
}

Mein Problem: CSS macht nicht das, was es logischerweise tun sollte. Wie ihr seht ist div.root zentriert mit einer bestimmten Breite. Sein Kindelement div.head hat die selbe Größe, es ist praktisch ganz oben mittig. Nun soll div.head div (da wo die beiden Links sind) ein Kindelement von div.head sein und einen bestimmten Abstand nach links (38px) und oben (27px) haben. Wenn ich also dem div.head div-Element diese margin-Eigenschaft gebe, dann verschiebt sich auch das Elternelement (div.head) nach unten. Das lustige ist, wenn ich beiden Elementen (div.head und div.head div) border: 1px black solid gebe, dann funktionierts shclicht nicht. Erst ab 2px border-width funktionierts und dann wird auch alles so positioniert, wie es sein soll.

Ich hoffe ihr könnt mir folgen, wenn nicht dann speichert den Code einfach und schaut's euch an.

Eigentlich ist das verhalten der div-Container in diesem falle unlogisch, oder?
 
Willst du jetzt eine Lösung hören oder nur eine Stellungnahme, ob sich CSS unlogisch verhält? Das kommt irgendwie nicht so ganz rüber. :)

Also falls du das Problem lösen willst, gib .head die Eigenschaft overflow:hidden (und für den MSIE5&6 height:1%), dann funktionierts.
 
Beides :D

Ich habe jetzt zwar das Problem anders gelöst (komplett anderes Markup), da sich wiederrum ein weiteres Problem ergab, aber trotzdme danke; das muss ich mir merken.
 
Zurück
Oben