2010-08-20 19 views
18

Ich bin auf verschiedene Beiträge gestoßen, wo Leute behaupten, dass negative Margen Hacks sind. Ich habe mich also davon entfernt, sie zu verwenden, mit Ausnahme bestimmter Fälle, in denen ich sie berechtigterweise verwenden kann, z. B. das Werfen von Text vom Bildschirm. Frage, sind negative Ränder ein Hack und wann ist es richtig negative Ränder zu verwenden? Ich habe gesehen, dass sie im 960 Grid System mit, .push und .pull, in allen anderen Fällen, in denen sie zu Recht verwendbar sind?!?!Negative Margen, Hack oder nicht?

Antwort

32

Negative Ränder sind basierend auf W3C specifications zulässig. Ich habe sie benutzt, um Dinge über ihren Container hängen zu lassen.

+9

Ich bin aus Stimmen, aber die Einhaltung der W3C-Spezifikationen ist eines der wichtigsten Argumente ... –

+2

Unterstrichen durch den Vergleich der Spezifikationen der Ränder und Grenzen (die nicht negativ sein kann) – Quentin

12

Ich würde behaupten, es ist kein Hack: Es ist definiert, logisches Verhalten; Es wird in allen Browsern unterstützt. es kann erwartet werden, dass es in zukünftigen Versionen von Browsern unterstützt wird (das Fehlen zukünftiger Unterstützung ist das wichtigste Argument gegen Hacks).

Auch, wie @durilai darauf hinweist, sind sie vom W3C offiziell sanktioniert (wenn auch mit Einschränkungen).

Diese Smashing Magazine article unterstützt den Fall.

2

Ich vermute, dass sie wegen inkonsistenten Browserverhalten als Hack markiert wurden.

Wenn möglich, verwende ich position: relative und negative obere und linke Werte, um Elemente an neue Stellen zu ziehen. Dies ist nicht in jedem Fall möglich, aber ich finde, dass es sich in allen Internet Explorer-Varianten konsistenter verhält.

+2

-1 Was inkonsistentes Verhalten des Browsers Beziehen Sie sich darauf? – Tomas

+0

@Tomas dieser springt: http://haslayout.net/css/Negative-Margin-Bug. Hauptsächlich bin ich damit beschäftigt, dass Sie einen anderen Hack anwenden müssen, um konsistente Anzeige in IE6/7 zu erhalten. Dies markiert nicht unbedingt die negative Marge als Hack, aber hat mir genug Grund gegeben, sie zu vermeiden, wann immer es möglich ist. Ich habe den einfachsten Weg gefunden, um x-Browser-Anzeige zu erhalten, ist auf grundsolide, einfache CSS (Position und Floats mit der Breite definiert) zu verlassen. – Pat

+0

+1 für die relative Positionierung. Einstellposition: relativ; kann auch andere Fehler magisch beheben. –