[Gelöst] Margin, padding, what the Hell?! --- CSS Profi gesucht!
am 16.06.2010 - 11:13 Uhr in
Hi,
ich schnall grad nicht warum Herr Margin und Frau Padding mich verscheissern wollen:
Normal soll Margin ja den Außenabstand angeben, tut er aber scheinbar nur wenn er Lust hat.
Ich habe 3 Blöcke die ich untereinander anzeigen lasse. Diese habe ich im oberen Bild (Anhang) mal farbig markiert um es zu verdeutlichen. Der Abstand soll immer gleich sein.
Aus dem CCS (siehe unten):
.group-specification h2 {font-size:1.3em; font-weight:normal; clear:left; MARGIN-top:1.5em;} <<<<---- Hier
.group-product-details h2 {font-size:1.3em; font-weight:normal; clear:left; MARGIN-top:1.5em;} <<<<---- Hier
Nun habe ich es mit Margin und auch padding gemacht. Eigentlich sollte Margin ja richtig sein, dann rutscht aber der untere Block mit den Produktdetails hoch an die Spezifikationen (siehe Bild).
Nehme ich hingegen für beide Zeilen Padding habe ich oben zu viel Luft zwischen den Auszeichnungen und den Spezifikationen (siehe Bild)..
Die Lösung die funktioniert: Oben Margin, unten Padding, aber - WARUM GEHTS NUR SO?!?
Weiß einer die Lösung für dieses große Rätsel aus der Geschichte der Menschheit?
Hier der relevante Teil der Seite:
(ich habe Teile mal durch "..." ersetzt damits übersichtlicher wird)
<div class="fieldgroup group-auszeichnungen">
<h2>Auszeichnungen</h2>
<div class="content">
<div class="field field-type-filefield field-field-testlogo">
<div class="field-label">Testlogo: </div>
<div class="field-items">
<div class="field-item odd">.....</div>
<div class="field-item even">.....</div>
<div class="field-item odd">.....</div>
</div>
</div>
</div>
</div>
<div class="fieldgroup group-specification">
<h2>Spezifikationen</h2>
<div class="content">
<div class="field field-type-text field-field-max-amp">.....</div>
<div class="field field-type-text field-field-amp-type">.....</div>
<div class="field field-type-text field-field-frequency-range">.....</div>
<div class="field field-type-text field-field-sn-ratio">.....</div>
<div class="field field-type-text field-field-network-conn">.....</div>
<div class="field field-type-text field-field-display">.....</div>
<div class="field field-type-text field-field-connectors">.....</div>
<div class="field field-type-text field-field-voltage">.....</div>
<div class="field field-type-text field-field-size">.....</div>
<div class="field field-type-text field-field-weight">.....</div>
</div>
</div>
<div class="fieldgroup group-product-details">
<h2>Produktdetails</h2>
<div class="content">
<div class="field field-type-text field-field-zubehoer"></div>
<div class="field field-type-number-decimal field-field-ean"></div>
<div class="field field-type-number-decimal field-field-uvp"></div>
</div>
</div>
Hier mein CSS:
(welches man sicher optimieren könnte wenn man es besser kann als ich, ich weiss)
/* Auszeichnungen */
.group-auszeichnungen h2 {font-size:1.3em; font-weight:normal; clear:left; margin-top:1.5em;}
.group-auszeichnungen .field-label {display:none;}
.group-auszeichnungen .field-item {display:inline;}
/* Spezifikationen */
.group-specification .field-item.odd {}
.group-specification .field-item.odd .field-label-inline-first {float:left; clear:left; width:170px; font-weight:normal;}
.group-specification {width:95%;}
.group-specification h2 {font-size:1.3em; font-weight:normal; clear:left; margin-top:1.5em;}
.group-specification .field-field-max-amp {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-amp-type {float:left; width:100%; background-color:#fafafa; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-frequency-range {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-sn-ratio {float:left; width:100%; background-color:#fafafa; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-network-conn {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-display {float:left; width:100%; background-color:#fafafa; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-connectors {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-voltage {float:left; width:100%; background-color:#fafafa; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-size {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-specification .field-field-weight {float:left; width:100%; background-color:#fafafa; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd; border-bottom: 1px solid #bbb;}
/* Produktdetails */
.group-product-details .field-item.odd {}
.group-product-details .field-item.odd .field-label-inline-first {float:left; clear:left; width:70px; font-weight:normal;}
.group-product-details {width:95%;}
.group-product-details h2 {font-size:1.3em; font-weight:normal; clear:left; padding-top:1.5em;}
.group-product-details .field-field-zubehoer {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-product-details .field-field-ean {float:left; width:100%; background-color:#fafafa; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd;}
.group-product-details .field-field-uvp {float:left; width:100%; background-color:#f4f4f4; padding:0em 0.5em; border-right: 1px solid #bbb; border-left: 1px solid #ddd; border-top: 1px solid #ddd; border-bottom: 1px solid #bbb;}
.group-product-details .content {margin-bottom:8em;}
Anhang | Größe |
---|---|
Abstand.png | 51.01 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
CSS für <div> ändern
am 16.06.2010 - 12:46 Uhr
Dein CSS oben bezieht sich nur auf die H2-Überschriften innerhalb der Blöcke, die mit DIVs angegeben sind. Probier mal, die Ränder für die DIVs zu ändern statt für die Überschriften. Firebug hilft dir dabei.
Unter Umständen kann es auch am Browser liegen, die sind manchmal recht eigenwillig, wenn mehrere Angaben für Ränder aufeinander treffen (vor allem IE).
Resourcen für den Theming-Ninja ist auch recht nützlich.
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Also wenn ich es so
am 16.06.2010 - 15:19 Uhr
Also wenn ich es so mache:
.group-product-details {width:95%; margin-top:1.5em;}
Gehts definitiv auch nicht. Egal ob Margin oder Padding, dann rutscht es ran.
Ich habe das Pendant zu Firebug für Opera und habe damit auch schon vorhin die ganze Zeit gesucht, aber werd nicht schlau draus.
Ich habe den Eindruck als wenn die Feldgruppe Produktdetails direkt hinter der Überschrift der Feldgruppe Spezifikationen (darüber) beginnt, er also die Inhalte der Feldgruppe Spezifikationen außen vor lässt und diese Felder garnicht beachtet, wenn er den Rand berechnet.
Link zu Testsite?
am 16.06.2010 - 19:15 Uhr
So was lässt sich am besten am lebenden Objekt klären. Hast du einen Link zu einer Testsite?
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Es läuft ja wenn ich es
am 17.06.2010 - 10:14 Uhr
Es läuft ja wenn ich es jeweils entsprechend einstelle (oben margin unten padding), ich würde nur gern verstehen warum, damit ich beim nächsten mal das ganze besser machen kann und sowas vermeide.
Wenn es nicht zu viel Unstände macht, kann ich Dir gern den Link per PM senden, da es keine Testseite ist, aber kommst Du dann auch an die CSS Daten?
Ja, mit FF und Firebug!
am 17.06.2010 - 10:18 Uhr
Mit Firebug kann man das, sollte auch mit Dragonfly kein Problem sein, dis CSS Daten auszulesen.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
ich würde auch gerne mal eine
am 17.06.2010 - 10:25 Uhr
ich würde auch gerne mal eine testeseite sehen ... dann könnten wir es auch besser nachvollziehen :-)
monsi
Ich hab Frank mal die Daten
am 18.06.2010 - 08:43 Uhr
Ich hab Frank mal die Daten geschickt.
Ich habe mir das mit dem Dragonfly schon alles angesehen, aber werde nicht wirklich schlau draus (* also ich werde nicht schlau draus wo der Fehler liegt), weil ich kein CSS Profi bin ;=)
würdest dus mir bitte auch
am 18.06.2010 - 08:50 Uhr
würdest du's mir bitte auch mal schicken? :)
Erst mal warten was der gute
am 18.06.2010 - 11:43 Uhr
Erst mal warten was der gute Frank sagt ;=) Ich will die Seite wie gesagt nicht so öffentlich machen zzt.
noch nix
am 18.06.2010 - 12:31 Uhr
Hab schon mal einen schnellen Blick drauf geworfen, aber noch nichts gefunden :-(
Welches Theme nimmst du denn?
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Das ist Danland. Keine
am 18.06.2010 - 13:58 Uhr
Das Theme ist "Danland".
Keine Hektik, wie man sieht hab ich ja eh noch ne Menge zut tun ;=)
Schonmal von Mir ein schönes Wochenende!
Dem Rätsel auf der Spur...
am 19.06.2010 - 13:46 Uhr
Ich hab probeweise mal das folgende CSS ergänzt, um zu sehen, wie sich die fraglichen Elemente ins Layout einfügen:
.group-specification {
background-color: orange;
}
.group-product-details {
background-color: lime;
}
Wie man sieht, fängt das untere DIV gar nicht direkt unter der Tabelle an, sondern viel weiter oben. Wenn du margin-top nur groß genug machst, funktioniert das auch hier. Aber wahrscheinlich ist padding dann doch die bessere Lösung.
Bei so vielen verschachtelten DIVs, die dann auch noch per "float" positioniert sind, ist es manchmal schwierig, den Überblick zu behalten, welches an welcher Stelle kommt.
Wenn man testweise mal das float für das obere Feld deaktiviert, sieht's genau andersrum aus:
If the element above the element in question is floated, or absolutely positioned, the top margin will pass through the floated element, because floats and absolute elements are removed from the flow. The margin will only be affected by static elements (or elements for which position is set to relative, and which have no coordinates) in the normal flow of the document—this includes the containing block itself.
http://reference.sitepoint.com/css/margin-top
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Ungeclearter Float
am 19.06.2010 - 11:17 Uhr
Das sieht mir ganz stark nach einem ungecleartem Float aus. Gib dem .group-product-details mal ein overflow:hidden mit auf den weg.
Edit: http://j.mp/bgdgme (Clearing floats)
Klasse Tipp!
am 19.06.2010 - 13:43 Uhr
Kannte ich noch nicht. Aber du müsstest das
overflow: hidden;
für den umgebenden Block setzen, d.h. in der Regel das nächsthöhere Element in der DOM-Hierarchie, in diesem Fall für div.content (ggf. noch etwas präziser auf den Kontext zuschneiden). Das sollte klappen. So sieht's aus, die beiden padding-Anweisungen sind deaktiviert:Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Ja das hilft recht oft ;) Man
am 19.06.2010 - 14:32 Uhr
Ja das hilft recht oft ;)
Man muss aber aufpassen in welcher Situation man das einsetzt. Das entspricht ja nicht der eigentlich Funktion. Die sagt nämlich dem Client wieder Inhalt behandelt werden soll der nicht in das umgebende Element passt.
Ich meine das gem. der CSS Spezifikation overflow, gefloatete Elemente in das Elternelement einschließen soll wenn Sie einen anderen Wert hat als visible haben. Das müsste ich aber noch mal genauer nachlesen.
Oha, das entwickelt sich ja
am 21.06.2010 - 09:16 Uhr
Oha, das entwickelt sich ja hier zum Expertentreff! Vielen Dank für all die Hilfe!
Sag mir mal eins, wie hast Du denn bitte das CSS "ergänzt" ohne Zugang auf die Seite? Hast Du das irgendwie in deinem Browser mit Firebug gemacht?
Diese Geschichten mit dem float stammen von CCK, ich habe nur die Abstände etc. ergänzt. So wie es im letzten Bild ist, hätte ich erwartet, dass es sich verhält.
Ich werd mal mit dem overflow testen. 100% verstehen tue ich es allerdings noch nicht. Was hat Overflow mit dem Float zu tun?
Wie hätte es denn eigentlich mit dem clear gehen müssen?
EDIT: Ach ich seh grad da war ein Link zum CLEAR. Werd ich mir erstmal ansehen, das beantwortet das wohl dann schon.
Ah ok! Nun verstehe ich was
am 21.06.2010 - 09:27 Uhr
Ah ok! Nun verstehe ich was Sache ist.
Vielen Dank für eure Mühe und den Link, hat mich echt mal wieder ein ganzes Stück weiter gebracht, die Zusammenhänge kannte ich noch nicht!
Da laut dem Link die Variante mit Overflow bei manchen Browsern Konfigurationen vielleicht später nicht astrein läuft, denke ich ich werde es für die fertige Seite einfach so lassen wie es nun ist, aber zumindest bin ich dem Mysterium auf die Spur gekommen und das war ja die Hauptsache!
Vielen Dank nochmal, Ihr seid echt klasse!
Das geht mit FF & FireBug
am 21.06.2010 - 10:49 Uhr
Sag mir mal eins, wie hast Du denn bitte das CSS "ergänzt" ohne Zugang auf die Seite? Hast Du das irgendwie in deinem Browser mit Firebug gemacht?
Genau so ist das, im FireBug kannst Sozusagen On-The-Fly den CSS-Code verändern. Die Veränderungen siehst Du dann gleich Online. Keine Angst, das sind jeweils nur temporäre (sozusagen lokale Browsereinstellungen) Änderungen, aber FireBug zeigt dir sogar an, in welchem File Du die Änderungen vornehmen musst.
Ich dachte eigentlich mit Dragonfly geht das auch, aber ich habe Opera trotz seines unhemlichen Tempos noch nicht so ausgiebig getestet.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Ja geht auch hab ich grad
am 21.06.2010 - 10:56 Uhr
Ja geht auch hab ich grad gesehen, wusste ich nicht, ich benutze es ja erst seit kurzem. Hätte ich das vorher gewusst, hätte ich mir Stunden an Editieren, hochladen, Seite refreshen gespart.... Mist ;=)
Naja nun weiss ich es....
Uff...
am 21.06.2010 - 10:59 Uhr
Da binn ich aber froh, dass ich dir damals mit Dragonfly, nicht einen schlechten Rat verpasst habe.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Ja, super, das ist echt ne
am 21.06.2010 - 13:28 Uhr
Ja, super, das ist echt ne Funktion, welche man mit Nachgucken im Quelltext wohl eher nicht ersetzen kann ;=)
Firefox-Add-on "Stylish"
am 21.06.2010 - 14:18 Uhr
Als Mittelding zwischen dem flüchtigen Firebug - wo die Änderungen verloren gehen, wenn du die Seite wechselst - und einer permanenten Änderung deiner CSS-Dateien bietet sich Stylish an. Damit kannst du allen Webseiten dein eigenes CSS aufdrücken!
Und dann gibt's da noch FireFile
FireFile ist eine Firebug- Erweiterung, die es ermöglicht, mit Firebug bearbeitete CSS- Dateien live am server zu speichern. So wird Firebug zum ultimativen CSS- Editor mit Live- Preview.
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Naja nur leider nicht für
am 23.06.2010 - 10:47 Uhr
Naja nur leider nicht für mich als alten Opera-Fan :D
Aber auch so ist es ja schon ne super erleichterung mit Dragonfly.
Der Trend geht zum Zweitbrowser ;-)
am 23.06.2010 - 11:04 Uhr
kost ja auch nix
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
;=)
am 25.06.2010 - 09:05 Uhr
;=)