-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?


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!


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:?


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.


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>

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


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!


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.


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;
}

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.


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.


-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!


-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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.