|
|||
![]()
Hoi,
hier wird ja sehr oft der Tipp gegeben, erst einmal alle browserabhängigen Abstände exlizit mit CSS auf 0 zu setzen, undzwar so: Code:
* { margin: 0; padding: 0; } Problem dabei nur, dass ja so auch die Abstände von p-Tags entfernt sind zum Beispiel! Sollte man den body- und html-Tag zusammen definieren, also so: Code:
html, body { margin:0; padding:0; text-align:left; width:100%; height:100%; color:#000000; font-size:0.85em; font-family:Arial, Helvetica, sans-serif; background-image:url(background.jpg); } Oft liest man auch davon, dass man diesen beiden Tags jeweils 100% Höhe bzw. Breite geben soll, wie oben geschehen. Stimmt das? |
Sponsored Links |
|
|||
![]()
Diesen Reset mit dem Universal-Selektor macht man, weil die margins und paddings von Elementen wie h1, h2 ..., p, ul, li ... bei den einzelnen Browsern nicht gleichgroß voreingestellt sind. Oft wird das vergessen, und Listen sehen dann ganz anders aus, um ein Beispiel zu nennen.
Deswegen erst einmal alles auf Null setzen, danach neu aufbauen. Richtig, margin und padding von p müssen dann erst wieder von dir auf irgendwelche Werte gesetzt werden, die du für sinnvoll erachtest. Wenn du jetzt bloß für html, body die margins und paddings setzt, ist das Problem für p, ul usw. noch nicht gelöst. Das mit den 100% Höhe wird erst dann interessant, wenn ein späteres Element sich auf die Höhe von html beziehen will. Ein Beispiel ist die footerStickAlt-Methode. 100% Höhe ist also methodenspezifisch. |
Sponsored Links |
|
||||
![]()
Ich habe gelesen, dass der IE padding für ul verwendet und FF und Opera margin für ul, ein Grund mehr, wieso man margin und padding auf Null setzten sollte (kann auch sein, dass es andersherum war).
__________________
CSS-FAQ beantwortet die meisten Fragen | Retro coding gegen Divitis | Code validieren & posten für Hilfe |
|
||||
![]()
Der Reset ist unbedingt empfehlenswert. Hier ein Vorschlag für eine Restaurierung der wichtigsten Abstände:
Code:
/* =================== Abstände restaurieren */ h1, h2, h3, h4, h5, h6, p, blockquote, address, pre, ul, ol, dl, table { margin-bottom: 1em; } /* Optional */ h1, h2, h3, h4, h5, h6 { padding-top: 1em; } /* Zitate einrücken */ blockquote { margin: 1em 2em; } /* Auswahl in Auswahllisten (select) durch padding:0 schlecht lesbar */ option { padding-left: 0.2em; padding-right: 0.3em; } /* Alle Listen etwas einrücken */ ul, ol, dl { margin-left: 1em; } /* Listenelemente etwas mehr einrücken */ li { margin-left: 1em; } /* Definitionen in Definitionslisten noch mehr einrücken */ dd { margin-left: 2em; } /* Verschachtelte Listen ohne Außenabstand oben/unten */ ul ul, ul ol, ul dl, ol ul, ol ol, ol dl, dl ul, dl ol, dl dl { margin-top: 0; margin-bottom: 0; } Grüße aus Groningen Peter
__________________
HTML & CSS lernen: »Einstieg in CSS« + »Flexible Boxes« | CMS lernen: »Websites erstellen mit Contao« |
|
|||
![]()
Ich würde nicht unbedingt davon ausgehen, das das Universelle Reset noch Konsens ist. Dein Vorschlag des Universellen Reset plus Restaurierung ist für mich nicht einfacher zu verwenden als das Differenzierte Reset von Meyer. Und das bei Meyer bis zum Abwinken durchgesprochene Forms-Problem ist beim Universellen Reset so oder so betroffen (auch wenn nicht jeder glaubt, es gebe überhaupt ein Forms-Problem). Der dritte Weg, alles so zu lassen, wie es ist, um nur dann einzugreifen, wenn es stört, ist ein erprobter Weg. Wenn er auch Beginner oft in die Irre führt: Das heißt nicht, dass er schlecht wäre oder dass Beginner nichts daran lernen würden.
Persönlich tendiere ich dazu, das Differenzierte Reset zu predigen und selbst aber alles so zu lassen. Ich finde diese reset.css zu aufgeblasen. Ein paar von diesen Dingern, und schon kann man sich framework nennen. ![]() |
|
||||
![]() Zitat:
Ich finde das Deklarieren individueller Werte für die einzelnen Elemente allerdings nicht übermäßig aufgeblasen, denn ohne Globalen oder Differenzierten Reset sind unterm Strich wahrscheinlich ungefähr genauso oft einzelne Werte auf Null zu setzen, wie man mit Reset zu restaurieren hat. |
|
||||
![]() Zitat:
![]() Zitat:
Universell plus Restaurierung wie oben beschrieben benötigt ungefähr gut 30 Zeilen. Differenzierter Reset ala Meyer hat über 40 nur für den Reset, OHNE Restaurierung. Grins. Ich nenne das immer Fundament, weil man darauf bauen kann. Aber Framework klingt natürlich viel besser ![]() Ciao Peter
__________________
HTML & CSS lernen: »Einstieg in CSS« + »Flexible Boxes« | CMS lernen: »Websites erstellen mit Contao« |
|
|||
![]()
Der Begriff "Differenziertes Reset" wird von mir hier eingeführt und meint Eric Meyers Reset sowie Yahoos Reset. Mit "Restauration" meine ich das hier im Thread vorgestellte Wiederherstellen nach Universellem Reset, und mit Universellem Reset meine ich
Code:
* {margin: 0; padding: 0} Ein Beispiel für das Problem des Universellen Reset ist die Select-Box mit size=1. Firefox schneidet nach dem Reset den letzten Buchstaben rechts unvorteilhaft der Länge nach durch, und fängt links zu knapp an. Mit padding: 0 0.5em 0 0.25em; sicher kein großes Problem. Der Radio-Button sinkt im Firefox im Gegensatz zur Checkbox nicht auf die Grundlinie. Naja, auch kein wirkliches Problem. Im Firefox wird der Submit- und der Reset-Button nur leicht, im Opera sehr stark abgeschnitten. Um das Problem im Opera mit Padding wieder zu beheben, riskiert man im IE7, dass der Button doch unschön breit wird. Und nu? Safari zeigt sich von all dem recht unbeeindruckt. Die Buttons sind schlank, kaum annähernd so breit wie im IE7 nach Padding-Kompensation für den Opera. Die Restauration steht vor dem Problem, all diese form-Elemente, die vorher hübsch aussahen, wieder so hübsch hinzukriegen -- und zwar in allen OS, in allen Browsern. Das würde nur dann einfach sein, wenn alle Browser entweder das Stylen von form-Elementen erlauben oder untersagen würden. So, mit diesem Teils-Teils, ist das schwierig. Weil es nicht definiert ist, wie form-Elemente darauf reagieren, kann man auch nicht wissen, was die nächste Serie an Browserversionen dazu sagt. Und das ist das eigentliche Problem. Deshalb, so die Begründung des Differenzierten Reset, sollte man besser nicht in Bereiche hineinresetten, die nicht definiert sind. Genau dies tut der Universelle Reset und damit auch die Restauration. Inwieweit diese theoretischen und lediglich auf einem schnellen Testcase basierenden Überlegungen auf ein "real-world"-Projekt in der Wildnis zutreffen, kann ich nicht sagen. Sicher gibt es da noch viel zu testen bei den Form-Elementen. Mir ist auch im Moment unklar, was das für eine "best practice"-Aussage bedeutet. Es bleibt schwierig. Code:
<!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> <title>Reset</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="author" content="Ingo Chao" /> <style type="text/css"> /*<![CDATA[*/ body {background: pink;} * {margin: 0; padding:0;} /* universelles Reset */ /* eine moegliche Restauration fuer Firefox und Opera */ /* option {padding: 0 0.5em 0 0.25em;} input[type="submit"], input[type="reset"] {padding: 0 1em;} */ /*]]>*/ </style> </head> <body> <form action=""> <fieldset> <legend>Legend</legend> <input id="ip1" name="text" size="20" value="Default text." /> <textarea id="ip2" name="textarea" rows="3" cols="20">Default text.</textarea> <input id="r1" type="radio" name="radio" value="1" /> <input id="r2" type="radio" name="radio" value="2" checked="checked" /> <input id="c1" type="checkbox" name="checkbox" /> <input id="c2" type="checkbox" name="checkbox" checked="checked" /> <select id="s1" name="sel1" size="1"> <option> eins </option> <option selected="selected"> zwei (default) </option> <option> drei </option> </select> <select id="s2" name="sel2" size="3"> <option> eins </option> <option selected="selected"> zwei (default) </option> <option> drei </option> </select> <input id="bla" type="submit" name="submit" value="Submit" /> <input id="blub" type="reset" name="reset" value="Reset" /> </fieldset> </form> </body> </html> Geändert von IChao (19.08.2007 um 20:18 Uhr) |
Sponsored Links |
|
||||
![]()
Hallo Ingo,
erstmal vielen Dank für deinen ausführlichen Beitrag und auch für den Testcase. Was die Begrifflichkeiten "Universell", "Differenziert" und "Restauration" angeht, hatte ich dich richtig verstanden, und ich stimme völlig mit dir überein. Der "Universal Reset" greift in die Abstände der Formelemente an, und das ist auch der Schwachpunkt. Bei der Gestaltung von Formularen "predige" ich auch Zurückhaltung im Sinne von "möglichst nicht gestalten, klappt sowieso nicht". Formal weirdness halt. Zitat:
Auf einer privaten Homepage mit einem einfachen Kontaktformular dürfte das nicht sonderlich problematisch sein, auf einer Site mit komplexen Bestell- und sonstigen Formularen könnte da schneller was in die Hose gehen. Thanx again Peter P.S. Vielleicht zur Erläuterung: Ich bin Dozent/Autor und erst in zweiter Linie "Weber". Meine Entscheidungen gehen deshalb oft von einer Situation aus, in der ich (wie auch bei "Little Boxes") zu Gunsten der Verständlichkeit auf einige Details verzichte(n muss). Das ist natürlich eine Gratwanderung und die Kunst besteht darin, die richtigen Dinge wegzulassen ... Aber dein Beitrag hat auf jeden Fall bewirkt, dass der universelle Reset nicht mehr ohne einen Hinweis auf potentielle Formularprobleme aus dem Haus geht ![]()
__________________
HTML & CSS lernen: »Einstieg in CSS« + »Flexible Boxes« | CMS lernen: »Websites erstellen mit Contao« Geändert von pmmueller (19.08.2007 um 21:59 Uhr) Grund: Tipfpehler ;-) |
Sponsored Links |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Frage zu position:fixed und dem IE | human | CSS | 4 | 31.01.2007 22:13 |
Zeilenüberlappung bei margin-top mit negativem Wert | c.weber.os | CSS | 15 | 15.10.2005 15:11 |
Browserneurose | SimonWpt | CSS | 39 | 15.07.2005 10:51 |
Wichtige Frage zu DIV-Containern und dem CLEAR Befehl | groovyfunky | (X)HTML | 120 | 24.04.2005 12:36 |
Scrollbares Textfeld mit purem CSS | Dancer | CSS | 6 | 24.01.2005 15:58 |