HTML Wie simple Seite ohne Abstand oben erstellen?

P

pseudo

Gast
Hai,

ich frische gerade mal wieder meine HTML(5)-Kenntnisse und die von CSS(3) auf, dabei scheitere ich schon an einem Vesuch, einer super simpel Seite keinen Abstand vom oberen Browser-Rand zu geben. Normale Seiten, die nichts ausser dem HTML5-Grundgerüst enthalten, haben oben im Firefox, IE10 und Opera immer einen 8px Abstand, egal was ich im Stylesheet für margin und padding angebe.

Beispiel:
HTML:
<!doctype html>
<html>
<head>
<title>Testseite</title>
</head>
<body>

</body>
</html>

Da ist nichts drin, was durch die eigene Box den ganzen Inhalt nach unten verschieben könnte. Trotzdem wird anscheinend durch den UA-Style per Voreinstellung ein 8px Abstand erzeugt. Wenn ich nun her gehe und überschreibe diesen Style mit folgendem CSS, führt das nicht zur vollständigen Verwendung des gesamten Platzes:

HTML:
html {
	height: 100%;
}

body {
	margin: 0 auto !important;
	padding: 0;
	height: 100%;
	font-family: Arial, Verdana, sans-serif;
	font-size: 100%;
}

Dieses CSS ist nur ein Versuch von unzähligen anderen, mittels margin und padding den vollständigen Platz der Seite zu okkupieren. Bringt nur nichts. Das es gehen muss, sehe ich an diversen anderen Seiten, doch die Code-Analyse ist diesbezüglich relativ schwierig.

Es muss doch einen einfachen Weg geben, ein randloses Basisdesign in HTML5/CSS3 erstellen zu können?
 
margin-top: 0px sollte es machen
 
Padding und margin auf 0 zu setzen, reicht eigentlich aus. Vermutlich funkt dir eine Abstandseigenschaft eines Containerelements im <body> dazwischen.

Bei komplett neuen Projekten empfiehlt sich ein CSS-Reset. Damit werden alle Standardabstände, die du nicht gesondert festgelegt hast, zurückgesetzt.
 
Zuletzt bearbeitet:
CSS Reset hat es dann geschafft. Alle anderen Hinweise habe ich natürlich schon vor dem Posten ausprobiert.
 
Das Reset-Script ist Mumpitz:
1.) schön, wenn man die HTML5-Elemente als Block deklariert, nur ignorieren nicht-HTML5-Browser diese Deklaration sowieso. Man muss eh über Scripts wie HTML5shim gehen.
2.) der ol/ul - Reset wird dich in jedem CMS mit WYSIWYG-Editor (TinyMCE) zur Weißglut bringen. Statt dass du die paar Listen, die keine Einrückung + Anführungspunkte haben sollen entsprechend markierst musst du nun ALLEN Listen, die eine Einrückung haben sollen, diese manuell wieder zuweisen. Dasselbe gilt für den Margin-Reset bei p.

Solche Reset-Scripts blasen den Code üblicherweise nur unnötig auf.
 
@Daaron
Ich habe eben gemerkt, von was du sprichst und ich muss dir Recht geben. Ein Reset-Script verursacht mehr Arbeit als es nützt. In der Tat habe ich die Lösung für das merkwürdige Verhalten, der body-Box auch ohne ein Reset-Script gefunden. Das verwendete ul-Element in einem verschachtelten section-Element hat dazu geführt, das der ganze body-Block nach unten verschoben wurde, völlig egal auf was die margin-Attribute des body-Elements eingestellt waren.

Also, einfach nur margin und padding von body auf 0px setzen ist hier wirklich nicht die Lösung, zumal das ja auch das Erste war, was ich erfolglos versucht hatte.
 
Ja, margins von Kind-Elementen können ein Schwein sein. Mir hat n div mit ner Top-Margin mal ein Layout total torpediert, weil plötzlich 1em Abstand zum Header existierten....

Ich kann da echt nur die Entwickler-Tools im Chrome empfehlen. Baum aufploppen, mit der Maus dem Baum nach innen folgen und gucken, wo die Abstände aufleuchten.
 
Daaron schrieb:
Das Reset-Script ist Mumpitz:
1.) schön, wenn man die HTML5-Elemente als Block deklariert, nur ignorieren nicht-HTML5-Browser diese Deklaration sowieso. Man muss eh über Scripts wie HTML5shim gehen.
Das gilt nur für den IE, alle anderen älteren Browser ohne Kenntnisse der neuen Elemente brauchen nur das Default-Styling. Insofern ist das ein Fallback, ich würde es nicht als Mumpitz bezeichnen.

pseudo schrieb:
Also, einfach nur margin und padding von body auf 0px setzen ist hier wirklich nicht die Lösung, zumal das ja auch das Erste war, was ich erfolglos versucht hatte.
Collapsing margins gehören zu den weniger intuitiven Teilen der Spezifikation, sie sollten aber in entsprechenden Büchern erklärt sein. Ich würde mich da ruhig mal einlesen, das spart an manchen Stellen viel Ärger.
 
T. Smith schrieb:
Das gilt nur für den IE, alle anderen älteren Browser ohne Kenntnisse der neuen Elemente brauchen nur das Default-Styling. Insofern ist das ein Fallback, ich würde es nicht als Mumpitz bezeichnen.
Ok, nur leider können die freien Browser sowie Opera und Safari bereits seit Jahren mit HTML5-Elementen nativ umgehen. Ein FF 3.5 kann sowas. Ein Chrome 4 sollte es auch können. Das ist Steinzeit-Software und noch besser: Software mit funktionierenden Auto-Updates.

Nein, das einzige Stück Dreck, für das man permanent solche Fallbacks schreibt, ist nun einmal der IE, denn 8 und älter glänzen hübsch mit locker 15% Marktanteil.

P.S.: sollte das Reset-Script dann nicht auch noch explizit sagen: time{display:inline;} ? So n Holzklasse-Browser weiß ja nicht, was ein <time>-Element ist....


Na ja, den Support für IE8 sollte man als Entwickler inzwischen wahlweise komplett einstellen oder dem Kunden, der unbedingt auf den 8er pocht, wenigstens für jede Zeile zusätzlichen Code 20€ abknöpfen. Jede Zeile Code für den 7er kost dann 50€.
 
Daaron schrieb:
Ok, nur leider können die freien Browser sowie Opera und Safari bereits seit Jahren mit HTML5-Elementen nativ umgehen. Ein FF 3.5 kann sowas.
Nein können sie nicht, die behandeln unbekannte Elemente einfach anders als der IE. Ein FF 3.6 kennt kein <section> und behandelt es wie <foo>; das fällt nur nicht auf, weil der Dokumentbaum hier nicht kaputt geht. Darum macht das zuweisen des Default-Styles aus der Spezifikation sinn. Man beachte, dass der Reset auch schon zwei Jahre alt ist. Damals war das noch deutlich relevanter.
 

Ähnliche Themen

R
Antworten
3
Aufrufe
2.755
rawsome
R
Antworten
9
Aufrufe
4.392
B
Antworten
5
Aufrufe
1.753
Zurück
Oben