CSS-Frage: * margin: 0px macht oft Probleme

am 01.03.2010 - 21:22 Uhr in
In vielen Themes und auch in thickbox.css befindet sich folgende CSS-Anweisung:
* {
margin:0;
padding:0;
}
Leider führt das dazu, dass Tabellenzellen auch Null Abstand haben und cellspacing und cellpadding in Tabellen (mit Richtexteditor wird das oft benötigt) ignoriert wird.
Wie kann man also erreichen, dass obige CSS-Anweisung zwar grundsätzlich gilt aber nicht für Tabellen gilt und bei Tabellen cellspacing und cellpadding ganz normal funktioniert, sprich bei Tabellen margin:0 und padding:0 nicht angewendet wird.
Vielen Dank.
- Anmelden oder Registrieren um Kommentare zu schreiben
Dann lege doch eine eigene
am 01.03.2010 - 22:03 Uhr
Dann lege doch eine eigene CSS-Definition für table an, in der Du die Werte setzt. Später liegende CSS Anweisungen überschreiben frühere. Genauere überschreiben allgemeinere. Im Zweifel für eine bestimmte Tabelle darauf zugeschnittene CSS-Anweisungen schreiben, die die allgemeinen übersteuern.
Es heißt also sich in CSS einarbeiten. Das ist eh für die Webseitenerstellung eine notwendige Grundlage.
Beste Grüße
Werner
Bitte genau überlegen!
am 01.03.2010 - 23:09 Uhr
Tja, Du hast wohl was übersehen. In diesem Fall geht das nicht. Späterliegende CSS-Anweisungen überschreiben natürlich dieses * margin:0.
Aber hier geht es um etwas anderes:
* margin:0 löscht anscheinend cellpadding und cellspacing in der Form, dass wenn table border=0 cellspacing=4 cellpadding=2 verwendet wird, cellspacing und cellpaddiing aufgrund von * margin:0 ignoriert wird. Probier das mal mit Firebug aus, dann siehst Du es.
Nun sag mir jene CSS-Anweisung, die ich nach nachfolgend setzen könnte, um cellpadding und cellspacnig wieder zum Leben zu erwecken?
Sprich ich will keine fixe Anweisung table td {padding:2px; ...} sondern ich will, dass jedesmal wenn eine Tabelle erstellt wird mittels Richttexteditor das cellspacing und cellpadding beliebig genutzt werden kann, was aber wegen * margin:0 nicht möglich ist.
Wie ist das lösbar?
Auf * margin verzichten. Ich
am 01.03.2010 - 23:20 Uhr
Auf * margin verzichten.
Ich sehe keinen Grund das so einzusetzen und halte es für sinnvoller auf konkrete Elemente zu gehen wie z.B.
li
{
margin: 0;
padding: 0;
}
Ist sehr oft drin
am 01.03.2010 - 23:55 Uhr
Aber wie gesagt ist das auch in thickbox.css drin, man müsste Thickbox hacken und man müsste viele Themes umschreiben, die das alle enthalten!!!
OK das ist natürlich ein use
am 02.03.2010 - 13:20 Uhr
OK das ist natürlich ein use case der nicht ganz einfach ist. In themes wird das denke ich eher etwas selten eingesetzt. In jedem Fall würde ich im Zweifelsfall her gehen und die css Datei im Webseiten theme (was ja immer ein subtheme des orginalen themes sein sollte) reinkopieren und den betreffenden Eintrag ersetzen. Das geht auch für thickbox.css.
Deine überarbeitete css ergibt einen Patch für das orginale Projekt. Bei Updates des Moduls wird deine Änderung nicht überschrieben und mit per diff bzw per winmerge o.ä. kannst du schnell sehen ob sich etwas in dem Punkt geändert hat.
Damit jeder das Probem nachvollziehen kann hier ein bisschen Beispielcode:
<html>
<style type="text/css">
* {
margin:0;
padding:0;
}
</style>
<body>
<h4>Without cellspacing:</h4>
<table border="1">
<tr>
<td>First</td>
<td>Row</td>
</tr>
<tr>
<td>Second</td>
<td>Row</td>
</tr>
</table>
<h4>With cellspacing:</h4>
<table border="1"
cellspacing="10">
<tr>
<td >First</td>
<td>Row</td>
</tr>
<tr>
<td>Second</td>
<td>Row</td>
</tr>
</table>
<h4>With cellpadding:</h4>
<table border="1"
cellpadding="10">
<tr>
<td>First</td>
<td>Row</td>
</tr>
<tr>
<td>Second</td>
<td>Row</td>
</tr>
</table>
</body>
</html>
DrupalFan schrieb Aber hier
am 02.03.2010 - 15:47 Uhr
Aber hier geht es um etwas anderes:
* margin:0 löscht anscheinend cellpadding und cellspacing in der Form, dass wenn table border=0 cellspacing=4 cellpadding=2 verwendet wird, cellspacing und cellpaddiing aufgrund von * margin:0 ignoriert wird. Probier das mal mit Firebug aus, dann siehst Du es.
Finger weg von diesen alten HTML-Attributen.
Gestaltung ist Sache von CSS ohne Ausnahme. Das hat im Markup nichts verloren. ;)
* spricht nunmal alle Elemente an und stellt diese alle auf "0". Das ist nicht immer von Vorteil, dass wegen nutzen immer mehr Leute auch nicht mehr *, sondern schreiben
p, a, li, ul, ol .... { margin: 0; padding: 0 ; }
und lassen Elemente wie "input" usw. weg.Mehr dazu: http://xhtmlforum.de/34295-css-prolog-sinnvoll.html
CSS-Grundlagen: The Styleworks.de - CSS Grundlagen
Tabellendesign mit CSS: Reine Auslegungssache — Tabellen-Layouts mit CSS
Viel Spaß. :)
Crizzo, Du hast schon recht
am 02.03.2010 - 16:15 Uhr
Crizzo, Du hast schon recht dass cellpadding und spacing nicht schön sind, aber die Gestaltung von Tabellen per wysiwyg Editor kann kaum anders funktionieren (ausser wenn man z.B. an jedes td inline styles dran hängt und das wollen wir ja auch nicht wirklich).
Unterschiedliche Tabellen
am 02.03.2010 - 16:27 Uhr
Ich verwende das ganz aktuelle Modul WYSIWYG und einen Richtexteditor (TinyMCE oder FCKEditor) und das weil der Kunde es so haben will!
Und jetzt kann man damit Tabellen erstellen. Und jede Tabelle kann doch grundsätzlich mal anders aussehen müssen. Sprich die Möglichkeit, cellspacing und cellpadding usw. einsetzen zu können, sollte erhalten bleiben. Trotzdem möchte ich * margin:0 nicht unbedingt entfernen, weil das schon fix im Theme drin ist und dann viele Dinge wohl angepasst werden müssten.