-webkit-margin fügt unerwünschten Rand für Texte hinzu

72

Das hatte mich bis jetzt nicht getroffen (und das nicht nur in Webkit-Browsern). Auf allen Texten wie pTags, h1Tags usw. befindet sich über und unter dem Text ein zusätzlicher Platz.

In Chrom habe ich folgendes gefunden:

Stylesheet für Benutzeragenten

-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;

Dies macht die Ausrichtung an einigen Stellen falsch. Und ja, ich verwende ein Reset-Stylesheet und es werden keine Auffüllungen oder Ränder hinzugefügt. So ziemlich eine Grundeinstellung. Warum ist das so und wie löse ich es?

tbleckert
quelle
1
Können Sie eine Beispielseite anzeigen, auf der -webkit-margin-after(oder eine der anderen von Ihnen aufgelisteten Eigenschaften) einen Unterschied macht?
dreißig Punkte

Antworten:

47

Sie können diese Attribute auch direkt wie folgt ändern:

-webkit-margin-before:0em;
-webkit-margin-after:0em;

Funktioniert für mich in Chrome / Safari. Hoffentlich hilft das!

JacobEvelyn
quelle
2
Warum die Abstimmungen? Die ursprüngliche Frage implizierte (teilweise), dass die Standardeinstellungen für diese Felder Probleme verursachten, die durch meine Lösung behoben wurden (dies hat ähnliche Probleme für mich in der Vergangenheit gelöst).
JacobEvelyn
Einverstanden. Seltsam, dass dies abgelehnt wird, da es die einzige Antwort ist, die richtig zu sein scheint.
Dan Loewenherz
5
@ JacobEvelyn downvoted, weil das Ändern marginin allen Browsern funktioniert, während das Ändern -webkit-...nur im Webkit funktioniert (ich habe es nicht downvotiert, aber das denke ich)
stenci
3
@JacobEvelyn: Gibt es einen Grund, warum der Wert von beiden "0em" und nicht nur "0" ist?
Phil
1
@Phil Nicht, dass ich mich erinnern könnte. 0sollte gut funktionieren!
JacobEvelyn
41

Diese -webkit-marginwerden von überschrieben margin: 0; padding: 0;. Mach dir keine Sorgen um sie.

Zusätzlicher Platz? Vielleicht hast du gesetzt line-height:?

atlavis
quelle
3
Die Zeilenhöhe ist die Standardeinstellung und der Rand und das Auffüllen sind 0. Wie gesagt, mit einem Reset-Stylesheet. Immer noch die gleichen.
Tbleckert
haben Sie eine zwischen <p>, <h1>usw.?
Atlavis
Nein, nichts. Ich sollte hinzufügen, dass die Polsterung überall ist, nicht nur auf meiner Seite. Und ich bin mir dessen bewusst und ich weiß, dass es sich so verhält. Ich möchte nur wissen, ob es möglich ist, es loszuwerden :)
Tbleckert
7
@bharal es funktioniert für mich - das Hinzufügen p { margin:0; padding:0; }überschreibt die -webkit-marginWerte. Sie sind weiterhin in der Javascript-Konsole von Chrome sichtbar, jedoch als überschriebene Werte.
Ericsoco
6
Keine wirklich gute Antwort, nicht null Rand / Polsterung lässt das - webkit-marginintakt, was in vielen Fällen nicht erwünscht ist
Forbesmyester
8

Ich hatte das gleiche Problem. In Firefox korrekt angezeigt, jedoch nicht in Chrome.

Ich habe mir http://meyerweb.com/eric/tools/css/reset/ genauer angesehen und festgestellt, dass ich in meinem Stylesheet keine allgemeine Zeilenhöhe für das Body-Tag angegeben habe. Setzen Sie es auf 1.2 und das hat das richtige Layout in beiden Browsern wiederhergestellt.

Edwin - EEDSGN
quelle
5

Entfernen Sie einfach das Leerzeichen zwischen den Tags, z

<p id="one"></p>
<p id="two"></p>

wird:

<p id="one"></p><p id="two"></p>
Craig
quelle
2
Ich persönlich würde das nicht tun. Einige Entwickler verwenden in Zukunft möglicherweise ein HTML-Verschönerungs- / Formatierungswerkzeug und fügen das Leerzeichen erneut hinzu oder führen es manuell aus. Das Prinzip ist dasselbe, warum ": leer" problematisch ist.
Phil
5

Ich hatte das gleiche Problem. Zusätzlicher Platz zwischen den Menüverknüpfungen. Keine der oben genannten Lösungen hat funktioniert. Was für mich funktioniert hat, war eine negative Marge. Mach einfach so etwas:

margin: 0 -2px;

NEUE BEARBEITUNG:

Dies hat nichts mit -webkit-Rändern zu tun. Höchstwahrscheinlich tritt Ihr Problem bei Inline-Elementen auf. Dies liegt daran, dass zwischen Ihren Inline-Elementen Leerzeichen oder Zeilenumbrüche stehen. Um dies zu beheben, haben Sie viele Möglichkeiten:

  • Entfernen Sie alle Leerzeichen und Zeilenumbrüche zwischen Inline-Elementen
  • Element zum Schließen des Elements überspringen - zum Beispiel </li>(HTML5 ist das egal)
  • negative Marge (wie oben angegeben - Probleme mit IE6 / 7 - wen interessiert das, Upgrade;)
  • set font-size: 0;zu problematischen Inline - Elemente Behältern (hat Probleme mit Android und wenn font-Sizing mit EMS)
  • Inline aufgeben und float verwenden (auf diese Weise verlieren Sie die Textausrichtung: Mitte)

Genauer erklärt und Beispiele von CHRIS COYIER

ruuter
quelle
Ich hatte das gleiche Problem "Alle Leerzeichen und Zeilenumbrüche zwischen Inline-Elementen entfernen" für mich! Vielen Dank!
Cyrill
1

Ich hatte das gleiche Problem mit meinem <h3>Tag. Ich habe versucht einzustellen margin:0;, aber es hat nicht funktioniert.

Ich stellte fest, dass ich gewöhnlich Zeilen in meinem CSS mit auskommentierte //. Ich habe es nie bemerkt, weil es vorher keine Probleme verursacht hatte. Aber als ich //in der Zeile vor der Deklaration verwendet habe <h3>, hat es den Browser veranlasst, die Deklaration vollständig zu überspringen. Als ich gehandelt out //für /**/Ich konnte den Rand anzupassen.

Moral dieser Geschichte: Verwenden Sie immer die richtige Kommentarsyntax!

Geschichte
quelle
1

Für mich war das Bild:

* {margin:0;padding:0;}

Firefox (FF) und Google Chrome setzen beide unabhängig voneinander einen Rand von 0,67 em. FF zeigte seine Standardmarge, wurde jedoch durchgestrichen, aber trotzdem angewendet. GC zeigte seine Standardmarge (-webkit-margin-before ...) ungekreuzt.

Ich bewarb mich

* {margin:0;padding:0; -webkit-margin-before: 0; -webkit-margin-after: 0;}

aber ohne Erfolg, obwohl GC nun zeigte, dass seine Standardmarge überschritten wurde.

Ich habe herausgefunden, dass ich mich auch bewerben kann

line-height: 0;

oder

font-size: 0;

um den gewünschten Effekt zu erzielen. Dies ist sinnvoll, wenn man davon ausgeht, dass der Rand vom Typ .67em ist. Wenn jemand eine Erklärung geben könnte, warum Browser unser Leben durch Anwenden eines von der Zeilenhöhe abhängigen, nicht entfernbaren Randes unglücklich machen, wäre ich wirklich dankbar.

d_le_nen
quelle
0

Für mich in Chrome waren es etwa 40 Pixel padding-start, die dies verursachten. Ich habe Folgendes getan, das funktioniert hat:

ul {
    -webkit-padding-start: 0em;
}
Gaui
quelle
0
    -webkit-margin-before: 0em;
    -webkit-padding-start: 0;
    -webkit-margin-after: 0em;

Dies löste es für mich, als ich genau dieses Problem hatte.

andromedainiative
quelle
Zu -webkit-margin-before: 0;
Ihrer Information
0

Fügen Sie in Ihrer CSS-Datei Folgendes hinzu.

* {
  -webkit-margin-before: 0em !important;
  -webkit-margin-after: 0em !important;
}

'*' wählt alle CSS-Elemente aus und überschreibt den Webkit-Rand.

Peter
quelle
-1

Ich hatte das gleiche Problem. Plötzlich wurde eine meiner drei Tabellenzellen mit Daten, deren Kopfzeile etwas nach unten verschoben wurde. Mein Problem wurde einfach gelöst, indem ich Folgendes hinzufügte:

table td
{
    vertical-align: top;
}

Es scheint, als hätte ein anderes Element in einem "höheren" Stylesheet meine Daten angewiesen, sich in der Zelle zu zentrieren, anstatt nur oben zu bleiben.

Ich denke, es ist einfach nur dumm und war nicht wirklich ein Problem ... aber die nächste Person, die dieses Thema liest, hat möglicherweise den gleichen dummen Fehler wie ich :)

Pass auf!

Wer weiß
quelle
-1

Wenn dies user agent stylesheeteintritt, liegt dies daran, dass die Tag-Eigenschaft in Ihrem CSS-Stylesheet nicht richtig definiert wurde.

Es besteht die Möglichkeit, dass ein Tippfehler, eine vergessene Klammer oder ein Semikolon Ihr Stylesheet auflöst, bevor Sie die Einstellungen für die Tag-Eigenschaften erreichen, auf die Ihre Seite später verweist oder die Sie "benötigen".

Führen Sie Ihr CSS durch eine Fehlerprüfung wie CSS LINT aus und beheben Sie die eventuell erkannten Fehler.

Tony Gil
quelle